{"version":3,"sources":["webpack:///./src/models/notification-message-type.ts?e64a","webpack:///./src/modules/citta-create-gift-card/citta-create-gift-card.view.tsx?0d2a","webpack:///./src/data-actions/product-info/get-notification-message.ts?7ff0","webpack:///./src/modules/citta-create-gift-card/citta-create-gift-card.tsx?45a8"],"names":["NotificationType","props","GiftCardCreationModuleProps","GiftCardWrapNodeProps","GiftCardErrorNodeProps","GiftCardRight","GiftCardErrors","GiftCardAddToCartErrorsNodeProps","GiftCardAddToCartErrors","React","Module","Object","assign","Node","createNotificationMessage","result","GenericInput","createObservableDataAction","action","getGenericAction","input","inputData","Market","CittaGiftCardCreation","constructor","super","product","userChoice","hasGiftCardLineItem","_renderGiftCardRight","resources","this","className","state","inputLabelClasses","toString","ref","amountRef","type","onChange","_onOptsChangeEvent","opt4Placeholder","placeholder","isSendDateChangedClass","defaultDate","sendDateRef","min","_getMinDate","role","datePlaceholder","value","_capture","locationCorrectText","_getCurrentLocationName","onClick","_changeLocation","locationChangeText","recipientEmailRef","recipientEmailPlaceholder","recipientNameRef","recipientPlaceholder","maxLength","fromNameRef","senderPlaceholder","messageRef","messagePlaceholder","onKeyUp","_onEditMessage","charactersLeft","messageCharactersLimitLeftText","title","createButtonText","_onClickCreateCard","getMarket","url","arguments","length","undefined","indexOfCountry","indexOf","market","split","NZ","toUpperCase","AU","MsDyn365","isBrowser","context","request","requestUrl","href","requestedMarket","baseUrl","window","location","origin","_renderErrors","recipientEmailErrorClass","recipientEmailError","sendDateErrorClass","sendDateError","amountErrorClass","amountError","recipientNameErrorClass","recipientNameError","fromNameErrorClass","fromNameError","messageErrorClass","messageError","apiErrorClass","apiError","_getProduct","async","getByIdAsync","callerContext","actionContext","parseInt","config","productID","apiSettings","channelId","catch","error","_loadData","data","cartLines","cart","CartLines","giftCartLine","filter","cartline","IsGiftCardLine","giftCardOpts","ExtensionProperties","userInput","hasRecipientEmail","recipientName","fromName","forEach","opt","key","Key","Value","StringValue","amount","DecimalValue","_onTypeChange","current","date","_getDate","setState","sendDate","opt1","_onOptsChange","opt2","opt3","replace","thumb1Color","_onThumbsChange","thumb2Color","thumb3Color","thumb4Color","thumb1Palette1Color","thumb2Palette1Color","thumb3Palette1Color","_onColorChange","thumb1Palette2Color","thumb2Palette2Color","thumb3Palette2Color","thumb1Palette3Color","thumb2Palette3Color","thumb3Palette3Color","_objectSpread","message","toLocaleLowerCase","isEmailOptSelectedClass","isPrintOptSelectedClass","isEmail","_updateUserInput","monthName","dateSplit","twoDigitDay","month","twoDigitMonth","option","event","isAmount1SelectedClass","isAmount2SelectedClass","isAmount3SelectedClass","cardAmount","thumb","isThumb1SelectedClass","isThumb2SelectedClass","isThumb3SelectedClass","isThumb4SelectedClass","selectedThumb","thumbColor","selectedThumbId","color","isPaletteColor1SelectedClass","isPaletteColor2SelectedClass","isPaletteColor3SelectedClass","selectedPalette","selectedPaletteId","_getThumbPaletteColor","palette","thumb4Palette1Color","thumb4Palette2Color","thumb4Palette3Color","isNotEmpty","formattedDate","_changeDateFormat","today","Date","dd","String","getDate","padStart","mm","getMonth","getFullYear","textArea","messageEnterd","charactersLimit","messageCharactersLimit","which","preventDefault","substring","_showErrors","cardtype","recipientemail","senddate","cardcolour","colourpalette","recipientname","fromname","hasErrors","_hasErrors","_addProductToCart","_checkEmailError","_checkAmountError","RecordId","sendDateValue","recipientEmailValue","recipientNameValue","fromNameValue","messageValue","email","test","isValid","isAboveOrEqualToTen","parseFloat","_renderAddToCartErrorBlock","errorMessages","configErrorState","errorHost","typeName","values","configureErrors","addToCartFailed","push","addToCartErrorMessage","buyboxErrorMessageHeader","maxGiftCardLimitMessage","_canAddToCart","keyedInPriceError","keys","channelConfiguration","cartResult","channelGiftCardItemId","GiftCardItemId","i","ItemId","ProductTypeValue","BasePrice","Price","AdjustedPrice","disabledOverride","getNotificationMessage","messagetype","cartState","getCartState","productItemId","emailDeliveryModeCode","EmailDeliveryModeCode","Number","IsGiftCard","addProductsToCartInput","count","availableQuantity","quantity","enableStockCheck","app","isAddEmailDeliveryItemToCart","customPrice","deliveryMode","isAddedToCart","addProductToCart","then","status","success","_getAddToCartErrorMessage","telemetry","cartLineItem","updatedCart","isCartLineUpdated","map","_cLine$ExtensionPrope","entries","_ref","addCartlineExtension","cLine","ElectronicDeliveryEmail","item","updateCartLinesAsync","Id","latestCart","_updatedCart$CartLine","updateCart","newCartObject","warning","debug","shouldNavigateToCart","getUrlSync","reason","e","console","log","addedToCartFailureMessage","cartLine","extensionPropertyKey","extensionPropertyValue","property","find","extension","recipientLabel","showWishlistText","showRemoveFromWishlistButton","disableWishlistButton","user","isAuthenticated","showAlert","wishlistMessage","addToWishlistMessage","isWishlistWaiting","reaction","render","CittaGiftCardBalanceCreationViewProps","moduleProps","renderView"],"mappings":"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","file":"static/js/61.c195631722ef3f11c1e9.chunk.js","sourcesContent":["/**\r\n * enum to define all message types used in INotificationMessage\r\n */\r\nexport const enum NotificationType {\r\n info = 'info',\r\n success = 'success',\r\n warning = 'warning',\r\n error = 'error',\r\n validation = 'validation',\r\n none = 'none'\r\n}","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICittaCreateGiftCardViewProps } from './citta-create-gift-card';\r\n\r\nexport default (props: ICittaCreateGiftCardViewProps) => {\r\n const { GiftCardCreationModuleProps, GiftCardWrapNodeProps, GiftCardErrorNodeProps, GiftCardRight, GiftCardErrors, GiftCardAddToCartErrorsNodeProps, GiftCardAddToCartErrors } = props;\r\n // const { resources } = props;\r\n return (\r\n \r\n \r\n { GiftCardRight }\r\n \r\n \r\n { GiftCardErrors }\r\n \r\n \r\n { GiftCardAddToCartErrors }\r\n \r\n \r\n );\r\n};\r\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { INotificationMessage } from '../../models/notification-message';\r\n\r\nexport function createNotificationMessage(result: INotificationMessage): GenericInput {\r\n return new GenericInput('notificationMessage', result, 'INotificationMessage');\r\n}\r\n\r\nconst createNotificationMessageInternal = (inputData: ICreateActionContext>): IActionInput => {\r\n return createNotificationMessage({});\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createNotificationMessageInternal\r\n});","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// tslint:disable:no-any no-string-literal max-func-body-length cyclomatic-complexity max-line-length no-floating-promises no-return-await\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IDictionary } from '@msdyn365-commerce/core';\r\nimport { getCartState, ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport { Cart, CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { updateCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getByIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { reaction } from 'mobx';\r\nimport * as React from 'react';\r\nimport getNotificationMessage, { createNotificationMessage } from '../../data-actions/product-info/get-notification-message';\r\nimport { NotificationType } from '../../models/notification-message-type';\r\nimport { ICittaCreateGiftCardData } from './citta-create-gift-card.data';\r\nimport { ICittaCreateGiftCardProps } from './citta-create-gift-card.props.autogenerated';\r\n\r\nexport interface ICittaCreateGiftCardViewProps extends ICittaCreateGiftCardProps {\r\n GiftCardCreationModuleProps: IModuleProps;\r\n GiftCardWrapNodeProps: INodeProps;\r\n GiftCardRight: React.ReactNode;\r\n GiftCardErrorNodeProps: INodeProps;\r\n GiftCardErrors: React.ReactNode;\r\n GiftCardAddToCartErrorsNodeProps: INodeProps;\r\n GiftCardAddToCartErrors: React.ReactNode;\r\n}\r\n\r\ninterface ICittaCreateGiftCardState {\r\n isEmail: boolean;\r\n isEmailOptSelectedClass: string;\r\n isPrintOptSelectedClass: string;\r\n cardAmount?: string;\r\n isAmount1SelectedClass?: string;\r\n isAmount2SelectedClass?: string;\r\n isAmount3SelectedClass?: string;\r\n isThumb1SelectedClass?: string;\r\n isThumb2SelectedClass?: string;\r\n isThumb3SelectedClass?: string;\r\n isThumb4SelectedClass?: string;\r\n selectedThumb?: string;\r\n selectedThumbId?: number;\r\n thumbColor?: string;\r\n isPaletteColor1SelectedClass?: string;\r\n isPaletteColor2SelectedClass?: string;\r\n isPaletteColor3SelectedClass?: string;\r\n selectedPalette?: string;\r\n selectedPaletteId?: number;\r\n message?: string;\r\n charactersLeft?: number;\r\n sendDate?: string;\r\n defaultDate?: string;\r\n isSendDateChangedClass?: string;\r\n sendDateErrorClass: string;\r\n amountErrorClass: string;\r\n recipientEmailErrorClass: string;\r\n recipientNameErrorClass: string;\r\n fromNameErrorClass: string;\r\n messageErrorClass: string;\r\n apiErrorClass: string;\r\n userInput: IDictionary;\r\n inputLabelClasses: IDictionary;\r\n disabledOverride: boolean;\r\n showWishlistText: boolean;\r\n showRemoveFromWishlistButton: boolean;\r\n showAlert: boolean;\r\n wishlistMessage: string;\r\n disableWishlistButton: boolean;\r\n addToCartFailed: boolean;\r\n addToCartErrorMessage: string;\r\n isWishlistWaiting: boolean;\r\n}\r\n\r\nenum Market {\r\n NZ = 'NZL',\r\n AU = 'AUS',\r\n}\r\n\r\n/**\r\n *\r\n * CittaGiftCardCreation component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaGiftCardCreation extends React.PureComponent, ICittaCreateGiftCardState> {\r\n private recipientEmailRef: React.RefObject;\r\n private sendDateRef: React.RefObject;\r\n private amountRef: React.RefObject;\r\n private recipientNameRef: React.RefObject;\r\n private fromNameRef: React.RefObject;\r\n private messageRef: React.RefObject;\r\n private product: SimpleProduct | null = null;\r\n private userChoice: IDictionary = {};\r\n\r\n private hasGiftCardLineItem: number = 0;\r\n\r\n constructor(props: ICittaCreateGiftCardProps) {\r\n super(props);\r\n const { config, resources } = this.props;\r\n\r\n this.state = {\r\n isEmail: true,\r\n isEmailOptSelectedClass: 'selected',\r\n isPrintOptSelectedClass: '',\r\n isThumb1SelectedClass: 'selected',\r\n isThumb2SelectedClass: '',\r\n isThumb3SelectedClass: '',\r\n isThumb4SelectedClass: '',\r\n selectedThumb: 'thumb1',\r\n selectedThumbId: 0,\r\n thumbColor: config.thumb1Color,\r\n cardAmount: config.opt1,\r\n isPaletteColor1SelectedClass: 'selected',\r\n isPaletteColor2SelectedClass: '',\r\n isPaletteColor3SelectedClass: '',\r\n selectedPalette: 'palette1',\r\n selectedPaletteId: 0,\r\n message: '',\r\n charactersLeft: config.messageCharactersLimit,\r\n sendDate: '',\r\n defaultDate: '',\r\n isSendDateChangedClass: '',\r\n sendDateErrorClass: 'hide',\r\n amountErrorClass: 'hide',\r\n recipientEmailErrorClass: 'hide',\r\n recipientNameErrorClass: 'hide',\r\n fromNameErrorClass: 'hide',\r\n messageErrorClass: 'hide',\r\n apiErrorClass: 'hide',\r\n userInput: {\r\n cardtype: 'email',\r\n recipientemail: '',\r\n senddate: '',\r\n amount: config.opt1 || '',\r\n cardcolour: config.thumb1Color || '',\r\n colourpalette: config.thumb1Palette1Color || '',\r\n recipientname: resources.recipientLabel,\r\n fromname: '',\r\n message: ''\r\n },\r\n inputLabelClasses: {\r\n recipientemail: '',\r\n amount: '',\r\n recipientname: '',\r\n fromname: '',\r\n message: ''\r\n },\r\n disabledOverride: false,\r\n showWishlistText: false,\r\n showRemoveFromWishlistButton: false,\r\n disableWishlistButton: this.props.context.request.user.isAuthenticated, // If user is authenticated, disable button until we know item status\r\n showAlert: true,\r\n wishlistMessage: this.props.resources.addToWishlistMessage || 'Added to your wishlist',\r\n addToCartFailed: false,\r\n addToCartErrorMessage: '',\r\n isWishlistWaiting: false\r\n };\r\n\r\n this.recipientEmailRef = React.createRef();\r\n this.amountRef = React.createRef();\r\n this.recipientNameRef = React.createRef();\r\n this.fromNameRef = React.createRef();\r\n this.messageRef = React.createRef();\r\n this.sendDateRef = React.createRef();\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n this._getProduct().then(result => { this.product = result; });\r\n // @ts-ignore: Compiler not reconizing condition check for function params\r\n reaction(\r\n () => this.props.data.cart && this.props.data.cart.result,\r\n () => {\r\n this._loadData();\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n\r\n const CittaGiftCardBalanceCreationViewProps = {\r\n ...this.props,\r\n GiftCardCreationModuleProps: {\r\n moduleProps: this.props,\r\n className: 'citta-create-gift-card'\r\n },\r\n GiftCardWrapNodeProps: {\r\n className: 'giftCardWrap'\r\n },\r\n GiftCardErrorNodeProps: {\r\n className: 'errors'\r\n },\r\n GiftCardRight: this._renderGiftCardRight(),\r\n GiftCardErrors: this._renderErrors(),\r\n GiftCardAddToCartErrorsNodeProps: {\r\n className: 'product-add-to-cart'\r\n },\r\n GiftCardAddToCartErrors: this._renderAddToCartErrorBlock()\r\n };\r\n\r\n return this.props.renderView(CittaGiftCardBalanceCreationViewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderGiftCardRight = (): JSX.Element => {\r\n const { resources } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {/* {opt4Label} */}\r\n \r\n \r\n \r\n {this.state.defaultDate &&\r\n \r\n }\r\n {!this.state.defaultDate &&\r\n \r\n }\r\n \r\n \r\n \r\n {resources.locationCorrectText}{this._getCurrentLocationName()}, \r\n {resources.locationChangeText}\r\n \r\n \r\n {/* {resources.recipientEmailPlaceholder} */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {`${this.state.charactersLeft} ${resources.messageCharactersLimitLeftText}`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {resources.createButtonText}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private getMarket = (url: string = ''): string => {\r\n let indexOfCountry = 3;\r\n if (url.indexOf('test.') > 0 || url.indexOf('cittab.') > 0) {\r\n indexOfCountry = 4;\r\n }\r\n let market = (url && url.length > 0) \r\n ? (url.indexOf('//') > -1 \r\n ? ((url.split('/')[indexOfCountry] === undefined || url.split('/')[indexOfCountry].length > 2 || url.split('/')[indexOfCountry] === '') \r\n ? Market.NZ \r\n : url.split('/')[indexOfCountry].toUpperCase()) \r\n : Market.NZ) \r\n : '';\r\n\r\n if (market === 'AU') {\r\n market = Market.AU;\r\n }\r\n return market;\r\n };\r\n\r\n private _getCurrentLocationName = ():string => {\r\n if (MsDyn365.isBrowser) {\r\n const url = this.props.context.request.url && this.props.context.request.url.requestUrl && this.props.context.request.url.requestUrl.href;\r\n const requestedMarket = this.getMarket(url);\r\n if (requestedMarket === 'AUS') {\r\n return 'Australia';\r\n }\r\n }\r\n return 'New Zealand';\r\n }\r\n\r\n private _changeLocation = () => {\r\n if (MsDyn365.isBrowser) {\r\n const url = this.props.context.request.url && this.props.context.request.url.requestUrl && this.props.context.request.url.requestUrl.href;\r\n const requestedMarket = this.getMarket(url);\r\n const baseUrl = window.location.origin;\r\n if (baseUrl.length) {\r\n if (requestedMarket === 'AUS') {\r\n window.location.assign(`${baseUrl}/citta-giftcard`);\r\n } \r\n else {\r\n window.location.assign(`${baseUrl}/au/citta-giftcard`);\r\n } \r\n\r\n\r\n }\r\n }\r\n }\r\n\r\n private _renderErrors = (): JSX.Element => {\r\n const {resources} = this.props;\r\n return (\r\n <>\r\n \r\n {resources.recipientEmailError}\r\n \r\n \r\n {resources.sendDateError}\r\n \r\n \r\n {resources.amountError}\r\n \r\n \r\n {resources.recipientNameError}\r\n \r\n \r\n {resources.fromNameError}\r\n \r\n \r\n {resources.messageError}\r\n \r\n \r\n {resources.apiError}\r\n \r\n >\r\n );\r\n }\r\n\r\n private _getProduct = async (): Promise => {\r\n return await getByIdAsync(\r\n { callerContext: this.props.context.actionContext },\r\n parseInt(this.props.config.productID, 10),\r\n this.props.context.request.apiSettings.channelId).catch(error => {\r\n return null;\r\n });\r\n }\r\n\r\n private _loadData = (): void => {\r\n const { config, data } = this.props;\r\n const cartLines = data.cart && data.cart.result && data.cart.result.cart && data.cart.result.cart.CartLines;\r\n const giftCartLine = cartLines && cartLines.filter(cartline => cartline.IsGiftCardLine === true);\r\n const giftCardOpts = giftCartLine && giftCartLine[0] && giftCartLine[0].ExtensionProperties || [];\r\n const { inputLabelClasses, userInput } = this.state;\r\n let hasRecipientEmail = false;\r\n let recipientName = '';\r\n let fromName = '';\r\n if (giftCardOpts.length) {\r\n giftCardOpts.forEach(opt => {\r\n const key = opt.Key;\r\n const value = opt.Value && opt.Value.StringValue || '';\r\n let amount = opt.Value && opt.Value.DecimalValue && opt.Value.DecimalValue.toString() || '';\r\n switch (key) {\r\n case 'cardtype': {\r\n this._onTypeChange(value);\r\n break;\r\n }\r\n case 'recipientemail': {\r\n this.recipientEmailRef.current!.value = value;\r\n hasRecipientEmail = true;\r\n break;\r\n }\r\n case 'senddate': {\r\n const date = this._getDate(value);\r\n this.sendDateRef.current!.value = date;\r\n this.setState({ defaultDate: date, sendDate: date, isSendDateChangedClass: 'changed' });\r\n break;\r\n }\r\n case 'amount': {\r\n amount = `$${amount}`;\r\n switch (amount) {\r\n case config.opt1: {\r\n this._onOptsChange('opt_1');\r\n break;\r\n }\r\n case config.opt2: {\r\n this._onOptsChange('opt_2');\r\n break;\r\n }\r\n case config.opt3: {\r\n this._onOptsChange('opt_3');\r\n break;\r\n }\r\n default: {\r\n this.amountRef.current!.value = amount.replace('$', '');\r\n this._onOptsChange('opt_4');\r\n }\r\n }\r\n break;\r\n }\r\n case 'cardcolour': {\r\n switch (value) {\r\n case config.thumb1Color: {\r\n this._onThumbsChange('thumb_1');\r\n break;\r\n }\r\n case config.thumb2Color: {\r\n this._onThumbsChange('thumb_2');\r\n break;\r\n }\r\n case config.thumb3Color: {\r\n this._onThumbsChange('thumb_3');\r\n break;\r\n }\r\n case config.thumb4Color: {\r\n this._onThumbsChange('thumb_4');\r\n break;\r\n }\r\n default: {\r\n // Do nothing\r\n }\r\n }\r\n break;\r\n }\r\n case 'colourpalette': {\r\n switch (value) {\r\n case config.thumb1Palette1Color:\r\n case config.thumb2Palette1Color:\r\n case config.thumb3Palette1Color: {\r\n this._onColorChange('color_1');\r\n break;\r\n }\r\n case config.thumb1Palette2Color:\r\n case config.thumb2Palette2Color:\r\n case config.thumb3Palette2Color: {\r\n this._onColorChange('color_2');\r\n break;\r\n }\r\n case config.thumb1Palette3Color:\r\n case config.thumb2Palette3Color:\r\n case config.thumb3Palette3Color: {\r\n this._onColorChange('color_3');\r\n break;\r\n }\r\n default: {\r\n // Do nothing\r\n }\r\n }\r\n break;\r\n }\r\n case 'recipientname': {\r\n this.recipientNameRef.current!.value = value;\r\n recipientName = value;\r\n break;\r\n }\r\n case 'fromname': {\r\n this.fromNameRef.current!.value = value;\r\n fromName = value;\r\n break;\r\n }\r\n case 'message': {\r\n this.messageRef.current!.value = value;\r\n hasRecipientEmail &&\r\n this.setState({ inputLabelClasses: { ...inputLabelClasses, ['recipientemail']: 'hasvalue', ['fromname']: 'hasvalue', ['recipientname']: 'hasvalue', ['message']: 'hasvalue' } });\r\n !hasRecipientEmail &&\r\n this.setState({ inputLabelClasses: { ...inputLabelClasses, ['fromname']: 'hasvalue', ['recipientname']: 'hasvalue', ['message']: 'hasvalue' } });\r\n this.setState({ userInput: { ...userInput, ['fromname']: fromName, ['recipientname']: recipientName }, message: value });\r\n break;\r\n }\r\n default: {\r\n // Do nothing\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n private _onTypeChange = (type: string) => {\r\n type = type.toLocaleLowerCase();\r\n switch (type) {\r\n case 'email': {\r\n this.setState({ isEmailOptSelectedClass: 'selected', isPrintOptSelectedClass: '', isEmail: true });\r\n break;\r\n }\r\n case 'print': {\r\n this.setState({ isPrintOptSelectedClass: 'selected', isEmailOptSelectedClass: '', isEmail: false, sendDate: '', isSendDateChangedClass: '' });\r\n this.setState({ inputLabelClasses: { ...this.state.inputLabelClasses, [`recipientemail`]: '' } });\r\n break;\r\n }\r\n default: {\r\n // Do nothing\r\n }\r\n }\r\n this._updateUserInput('cardtype', type);\r\n }\r\n\r\n private _getDate = (date: string): string => {\r\n if (date) {\r\n const monthName: string[] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n const dateSplit = date.replace(',', '').split(' ');\r\n const twoDigitDay = dateSplit[0] && dateSplit[0].length === 1 ? `0${dateSplit[0]}` : `${dateSplit[0]}`;\r\n const month = monthName.indexOf(dateSplit[1]) + 1;\r\n const twoDigitMonth = month < 10 ? `0${month}` : `${month}`;\r\n return `${dateSplit[2]}-${twoDigitMonth}-${twoDigitDay}`;\r\n } else {\r\n return 'mm/dd/yyyy';\r\n }\r\n }\r\n\r\n private _onOptsChangeEvent = (option: string) => (event: React.MouseEvent | React.ChangeEvent) => {\r\n this._onOptsChange(option);\r\n }\r\n\r\n private _onOptsChange = (option: string) => {\r\n const { config } = this.props;\r\n option = option.toLocaleLowerCase();\r\n this.setState({ isAmount1SelectedClass: '', isAmount2SelectedClass: '', isAmount3SelectedClass: '' });\r\n switch (option) {\r\n case 'opt_1': {\r\n this.setState({ cardAmount: config.opt1, isAmount1SelectedClass: 'selected' });\r\n this.amountRef.current!.value = '';\r\n this._updateUserInput('amount', config.opt1 || '');\r\n break;\r\n }\r\n case 'opt_2': {\r\n this.setState({ cardAmount: config.opt2, isAmount2SelectedClass: 'selected' });\r\n this.amountRef.current!.value = '';\r\n this._updateUserInput('amount', config.opt2 || '');\r\n break;\r\n }\r\n case 'opt_3': {\r\n this.setState({ cardAmount: config.opt3, isAmount3SelectedClass: 'selected' });\r\n this.amountRef.current!.value = '';\r\n this._updateUserInput('amount', config.opt3 || '');\r\n break;\r\n }\r\n case 'opt_4': {\r\n this.setState({\r\n cardAmount: this.amountRef.current && this.amountRef.current.value && `$${this.amountRef.current.value}` || '',\r\n inputLabelClasses: { ...this.state.inputLabelClasses, [`amount`]: this.amountRef.current && this.amountRef.current.value.length > 0 ? `hasvalue` : '' },\r\n });\r\n this._updateUserInput('amount', this.amountRef.current && this.amountRef.current.value && `$${this.amountRef.current.value}` || '');\r\n break;\r\n }\r\n default: {\r\n // Do nothing\r\n }\r\n }\r\n this.setState({ inputLabelClasses: { ...this.state.inputLabelClasses, [`amount`]: this.amountRef.current && this.amountRef.current.value.length > 0 ? `hasvalue` : '' } });\r\n }\r\n\r\n private _onThumbsChange = (thumb: string) => {\r\n const { config } = this.props;\r\n thumb = thumb.toLocaleLowerCase();\r\n this.setState({ isThumb1SelectedClass: '', isThumb2SelectedClass: '', isThumb3SelectedClass: '', isThumb4SelectedClass: '', selectedThumb: '', thumbColor: '' });\r\n switch (thumb) {\r\n case 'thumb_1': {\r\n this.setState({ isThumb1SelectedClass: 'selected', selectedThumb: 'thumb1', thumbColor: config.thumb1Color, selectedThumbId: 0 });\r\n this._updateUserInput('cardcolour', config.thumb1Color || '');\r\n break;\r\n }\r\n case 'thumb_2': {\r\n this.setState({ isThumb2SelectedClass: 'selected', selectedThumb: 'thumb2', thumbColor: config.thumb2Color, selectedThumbId: 1 });\r\n this._updateUserInput('cardcolour', config.thumb2Color || '');\r\n break;\r\n }\r\n case 'thumb_3': {\r\n this.setState({ isThumb3SelectedClass: 'selected', selectedThumb: 'thumb3', thumbColor: config.thumb3Color, selectedThumbId: 2 });\r\n this._updateUserInput('cardcolour', config.thumb3Color || '');\r\n break;\r\n }\r\n case 'thumb_4': {\r\n this.setState({ isThumb4SelectedClass: 'selected', selectedThumb: 'thumb4', thumbColor: config.thumb4Color, selectedThumbId: 3 });\r\n this._updateUserInput('cardcolour', config.thumb4Color || '');\r\n break;\r\n }\r\n default: {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n\r\n private _onColorChange = (color: string) => {\r\n color = color.toLocaleLowerCase();\r\n this.setState({ isPaletteColor1SelectedClass: '', isPaletteColor2SelectedClass: '', isPaletteColor3SelectedClass: '', selectedPalette: '' });\r\n switch (color) {\r\n case 'color_1': {\r\n this.setState({ isPaletteColor1SelectedClass: 'selected', selectedPalette: 'palette1', selectedPaletteId: 0 });\r\n this._updateUserInput('colourpalette', this._getThumbPaletteColor(this.state.selectedThumb || 'thumb1', 'palette1'));\r\n break;\r\n }\r\n case 'color_2': {\r\n this.setState({ isPaletteColor2SelectedClass: 'selected', selectedPalette: 'palette2', selectedPaletteId: 1 });\r\n this._updateUserInput('colourpalette', this._getThumbPaletteColor(this.state.selectedThumb || 'thumb1', 'palette2'));\r\n break;\r\n }\r\n case 'color_3': {\r\n this.setState({ isPaletteColor3SelectedClass: 'selected', selectedPalette: 'palette3', selectedPaletteId: 2 });\r\n this._updateUserInput('colourpalette', this._getThumbPaletteColor(this.state.selectedThumb || 'thumb1', 'palette3'));\r\n break;\r\n }\r\n default: {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n\r\n private _updateUserInput = (key: string, value: string): void => {\r\n const { userInput } = this.state;\r\n this.setState({ userInput: { ...userInput, [key]: value } });\r\n }\r\n\r\n private _getThumbPaletteColor = (thumb: string, palette: string): string => {\r\n const { config } = this.props;\r\n thumb = thumb.toLocaleLowerCase();\r\n palette = palette.toLocaleLowerCase();\r\n let color = '';\r\n if (thumb === 'thumb1') {\r\n if (palette === 'palette1') {\r\n color = config.thumb1Palette1Color || '';\r\n } else if (palette === 'palette2') {\r\n color = config.thumb1Palette2Color || '';\r\n } else if (palette === 'palette3') {\r\n color = config.thumb1Palette3Color || '';\r\n }\r\n } else if (thumb === 'thumb2') {\r\n if (palette === 'palette1') {\r\n color = config.thumb2Palette1Color || '';\r\n } else if (palette === 'palette2') {\r\n color = config.thumb2Palette2Color || '';\r\n } else if (palette === 'palette3') {\r\n color = config.thumb2Palette3Color || '';\r\n }\r\n } else if (thumb === 'thumb3') {\r\n if (palette === 'palette1') {\r\n color = config.thumb3Palette1Color || '';\r\n } else if (palette === 'palette2') {\r\n color = config.thumb3Palette2Color || '';\r\n } else if (palette === 'palette3') {\r\n color = config.thumb3Palette3Color || '';\r\n }\r\n } else if (thumb === 'thumb4') {\r\n if (palette === 'palette1') {\r\n color = config.thumb4Palette1Color || '';\r\n } else if (palette === 'palette2') {\r\n color = config.thumb4Palette2Color || '';\r\n } else if (palette === 'palette3') {\r\n color = config.thumb4Palette3Color || '';\r\n }\r\n }\r\n return color;\r\n }\r\n\r\n private _capture = (key: string, ref: React.RefObject | React.RefObject) => (event: React.ChangeEvent | React.ChangeEvent) => {\r\n const { inputLabelClasses, userInput } = this.state;\r\n const isNotEmpty = (ref.current && ref.current.value && ref.current.value.length > 0) && 'hasvalue' || '';\r\n if (key === 'senddate' && isNotEmpty) {\r\n const date = ref.current && ref.current.value || '';\r\n const formattedDate = this._changeDateFormat(date);\r\n this.setState({ isSendDateChangedClass: 'changed', sendDate: formattedDate, defaultDate: date });\r\n this.setState({ userInput: { ...userInput, [key]: formattedDate } });\r\n } else if (key === 'senddate' && !isNotEmpty) {\r\n this.setState({ isSendDateChangedClass: '', sendDate: '' });\r\n } else {\r\n this.setState({ inputLabelClasses: { ...inputLabelClasses, [key]: isNotEmpty } });\r\n this.setState({ userInput: { ...userInput, [key]: ref.current && ref.current.value || '' } });\r\n }\r\n }\r\n\r\n private _changeDateFormat = (date: string): string => {\r\n if (date) {\r\n const monthName: string[] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n const dateSplit = date.split('-');\r\n const month = dateSplit[1] && monthName[parseInt(dateSplit[1], 10) - 1] || '';\r\n return `${dateSplit[2] || ''} ${month}, ${dateSplit[0] || ''}`;\r\n } else {\r\n return 'mm/dd/yyyy';\r\n }\r\n }\r\n\r\n private _getMinDate = (): string => {\r\n const today: Date = new Date();\r\n const dd: string = String(today.getDate()).padStart(2, '0');\r\n const mm: string = String(today.getMonth() + 1).padStart(2, '0');\r\n const yyyy: string = today.getFullYear().toString();\r\n return `${yyyy}-${mm}-${dd}`;\r\n }\r\n\r\n private _onEditMessage = (event: React.KeyboardEvent): void => {\r\n const charactersLeft: number = this.state.charactersLeft || 0;\r\n const key: string = event.key.length > 1 ? '' : event.key;\r\n const textArea: HTMLTextAreaElement | null = this.messageRef && this.messageRef.current && this.messageRef.current;\r\n const message = this.messageRef && this.messageRef.current && this.messageRef.current.value || '';\r\n let messageEnterd: string = message || key;\r\n const charactersLimit = this.props.config.messageCharactersLimit || 0;\r\n if (charactersLeft === 0 && event.which !== 8) {\r\n event.preventDefault();\r\n }\r\n if (charactersLeft <= 0) {\r\n messageEnterd = messageEnterd.substring(0, charactersLimit);\r\n textArea!.value = messageEnterd;\r\n }\r\n if (key.length === 1 || event.which === 8 || event.which === 46) {\r\n this.setState({\r\n message: messageEnterd,\r\n charactersLeft: (charactersLimit - messageEnterd.length) >= 0 ? charactersLimit - messageEnterd.length : 0\r\n });\r\n }\r\n }\r\n\r\n private _onClickCreateCard = async (): Promise => {\r\n this._showErrors();\r\n this.userChoice = {\r\n cardtype: this.state.userInput[`cardtype`],\r\n recipientemail: this.state.userInput[`recipientemail`],\r\n senddate: this.state.userInput[`senddate`],\r\n amount: this.state.userInput[`amount`],\r\n cardcolour: this.state.userInput[`cardcolour`],\r\n colourpalette: this.state.userInput[`colourpalette`],\r\n recipientname: this.state.userInput[`recipientname`],\r\n fromname: this.state.userInput[`fromname`],\r\n message: this.state.userInput[`message`],\r\n hasErrors: this._hasErrors()\r\n };\r\n\r\n this._addProductToCart();\r\n }\r\n\r\n private _showErrors = (): void => {\r\n this.setState({\r\n sendDateErrorClass: (this.state.isEmail && this.state.sendDate === '') ? 'show' : 'hide',\r\n recipientEmailErrorClass: this._checkEmailError() ? 'show' : 'hide',\r\n amountErrorClass: this._checkAmountError() ? 'show' : 'hide',\r\n recipientNameErrorClass: (this.recipientNameRef.current && this.recipientNameRef.current.value.length === 0) ? 'show' : 'hide',\r\n fromNameErrorClass: (this.fromNameRef.current && this.fromNameRef.current.value.length === 0) ? 'show' : 'hide',\r\n messageErrorClass: (this.messageRef.current && this.messageRef.current.value.length === 0) ? 'show' : 'hide',\r\n apiErrorClass: (this.product === null || this.product && this.product.RecordId === 0) ? 'show' : 'hide'\r\n });\r\n }\r\n\r\n private _hasErrors = (): string => {\r\n const sendDateValue = this.state.isEmail && this.state.sendDate;\r\n const recipientEmailValue = this.state.isEmail && this.recipientEmailRef.current && this.recipientEmailRef.current.value;\r\n const recipientNameValue = this.recipientNameRef.current && this.recipientNameRef.current.value;\r\n const fromNameValue = this.fromNameRef.current && this.fromNameRef.current.value;\r\n const messageValue = this.messageRef.current && this.messageRef.current.value;\r\n let hasErrors: string = 'false';\r\n if (sendDateValue === '' || recipientEmailValue === '' || recipientNameValue === '' || this._checkEmailError() === true || this._checkAmountError() === true || fromNameValue === '' || messageValue === '') {\r\n hasErrors = 'true';\r\n }\r\n return hasErrors;\r\n }\r\n\r\n private _checkEmailError = (): boolean => {\r\n if (this.state.isEmail) {\r\n const email: string = this.recipientEmailRef.current && this.recipientEmailRef.current.value || '';\r\n if (email.length === 0) {\r\n return true;\r\n } else {\r\n const regex: RegExp = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n const isValid: boolean = regex.test(email);\r\n return !isValid;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private _checkAmountError = (): boolean => {\r\n const amount: string = this.state.cardAmount && this.state.cardAmount.replace('$', '') || '';\r\n if (amount.length === 0) {\r\n return true;\r\n } else {\r\n const regex: RegExp = /^\\d+(?:\\.\\d{0,2})?$/;\r\n const isValid: boolean = regex.test(amount);\r\n const isAboveOrEqualToTen: boolean = isValid && (parseFloat(amount) >= 10) || false;\r\n return !(isValid && isAboveOrEqualToTen);\r\n }\r\n }\r\n\r\n private _renderAddToCartErrorBlock = (): JSX.Element | null => {\r\n let errorMessages: (string | undefined)[] = [];\r\n\r\n if (this.props.data.configErrorState.result && this.props.data.configErrorState.result.errorHost === this.props.typeName) {\r\n errorMessages = Object.values(this.props.data.configErrorState.result.configureErrors).filter(message => message !== undefined);\r\n }\r\n\r\n if (this.state.addToCartFailed) {\r\n errorMessages.push(this.state.addToCartErrorMessage);\r\n }\r\n\r\n if (this.hasGiftCardLineItem > 0) {\r\n errorMessages.push('One gift card has already been added to cart');\r\n }\r\n\r\n return (\r\n 0 ? '' : 'd-none'}`} role='alert' aria-live='assertive' aria-label={this.props.resources.buyboxErrorMessageHeader} >\r\n \r\n \r\n {this.props.resources.maxGiftCardLimitMessage}\r\n \r\n \r\n );\r\n }\r\n\r\n private _canAddToCart = (): boolean => {\r\n if (!this.props.data || !this.product) {\r\n // No product exists, won't be able to add to cart\r\n return false;\r\n }\r\n\r\n if (this.props.data.keyedInPriceError && this.props.data.keyedInPriceError.result) {\r\n return false;\r\n }\r\n\r\n if (!this.userChoice || Object.keys(this.userChoice).length === 0 || this.userChoice[`hasErrors`] === 'true') {\r\n // No gift card options exists, won't be able to add to cart\r\n return false;\r\n }\r\n\r\n // Allow only one giftcard line\r\n if (this.props.data.cart.result && this.props.data.channelConfiguration.result) {\r\n const { cart, channelConfiguration } = this.props.data;\r\n const cartResult = cart && cart.result;\r\n const channelGiftCardItemId = channelConfiguration && channelConfiguration.result && channelConfiguration.result.GiftCardItemId || '';\r\n const cartLines = cartResult && cartResult.cart && cartResult.cart.CartLines || [];\r\n for (let i = 0; i < cartLines.length; i++) {\r\n const itemId = cartLines[i].ItemId || '';\r\n if (itemId.toLocaleLowerCase() === channelGiftCardItemId.toLocaleLowerCase()) {\r\n this.hasGiftCardLineItem += 1;\r\n this.setState({addToCartFailed: true});\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n // tslint:disable: max-func-body-length tslint:disable: cyclomatic-complexity\r\n private _addProductToCart = async (): Promise => {\r\n const product: SimpleProduct = this.product || { RecordId: 0, ProductTypeValue: 0, BasePrice: 0, Price: 0, AdjustedPrice: 0 };\r\n\r\n if (this.props.context && !this.state.disabledOverride && product.RecordId !== 0) {\r\n if (!this._canAddToCart()) {\r\n const keyedInPriceError = this.props.data.keyedInPriceError.result;\r\n if (keyedInPriceError) {\r\n getNotificationMessage(\r\n createNotificationMessage({ message: keyedInPriceError, messagetype: NotificationType.error }),\r\n this.props.context.actionContext\r\n );\r\n }\r\n\r\n return;\r\n }\r\n\r\n const cartState = await getCartState(this.props.context.actionContext);\r\n if (cartState && cartState.cart && cartState.cart.CartLines) {\r\n this.setState({\r\n disabledOverride: true\r\n });\r\n\r\n const channelGiftCardItemId = this.props.data.channelConfiguration.result!.GiftCardItemId;\r\n const productItemId = product.ItemId;\r\n const giftCardOpts: IDictionary | undefined = this.userChoice;\r\n const emailDeliveryModeCode: string | undefined = this.props.data.channelConfiguration.result && this.props.data.channelConfiguration.result.EmailDeliveryModeCode;\r\n const amount: number = Number(giftCardOpts && giftCardOpts[`amount`].replace('$', ''));\r\n product.Price = amount;\r\n product.IsGiftCard = true;\r\n\r\n if (channelGiftCardItemId !== productItemId) {\r\n return;\r\n }\r\n\r\n const addProductsToCartInput = {\r\n product: product,\r\n count: 1,\r\n availableQuantity: this.props.data.quantity.result,\r\n enableStockCheck: this.props.context.app.config.enableStockCheck,\r\n isAddEmailDeliveryItemToCart: true,\r\n customPrice: amount,\r\n deliveryMode: emailDeliveryModeCode\r\n };\r\n let isAddedToCart:boolean = false;\r\n await cartState.addProductToCart(addProductsToCartInput)\r\n .then(async result => {\r\n if (result.status === 'SUCCESS') {\r\n isAddedToCart = true;\r\n // add extension properties once CartLine\r\n if (this.props.context) {\r\n const message = (this.props.data.quantity.result! > 1) ?\r\n `${this.props.data.quantity.result} items added to your cart`\r\n : `${this.props.data.quantity.result} item added to your cart`;\r\n getNotificationMessage(\r\n createNotificationMessage({ message, messagetype: NotificationType.success }),\r\n this.props.context.actionContext\r\n );\r\n }\r\n } else {\r\n this.setState({\r\n disabledOverride: false,\r\n addToCartFailed: true,\r\n addToCartErrorMessage: this._getAddToCartErrorMessage(result)\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n this.props.telemetry.error('Error while adding to cart', error);\r\n });\r\n\r\n if (isAddedToCart && cartState.cart && cartState.cart.CartLines) {\r\n const cartLines = cartState.cart.CartLines.filter(cartLineItem => cartLineItem.ItemId === channelGiftCardItemId);\r\n let updatedCart: Cart = cartState.cart;\r\n let isCartLineUpdated: boolean = false;\r\n if (cartLines) {\r\n cartLines.map(async cLine => {\r\n Object.entries(giftCardOpts).map(([key]) => {\r\n if (key.toLocaleLowerCase() !== 'haserrors') {\r\n this.addCartlineExtension(cLine, key, giftCardOpts[key]);\r\n }\r\n });\r\n cLine.IsGiftCardLine = true;\r\n cLine.ElectronicDeliveryEmail = cLine.ExtensionProperties && cLine.ExtensionProperties.filter(item => item.Key === \"recipientemail\")[0].Value?.StringValue;\r\n // Updates cart with Attribute Values\r\n await updateCartLinesAsync({ callerContext: this.props.context.actionContext }, cartState.cart.Id, [cLine], null)\r\n .then(latestCart => {\r\n updatedCart = latestCart;\r\n isCartLineUpdated = true;\r\n\r\n if(isCartLineUpdated && updatedCart.CartLines && updatedCart.CartLines?.length > 0) {\r\n // Update cart with attribute\r\n cartState.updateCart({newCartObject: updatedCart})\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.warning(error);\r\n this.props.context.actionContext.telemetry.debug('Unable to Update Cart Line');\r\n return {cart: undefined, status: 'FAILED'};\r\n });\r\n }\r\n if (this.props.config.shouldNavigateToCart) {\r\n window.location.href = getUrlSync('cart', this.props.context.actionContext) || '';\r\n } else {\r\n this.setState({\r\n disabledOverride: false,\r\n addToCartFailed: false\r\n });\r\n }\r\n },\r\n reason => {\r\n this.setState({\r\n disabledOverride: false,\r\n addToCartFailed: false\r\n });\r\n this.props.context.actionContext.telemetry.error('Error while updating cart lines (Attempt 1)', reason);\r\n\r\n }).catch(e => {\r\n this.setState({\r\n disabledOverride: false,\r\n addToCartFailed: false\r\n });\r\n console.log('error > ', e)\r\n });\r\n });\r\n \r\n }\r\n }\r\n } else {\r\n this.setState({\r\n addToCartFailed: true,\r\n addToCartErrorMessage: this.props.resources.addedToCartFailureMessage\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _getAddToCartErrorMessage = (result: ICartActionResult): string => {\r\n if (result.status === 'SUCCESS') {\r\n return '';\r\n } else {\r\n return this.props.resources.addedToCartFailureMessage;\r\n }\r\n }\r\n\r\n // add extension properties\r\n private addCartlineExtension = (cartLine: CartLine, extensionPropertyKey: string, extensionPropertyValue: string) => {\r\n cartLine.ExtensionProperties = cartLine.ExtensionProperties || [];\r\n const property = cartLine.ExtensionProperties.find((extension) => extension.Key === extensionPropertyKey);\r\n let amount = 0;\r\n if (extensionPropertyKey.toLocaleLowerCase() === 'amount') {\r\n amount = parseFloat(extensionPropertyValue.replace('$', ''));\r\n }\r\n if (property) {\r\n if (amount) {\r\n property.Value = { DecimalValue: amount };\r\n } else {\r\n property.Value = { StringValue: extensionPropertyValue };\r\n }\r\n } else {\r\n if (amount) {\r\n cartLine.ExtensionProperties.push({\r\n Key: extensionPropertyKey,\r\n Value: {\r\n DecimalValue: amount\r\n }\r\n });\r\n } else {\r\n cartLine.ExtensionProperties.push({\r\n Key: extensionPropertyKey,\r\n Value: {\r\n StringValue: extensionPropertyValue\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CittaGiftCardCreation;\r\n"],"sourceRoot":""}
\r\n {resources.locationCorrectText}{this._getCurrentLocationName()}, \r\n {resources.locationChangeText}\r\n