{"version":3,"file":"static/js/13509278f3007a658005.bundle.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./src/modules/c-checkout-gift-card/c-checkout-gift-card.props.autogenerated.ts?d870","webpack://msdyn365.commerce.online/./src/modules/c-checkout-gift-card/components/get-form.tsx?f064","webpack://msdyn365.commerce.online/./src/modules/c-checkout-gift-card/components/get-item.tsx?9542","webpack://msdyn365.commerce.online/./src/modules/c-checkout-gift-card/components/get-list.tsx?4226","webpack://msdyn365.commerce.online/./src/modules/c-checkout-gift-card/components/title.tsx?13d7","webpack://msdyn365.commerce.online/./src/modules/c-checkout-gift-card/c-checkout-gift-card.tsx?df9f","webpack://msdyn365.commerce.online/./src/modules/c-checkout-gift-card/c-checkout-gift-card.view.tsx?1f1d","webpack://msdyn365.commerce.online/./lib/c-checkout-gift-card/module-registration.js?422d","webpack://msdyn365.commerce.online/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://msdyn365.commerce.online/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://msdyn365.commerce.online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://msdyn365.commerce.online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://msdyn365.commerce.online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://msdyn365.commerce.online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://msdyn365.commerce.online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://msdyn365.commerce.online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://msdyn365.commerce.online/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://msdyn365.commerce.online/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://msdyn365.commerce.online/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://msdyn365.commerce.online/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://msdyn365.commerce.online/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://msdyn365.commerce.online/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://msdyn365.commerce.online/./src/modules/checkout-guest-profile/checkout-guest-profile.tsx?c2ce","webpack://msdyn365.commerce.online/./src/modules/checkout-guest-profile/checkout-guest-profile.view.tsx?2e47","webpack://msdyn365.commerce.online/./src/modules/checkout-guest-profile/components/get-add-contact-info.tsx?c9f6","webpack://msdyn365.commerce.online/./src/modules/checkout-guest-profile/components/get-show-contact-info.tsx?e9b5","webpack://msdyn365.commerce.online/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://msdyn365.commerce.online/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://msdyn365.commerce.online/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://msdyn365.commerce.online/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://msdyn365.commerce.online/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://msdyn365.commerce.online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://msdyn365.commerce.online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://msdyn365.commerce.online/./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack://msdyn365.commerce.online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx?9243","webpack://msdyn365.commerce.online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.tsx?26e8","webpack://msdyn365.commerce.online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.check-box.tsx?3b17","webpack://msdyn365.commerce.online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-message.tsx?c6a5","webpack://msdyn365.commerce.online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-title.tsx?f908","webpack://msdyn365.commerce.online/./src/modules/checkout/methods/checkout.ts?7b6b","webpack://msdyn365.commerce.online/external var \"React\"?0d3b","webpack://msdyn365.commerce.online/external var \"ReactDOM\"?853b"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICCheckoutGiftCard contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum showAdditionalFields {\r\n pin = 'pin',\r\n expirationDate = 'expirationDate',\r\n pinAndExpirationDate = 'pinAndExpirationDate'\r\n}\r\n\r\nexport interface ICCheckoutGiftCardConfig extends Msdyn365.IModuleConfig {\r\n showAdditionalFields?: showAdditionalFields;\r\n shouldBeEnabledForGuest?: boolean;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface ICCheckoutGiftCardResources {\r\n emptyInputError: string;\r\n invalidCodeError: string;\r\n invalidCardInfoError: string;\r\n invalidCardTypeError: string;\r\n noCardPinError: string;\r\n noCardExpError: string;\r\n duplicatedCodeError: string;\r\n noBalanceError: string;\r\n giftCardFormLabel: string;\r\n giftCardNumberLabel: string;\r\n giftCardPinLabel: string;\r\n giftCardExpLabel: string;\r\n giftCardPinPlaceholderText: string;\r\n giftCardExpPlaceholderText: string;\r\n giftCardAlertLabel: string;\r\n applyGiftCardButton: string;\r\n removeGiftCardButton: string;\r\n enteredGiftCardLabel: string;\r\n giftCardAvailableBalanceLabel: string;\r\n}\r\n\r\nexport interface ICCheckoutGiftCardProps extends Msdyn365.IModule {\r\n resources: ICCheckoutGiftCardResources;\r\n config: ICCheckoutGiftCardConfig;\r\n}\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/* eslint-disable no-duplicate-imports */\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../c-checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: { applyGiftCardButton, giftCardFormLabel, giftCardNumberLabel, giftCardPinLabel, giftCardExpLabel,\n giftCardAlertLabel, giftCardPinPlaceholderText, giftCardExpPlaceholderText }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/* eslint-disable no-duplicate-imports */\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {' '}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {' '}\n \n {balance}\n \n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/* eslint-disable no-duplicate-imports */\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard => getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/* eslint-disable no-duplicate-imports */\nimport * as React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ();\n\nexport default GiftCardTitle;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/* eslint-disable no-duplicate-imports */\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync, getTenderTypesAsync, resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType, CardTypeInfo, GiftCard, RetailOperation, TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '@msdyn365-commerce-modules/checkout';\nimport { ICCheckoutGiftCardData } from './c-checkout-gift-card.data';\nimport { ICCheckoutGiftCardProps } from './c-checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICCheckoutGiftCardProps, IModuleStateProps { }\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICCheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n @computed get isPaymentVerificationRedirection(): boolean {\n const { requestFormData, query } = this.props.context.request;\n return !!((requestFormData && query && query.pv === '1'));\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps,\n nextState: ICheckoutGiftCardState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady ?\n {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n } :\n undefined,\n addGiftCard: !isReady ?\n {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n } :\n undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (!this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({ giftCard, additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId } });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input =\n this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n\n };\n\n private readonly findGiftcardTenderTypes = (tenderTypes: TenderType[], operationId: RetailOperation, giftcardType: string): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(tenderType => (tenderType.OperationId === operationId && tenderType.ConnectorId === ''));\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(tenderType => (tenderType.OperationId === operationId && tenderType.ConnectorId !== ''));\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (giftCardNumber: string, giftCardPin: string, giftCardExp: string, isPinRequired: boolean | undefined, isExpRequired: boolean | undefined, tenderTypeId: string | undefined): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(tenderTypes, OPERATIONS.PayGiftCertificate, SupportedGiftCardType.Internal);\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(tenderTypes, OPERATIONS.PayGiftCertificate, SupportedGiftCardType.External);\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/* eslint-disable no-duplicate-imports */\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './c-checkout-gift-card';\n\nexport const From: React.FC = ({ formProps, label, inputPinLabel, inputExpLabel, alert, inputProps, inputNumProps,\n inputPinProps, inputExpProps, inputNumber, inputPin, inputExp, applyButton, supportExternalGiftCard, showGiftCardPinInput, showGiftCardExpInput, alertFieldLabel }) => (\n \n {alert}\n {supportExternalGiftCard ? \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput &&\n \n {inputPinLabel}\n {inputPin}\n }\n {showGiftCardExpInput &&\n \n {inputExpLabel}\n {inputExp}\n }\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n : <>\n {label}\n {inputNumber}\n }\n {applyButton}\n \n);\n\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['c-checkout-gift-card'] = {\n c: () => require('partner/modules/c-checkout-gift-card/c-checkout-gift-card.tsx'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'c-checkout-gift-card',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/c-checkout-gift-card'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|c-checkout-gift-card|c-checkout-gift-card'] = {\n c: () => require('partner/modules/c-checkout-gift-card/c-checkout-gift-card.view.tsx'),\n cn: '__local__-__local__-c-checkout-gift-card'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { Address, CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isSelectDefaultOptionEnabled =\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (!this.canShip()) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const {\n moduleState: { isReady, isUpdating, hasError }\n } = this.props;\n const isError = !this.isLoading && hasError;\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\n\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n\n await this.updateCartDeliverySpecification(this.selectedItemId);\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\n\n if (this.canShip() && shippingAddress) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n await this.getDeliveryOptions(shippingAddress);\n }\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && }\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\n if (!description) {\n return null;\n }\n\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { ICheckoutGiftCardData } from './checkout-gift-card.data';\nimport { ICheckoutGiftCardProps } from './checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICheckoutGiftCardProps, IModuleStateProps {}\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n checkoutErrorRef?: React.RefObject;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGiftCard && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGiftCard) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps, nextState: ICheckoutGiftCardState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n checkoutErrorRef: this.checkoutErrorRef,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady\n ? {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined,\n addGiftCard: !isReady\n ? {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart?.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section gift card onEdit is called.');\n\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Payment section gift card onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.props.telemetry.information('Payment section gift card onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n this.props.telemetry.information('Payment section gift card remove is called.');\n\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n this.props.telemetry.information('Payment section gift card apply is called.');\n\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({\n giftCard,\n additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId }\n });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n this.props.telemetry.information('Payment section fetching gift card is failed.');\n };\n\n private readonly findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './checkout-gift-card';\n\nexport const From: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, checkoutErrorRef, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: {\n applyGiftCardButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {` `}\n {balance}\n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard =>\n getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ;\n\nexport default GiftCardTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { ErrorComponent } from '../../common';\n\nimport { ICheckoutGuestProfileData } from './checkout-guest-profile.data';\nimport { ICheckoutGuestProfileProps } from './checkout-guest-profile.props.autogenerated';\nimport getAddContactInfo, { IAddContactInfo } from './components/get-add-contact-info';\nimport getShowContactInfo, { IShowContactInfo } from './components/get-show-contact-info';\n\nexport * from './components/get-add-contact-info';\nexport * from './components/get-show-contact-info';\n\ninterface ICheckoutGuestProfileState {\n email: string;\n hasCheckoutError?: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutGuestProfileModuleProps extends ICheckoutGuestProfileProps, IModuleStateProps {}\n\nexport interface ICheckoutGuestProfileViewProps extends ICheckoutGuestProfileProps, ICheckoutGuestProfileState {\n moduleProps: IModuleProps;\n showContactInfo?: IShowContactInfo;\n addContactInfo?: IAddContactInfo;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n\n onChange?(email: string): void;\n onEdit?(): void;\n onSubmit?(): void;\n onCancel?(): void;\n}\n\n/**\n *\n * CheckoutGuestProfile component.\n * @extends {React.PureComponent, ICheckoutGuestProfileState>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutGuestProfile extends React.Component {\n public state: ICheckoutGuestProfileState = {\n email:\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.user &&\n this.props.context.request.user.isAuthenticated &&\n this.props.context.request.user.emailAddress) ||\n ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get hasEmailError(): boolean {\n return this.props.moduleState.hasError && !this.state.hasCheckoutError;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && !this.props.data.checkout.result?.isExpressAddressApplied) {\n const email = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\n\n await this.submitEmail(email);\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGuestProfile && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGuestProfile) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGuestProfileModuleProps, nextState: ICheckoutGuestProfileState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n config: { className },\n resources,\n moduleState: { isReady, hasExternalSubmitGroup }\n } = this.props;\n const { hasCheckoutError, errorMessage } = this.state;\n const email = this.props.data.checkout.result?.guestCheckoutEmail ?? '';\n\n const viewProps: ICheckoutGuestProfileViewProps = {\n ...this.props,\n ...this.state,\n checkoutErrorRef: this.checkoutErrorRef,\n onChange: this.onChange,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n\n moduleProps: {\n moduleProps: this.props,\n className: classnames('ms-checkout-guest-profile', className, isReady ? 'show' : 'add')\n },\n alert: hasCheckoutError && errorMessage && (\n \n ),\n showContactInfo: isReady\n ? getShowContactInfo({\n canEdit: !hasExternalSubmitGroup,\n email,\n resources,\n onEdit: this.onEdit\n })\n : undefined,\n addContactInfo: !isReady\n ? getAddContactInfo({\n email: this.state.email,\n hasError: this.hasEmailError,\n resources,\n inputRef: this.inputRef,\n onChange: this.onChange,\n canSubmit: !hasExternalSubmitGroup,\n onSubmit: this.onSubmit,\n canCancel: !hasExternalSubmitGroup && !!email,\n onCancel: this.onCancel\n })\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n\n const emailOnCart = checkoutState?.checkoutCart.cart.ReceiptEmail;\n const email = hasInvoiceLine\n ? this.props.context.request.user.emailAddress ?? ''\n : emailOnCart ??\n (checkoutState?.isExpressCheckoutApplied ? checkoutState.emailAddressFromExpressCheckout : undefined) ??\n this.state.email;\n\n if (email) {\n await this.updateGuestProfile(email);\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: true });\n } else {\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\n }\n\n const isEmailValid = this.isEmailValid(email);\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : email && isEmailValid ? 'ready' : 'updating',\n hasError: !!email && !isEmailValid\n });\n };\n\n private readonly onChange = (rowEmail: string): void => {\n const email = (rowEmail || '').replace(new RegExp('[<>]', 'gi'), '');\n this.setState({ email });\n if (this.props.moduleState.hasError) {\n // Clear error during user updating the email\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n }\n };\n\n private readonly isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n };\n\n private readonly updateGuestProfile = async (newGuestCheckoutEmail: string): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateGuestCheckoutEmail({ newGuestCheckoutEmail });\n this.setState({ email: newGuestCheckoutEmail });\n }\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Guest profile onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Guest profile onSubmit is called.');\n\n const { email } = this.state;\n await this.submitEmail(email);\n };\n\n /**\n * Submit the email address.\n * @param email - The email to be submitted.\n *\n */\n private readonly submitEmail = async (email: string): Promise => {\n const isValid = this.isEmailValid(email);\n if (!isValid) {\n this.props.moduleState.setHasError(true);\n\n const input = this.inputRef.current?.focus && (this.inputRef.current as HTMLElement);\n input?.focus();\n } else {\n this.props.moduleState.onReady();\n await this.updateGuestProfile(email);\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Guest profile onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const email = this.props.data.checkout.result.guestCheckoutEmail;\n if (!email) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.setState({\n email\n });\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n this.props.moduleState.onReady();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n hasCheckoutError: true,\n errorMessage\n });\n };\n}\n\nexport default CheckoutGuestProfile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from './checkout-guest-profile';\n\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton }) => (\n \n {email}\n {editButton}\n \n);\n\nexport const AddContactInfo: React.FC = ({\n addFormProps,\n submitButton,\n cancelButton,\n inputGroupProps,\n label,\n error,\n input\n}) => (\n \n \n {label}\n {error}\n {input}\n \n {submitButton}\n {cancelButton}\n \n);\n\nconst CheckoutGuestProfileView: React.FC = ({\n moduleProps,\n checkoutErrorRef,\n alert,\n showContactInfo,\n addContactInfo\n}) => {\n return (\n \n {alert}\n {showContactInfo && }\n {addContactInfo && }\n \n );\n};\n\nexport default CheckoutGuestProfileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddContactInfoInput {\n inputRef?: React.RefObject;\n hasError: boolean;\n email: string;\n resources: {\n emailLabel: string;\n emailErrortext: string;\n saveBtnLabel: string;\n cancelBtnLabel: string;\n };\n canSubmit: boolean;\n canCancel: boolean;\n onChange(email: string): void;\n onSubmit(): void;\n onCancel(): void;\n}\n\nexport interface IAddContactInfo {\n addFormProps: INodeProps;\n submitButton: React.ReactNode;\n cancelButton: React.ReactNode;\n inputGroupProps: INodeProps;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\n/**\n * On Input change handler function.\n * @param onChange -On change input function.\n * @returns Call of onChange function.\n */\nconst onInputChangeHandler = (onChange: (email: string) => void) => (event: React.ChangeEvent): void => {\n onChange(event.target.value || '');\n};\n\nconst getAddContactInfo = ({\n hasError,\n inputRef,\n email,\n canSubmit,\n canCancel,\n onChange,\n onSubmit,\n onCancel,\n resources: { emailLabel, emailErrortext, saveBtnLabel, cancelBtnLabel }\n}: IAddContactInfoInput): IAddContactInfo => {\n const onInputChange = onInputChangeHandler(onChange);\n\n return {\n addFormProps: { className: 'ms-checkout-guest-profile__add-contact-info' },\n submitButton: canSubmit && (\n \n ),\n cancelButton: canCancel && (\n \n ),\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\n label: (\n \n ),\n error: hasError && (\n \n {emailErrortext}\n \n ),\n input: (\n \n )\n };\n};\n\nexport default getAddContactInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IShowContactInfoInput {\n canEdit: boolean;\n email: string;\n resources: {\n editBtnLabel: string;\n };\n onEdit(): void;\n}\n\nexport interface IShowContactInfo {\n showInfoProps: INodeProps;\n email: React.ReactNode;\n editButton?: React.ReactNode;\n}\n\nconst getContactInfo = ({ canEdit, email, resources: { editBtnLabel }, onEdit }: IShowContactInfoInput): IShowContactInfo => ({\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\n email: {email},\n editButton: canEdit && (\n \n )\n});\n\nexport default getContactInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { callActionOrExecute } from '@msdyn365-commerce/retail-proxy';\nimport { createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { LoyaltyPointRedemptionEstimate, LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { GetLoyaltyTransactionEstimationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Drawer, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyData } from './checkout-loyalty.data';\nimport { ICheckoutLoyaltyProps } from './checkout-loyalty.props.autogenerated';\nimport InputComponent from './components/checkout-loyalty-input';\nimport LabelComponent from './components/checkout-loyalty-label';\nimport TextComponent from './components/checkout-loyalty-text';\nimport { ErrorComponent } from '../../common/error';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutLoyaltyState {\n dollarsApplied: number;\n isFetchingLoyaltyCard: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutLoyaltyModuleProps extends ICheckoutLoyaltyProps, IModuleStateProps {}\n\nexport interface ICheckoutLoyaltyViewState {\n isShowLoyalty: boolean;\n isShowAddLoyalty: boolean;\n}\n\nexport interface ICheckoutLoyaltyShow {\n heading: React.ReactNode;\n coveredAmountText: React.ReactNode;\n amount: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyRewardPoint {\n checkoutLoyaltyRewardPoint: INodeProps;\n key: string;\n title: React.ReactNode;\n availablePointsText: React.ReactNode;\n activePoints: React.ReactNode;\n expiringPointsText: React.ReactNode;\n expiringPoints: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyAdd {\n heading: React.ReactNode;\n cardNumber: React.ReactNode;\n drawer: INodeProps;\n rewardPoints: ICheckoutLoyaltyRewardPoint[];\n loyaltyAmountContainer: INodeProps;\n appliedLoyaltyAmountContainer: INodeProps;\n loyaltyAmountLabel: React.ReactNode;\n loyaltyAmountInput: React.ReactNode;\n loyaltyAmountApplyButton: React.ReactNode;\n showAppliedAmount: boolean;\n loyaltyAmountAppliedText: React.ReactNode;\n loyaltyAmountAppliedPrice: React.ReactNode;\n loyaltyAmountRemoveButton: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyViewProps extends ICheckoutLoyaltyModuleProps {\n checkoutLoyalty: IModuleProps;\n viewState: ICheckoutLoyaltyViewState;\n showLoyalty: ICheckoutLoyaltyShow;\n addLoyalty: ICheckoutLoyaltyAdd;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutLoyalty component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n\n@withModuleState\n@observer\nclass CheckoutLoyalty extends React.Component {\n private readonly _dialogToggleRef: React.RefObject | undefined;\n\n private readonly moduleClassName: string = 'ms-checkout-loyalty';\n\n private readonly _defaultLoyaltyPoints: number = 0;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n constructor(props: ICheckoutLoyaltyModuleProps) {\n super(props);\n this._dialogToggleRef = React.createRef();\n this._applyLoyaltyPoints = this._applyLoyaltyPoints.bind(this);\n this._removeLoyaltyPoints = this._removeLoyaltyPoints.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this.state = { dollarsApplied: this.maxDollars, isFetchingLoyaltyCard: false };\n }\n\n @computed get shouldPayLoyalty(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use loyalty when cart is not full of free items\n const amountDue = cart.TotalAmount || 0;\n return amountDue > 0;\n }\n\n @computed get isDataReady(): boolean {\n return (\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\n (this.props.data.loyaltyCard && this.props.data.loyaltyCard.status) !== 'LOADING' &&\n (this.props.data.loyaltyTransactionEstimation && this.props.data.loyaltyTransactionEstimation.status) !== 'LOADING'\n );\n }\n\n @computed get maxDollars(): number {\n return this.props.data.loyaltyTransactionEstimation.result &&\n this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n ? this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n : 0;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart,\n async () => {\n this._updateEstimate();\n }\n );\n\n reaction(\n () => this.props.data.loyaltyCard.result,\n async () => {\n this._updateLoyalty();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutLoyalty && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutLoyalty) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutLoyaltyModuleProps, nextState: ICheckoutLoyaltyState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n resources,\n renderView,\n moduleState: { hasError, isReady }\n } = this.props;\n\n if (\n this.props.data.loyaltyCard &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n ) {\n const loyaltyCard = this.props.data.loyaltyCard.result;\n const checkoutState = this.props.data.checkout.result;\n let isShowLoyalty = false;\n const errorMessage = this.state.errorMessage;\n\n if (isReady) {\n if (!checkoutState || checkoutState.loyaltyAmount === 0) {\n return null;\n }\n isShowLoyalty = true;\n }\n\n const viewProps = {\n ...this.props,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isShowLoyalty,\n isShowAddLoyalty: !isReady\n },\n alert: hasError && errorMessage && ,\n checkoutLoyalty: {\n moduleProps: this.props,\n className: classnames(\n this.moduleClassName,\n { [`${this.moduleClassName}__applied`]: isShowLoyalty },\n this.props.config.className\n )\n },\n showLoyalty: {\n heading: ,\n coveredAmountText: (\n \n ),\n amount: (\n \n )\n },\n addLoyalty: {\n heading: ,\n drawer: {\n tag: Drawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: this._drawerHeader(),\n openGlyph: `${this.moduleClassName}__drawer-open`,\n closeGlyph: `${this.moduleClassName}__drawer-close`,\n glyphPlacement: 'end'\n },\n cardNumber: ,\n rewardPoints:\n loyaltyCard.RewardPoints &&\n loyaltyCard.RewardPoints.map((points, index) => {\n return this._renderPointSection(points, resources.availablePointsLabel, resources.expiringLoyaltyPointsLabel);\n }),\n loyaltyAmountContainer: {\n className: `${this.moduleClassName}__amount`\n },\n appliedLoyaltyAmountContainer: {\n className: `${this.moduleClassName}__applied-amount`\n },\n loyaltyAmountLabel: (\n \n ),\n loyaltyAmountInput: (\n \n ),\n loyaltyAmountApplyButton: (\n this.maxDollars ||\n this.state.dollarsApplied <= 0 ||\n isNaN(this.state.dollarsApplied) ||\n this.state.isFetchingLoyaltyCard\n }\n >\n {this.props.resources.applyCheckoutLoyaltyPaymentText}\n \n ),\n showAppliedAmount: checkoutState && checkoutState.loyaltyAmount > 0,\n loyaltyAmountAppliedText: (\n \n ),\n loyaltyAmountAppliedPrice: (\n \n ),\n loyaltyAmountRemoveButton: (\n \n {this.props.resources.removeCheckoutLoyaltyPaymentText}\n \n )\n }\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n this.props.context.telemetry.error('Checkout loyalty content is empty, module wont render');\n return null;\n }\n\n private _drawerHeader(): JSX.Element {\n return (\n <>\n

{this.props.resources.loyaltyCoveredAmountText}

\n \n \n );\n }\n\n private _renderPointSection(\n point: LoyaltyRewardPoint,\n loyaltyCoveredAmountText: string,\n expiringLoyaltyPointsLabel: string\n ): ICheckoutLoyaltyRewardPoint {\n return {\n key: point.RewardPointId || '',\n checkoutLoyaltyRewardPoint: {\n className: `${this.moduleClassName}__program`\n },\n title: ,\n availablePointsText: ,\n activePoints: (\n \n ),\n expiringPointsText: ,\n expiringPoints: (\n \n )\n };\n }\n\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const savedLoyaltyAmount = this.props.data.checkout.result?.loyaltyAmount;\n if (savedLoyaltyAmount) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n } else if (\n this.props.data.loyaltyCard.result &&\n this.props.data.checkout.result &&\n this.props.data.loyaltyCard.result.CardNumber !== this.props.data.checkout.result.checkoutCart.cart.LoyaltyCardId\n ) {\n this.props.data.checkout.result.checkoutCart\n .updateLoyaltyCardId({ loyaltyCardNumber: this.props.data.loyaltyCard.result.CardNumber })\n .catch(error => {\n if (this.context.telemetry) {\n this.context.telemetry.warning(error);\n this.context.telemetry.debug('Unable to update the loyalty card');\n }\n });\n }\n };\n\n private readonly onEdit = () => {\n this.props.telemetry.information('Payment section loyalty onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = () => {\n this.props.telemetry.information('Payment section loyalty onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = () => {\n this.props.telemetry.information('Payment section loyalty onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n const checkoutState = this.props.data.checkout.result;\n if (checkoutState && checkoutState.loyaltyAmount > 0) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly isEnabled = () => {\n return (\n this.props.context.request.user.isAuthenticated &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n );\n };\n\n private async _applyLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty apply button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: Number.parseFloat(this.state.dollarsApplied.toString()) });\n this.setState({\n isFetchingLoyaltyCard: true\n });\n }\n\n private async _removeLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty remove button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: 0 });\n this.setState({\n dollarsApplied: 0\n });\n }\n\n private _onInputChange(event: React.ChangeEvent): void {\n const value = event.currentTarget.value;\n this.setState({ dollarsApplied: value.length > 0 ? Number(value) : Number.parseFloat(value), isFetchingLoyaltyCard: false });\n }\n\n private _onBlur(event: React.FocusEvent): void {\n const num = Number.parseFloat(event.currentTarget.value).toFixed(2);\n const element = document.getElementById(`${this.props.id}-label`) as HTMLInputElement;\n if (element && num) {\n element.value = num;\n this.setState({ dollarsApplied: Number.parseFloat(num) });\n }\n }\n\n private _updateLoyalty(): void {\n if (this.props.moduleState.isDisabled && this.isEnabled()) {\n this._updateEstimate();\n this.props.moduleState.onUpdating();\n }\n }\n\n private _updateEstimate(): void {\n const card = this.props.data.loyaltyCard.result;\n const checkout = this.props.data.checkout.result;\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n const channelConfig = this.props.context.request.channel;\n if (card && card.CardNumber && cart && channelConfig) {\n const currencyCode = channelConfig.Currency || '';\n const loyalPointsRequest = createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput(cart.Id, card.CardNumber, currencyCode);\n\n // @ts-expect-error\n // Due to bug 23214358, this is getting improperly cached. Need to turn on cache bypass for now to work around issue\n loyalPointsRequest._query.options.bypassCache = 'get';\n\n callActionOrExecute(loyalPointsRequest, this.props.context.actionContext)\n .then(async points => {\n this.props.context.actionContext.update(\n new GetLoyaltyTransactionEstimationInput(this.props.context.request.apiSettings),\n points\n );\n const newMaxPoints = points.MaxCurrencyValueOfLoyaltyPoints ?? this._defaultLoyaltyPoints;\n\n // If points are already applied, ensure you don't apply more points than max\n if (checkout && checkout.loyaltyAmount > newMaxPoints) {\n await checkout.updateLoyaltyAmount({ newAmount: newMaxPoints });\n }\n\n this.setState({ dollarsApplied: newMaxPoints, isFetchingLoyaltyCard: false });\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n this.props.context.actionContext.telemetry.debug('Error getting Loyalty Point Redemption Estimate');\n });\n }\n }\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutLoyalty;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow, ICheckoutLoyaltyViewProps } from './checkout-loyalty';\n\nconst AddCheckoutLoyalty: React.FC = ({\n heading,\n cardNumber,\n drawer,\n rewardPoints,\n loyaltyAmountContainer,\n appliedLoyaltyAmountContainer,\n loyaltyAmountLabel,\n loyaltyAmountInput,\n loyaltyAmountApplyButton,\n showAppliedAmount,\n loyaltyAmountAppliedText,\n loyaltyAmountAppliedPrice,\n loyaltyAmountRemoveButton\n}) => {\n return (\n <>\n {heading}\n {cardNumber}\n \n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\n return (\n \n {rewardPoint.title}\n {rewardPoint.availablePointsText}\n {rewardPoint.activePoints}\n {rewardPoint.expiringPointsText}\n {rewardPoint.expiringPoints}\n \n );\n })}\n \n \n {loyaltyAmountLabel}\n {loyaltyAmountInput}\n {loyaltyAmountApplyButton}\n {showAppliedAmount && (\n \n {loyaltyAmountAppliedText}\n {loyaltyAmountAppliedPrice}\n {loyaltyAmountRemoveButton}\n \n )}\n \n \n );\n};\n\nconst ShowCheckoutLoyalty: React.FC = ({ heading, coveredAmountText, amount }) => {\n return (\n <>\n {heading}\n {coveredAmountText}\n {amount}\n \n );\n};\n\nconst CheckoutLoyaltyView: React.FC = props => {\n const { checkoutLoyalty, checkoutErrorRef, alert, viewState, showLoyalty, addLoyalty } = props;\n\n return (\n \n {alert}\n {viewState.isShowLoyalty && }\n {viewState.isShowAddLoyalty && }\n \n );\n};\n\nexport default CheckoutLoyaltyView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyInput {\n className: string;\n type: string;\n value: string | number;\n min: number;\n max: number;\n ariaValueMax: number;\n ariaValueMin: number;\n ariaValueNow: number;\n id: string;\n step: string;\n onChange(event: React.ChangeEvent): void;\n onBlur(event: React.FocusEvent): void;\n}\n\nconst AdressInput: React.FC = ({\n className,\n type,\n value,\n min,\n max,\n step,\n ariaValueMax,\n ariaValueMin,\n ariaValueNow,\n onChange,\n onBlur,\n id\n}) => (\n \n);\n\nexport default AdressInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyLabelProps {\n className: string;\n text: string;\n htmlFor: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @param root0.htmlFor\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyLabel: React.FC = ({ className, text, htmlFor }) => {\n return (\n \n );\n};\n\nexport default CheckoutLoyaltyLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyTextProps {\n className: string;\n text?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyText: React.FC = ({ className, text }) => {\n if (!text) {\n return null;\n }\n\n return {text};\n};\n\nexport default CheckoutLoyaltyText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutTermsAndConditionsData } from './checkout-terms-and-conditions.data';\nimport { ICheckoutTermsAndConditionsProps } from './checkout-terms-and-conditions.props.autogenerated';\nimport CheckboxComponent from './components/checkout-terms-and-conditions.check-box';\nimport ErrorMessageComponent from './components/checkout-terms-and-conditions.error-message';\nimport ErrorTitleComponent from './components/checkout-terms-and-conditions.error-title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutTermsAndConditionsModuleProps\n extends ICheckoutTermsAndConditionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutTermsAndConditions {\n termsAndConditionAcceptance: INodeProps;\n checkBox: React.ReactNode;\n description: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsError {\n error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsViewState {\n isError: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutTermsAndConditionsViewProps extends ICheckoutTermsAndConditionsProps<{}> {\n checkoutTermsAndConditions: IModuleProps;\n isTermsAccepted: boolean;\n errorMessageData: string;\n viewState: ICheckoutTermsAndConditionsViewState;\n termsAndConditionsContent: ICheckoutTermsAndConditions;\n errorMessage?: ICheckoutTermsAndConditionsError;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutTermsAndConditions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutTermsAndConditions extends React.Component {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isTermsAccepted: boolean = true;\n\n @observable private errorMessage?: string;\n\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get isShowButtons(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\n }\n\n @computed get isAutoSave(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\n }\n\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\n const { showCheckbox } = this.props.config;\n return !showCheckbox;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\n async () => {\n this.isTermsAccepted =\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutTermsAndConditions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutTermsAndConditions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutTermsAndConditionsModuleProps,\n nextState: ICheckoutTermsAndConditionsViewState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady, hasError },\n config: { className }\n } = this.props;\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\n const isError = hasError;\n const isShowContent = !isReady;\n const isShowSelected = !hasError && isReady;\n\n const viewProps = {\n ...this.props,\n ...this.state,\n isTermsAccepted: this.isTermsAccepted,\n errorMessageData: this.errorMessage,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isError,\n isShowSaveButton: isShowContent && this.isShowButtons,\n isShowEditButton: isShowSelected && this.isShowButtons,\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\n },\n checkoutTermsAndConditions: {\n moduleProps: this.props,\n className: classname('ms-checkout-terms-and-conditions', className)\n },\n termsAndConditionsContent: this.getTermsAndConditions(),\n errorMessage: this.getErrorMessage(),\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSubmit,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onChange: this.onChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\n\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\n const {\n moduleState: { isReady },\n config: { showCheckbox, description }\n } = this.props;\n const isDisabled = isReady && !this.isAutoSave;\n const isTermsAndConditionAccepted = this.isTermsAccepted;\n const { checkboxAriaLabel } = this.props.resources;\n return {\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\n checkBox: showCheckbox && (\n \n ),\n description: (\n \n )\n };\n };\n\n @action\n private readonly init = async (): Promise => {\n const {\n data,\n config: { showCheckbox }\n } = this.props;\n\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(true);\n this.isTermsAccepted = true;\n } else if (showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(false);\n this.isTermsAccepted = false;\n }\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\n });\n };\n\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\n return (\n \n {cancelBtnLabel}\n \n );\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\n return (\n \n {editBtnLabel}\n \n );\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Terms and conditions onEdit is called.');\n\n this.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\n\n if (!this.isTermsAccepted) {\n if (this.isAutoSave) {\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n } else {\n this.setError(this.props.resources.errorMessage);\n this.props.moduleState.setHasError(true);\n }\n } else {\n this.clearError();\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Terms and conditions onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\n if (!isTermsAccepted) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onChange = async (event: React.ChangeEvent) => {\n const checked = event.target.checked;\n this.isTermsAccepted = checked;\n\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\n }\n\n if (this.isAutoSave) {\n await this.onSubmit();\n }\n };\n}\n\nexport default CheckoutTermsAndConditions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutTermsAndConditions,\n ICheckoutTermsAndConditionsError,\n ICheckoutTermsAndConditionsViewProps\n} from './checkout-terms-and-conditions';\n\nconst TermsAndCondition: React.FC = ({ termsAndConditionAcceptance, checkBox, description }) => {\n return (\n \n {checkBox}\n {description}\n \n );\n};\n\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\n return (\n \n {title}\n {message}\n \n );\n};\n\nconst CheckoutTermsAndConditionsView: React.FC = props => {\n const {\n checkoutTermsAndConditions,\n checkoutErrorRef,\n viewState,\n termsAndConditionsContent,\n errorMessage,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isError && errorMessage && }\n \n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutTermsAndConditionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\n isChecked: boolean;\n ariaLabel?: string;\n disabled: boolean;\n id?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.ariaLabel\n * @param root0.disabled\n * @param root0.telemetryContent\n * @param root0.onChange\n * @param root0.id\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\n isChecked,\n ariaLabel,\n disabled,\n telemetryContent,\n onChange,\n id\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n \n \n );\n};\n\nexport default CheckoutTermsAndConditionsCheckbox;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { CartCheckout } from '../../../common/checkout';\n\nexport const OPERATIONS = {\n PayCard: 201,\n PayGiftCertificate: 214,\n PayLoyalty: 207,\n PayCustomerAccount: 202\n};\n\nexport default async (\n ctx: IActionContext,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n): Promise => {\n return CartCheckout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\n};\n","module.exports = React;","module.exports = ReactDOM;"],"names":["showAdditionalFields","onApplyHandler","onApplyGiftCard","async","event","preventDefault","onChangeNumberHandler","onEnterGiftCardNumber","value","target","replace","RegExp","onChangePinHandler","onEnterGiftCardPin","onChangeExpHandler","onEnterGiftCardExp","getForm","options","errorMessage","inputRef","inputPinRef","inputExpRef","giftCardNumber","giftCardPin","giftCardExp","supportExternalGiftCard","additionalFields","disableAddGiftCard","resources","applyGiftCardButton","giftCardFormLabel","giftCardNumberLabel","giftCardPinLabel","giftCardExpLabel","giftCardAlertLabel","giftCardPinPlaceholderText","giftCardExpPlaceholderText","formProps","className","classnames","onSubmit","tag","label","React","id","inputPinLabel","inputExpLabel","alertFieldLabel","alert","Alert","role","assertive","fade","includeAlertClass","isOpen","inputNumber","ref","type","onChange","inputPin","placeholder","inputExp","applyButton","Button","onClick","disabled","showGiftCardPinInput","showGiftCardExpInput","pin","expirationDate","pinAndExpirationDate","inputProps","inputNumProps","inputPinProps","inputExpProps","onRemoveHandler","onRemoveGiftCard","giftCard","Id","getItem","getFormattedPrice","canRemove","enteredGiftCardLabel","giftCardAvailableBalanceLabel","removeGiftCardButton","balance","Balance","CardCurrencyCode","giftCardLast4Digit","substr","selectedGiftCard","removeButton","itemProps","getList","giftCards","length","listProps","list","map","title","SupportedGiftCardType","CheckoutGiftCard","constructor","state","isFetchingGiftCard","init","this","props","moduleState","onEdit","onCancel","isRequired","isEnabled","status","data","checkout","result","giftCardExtends","onReady","isPaymentVerificationRedirection","onSkip","couldPaidByGiftCard","cart","checkoutCart","undefined","TotalAmount","context","request","user","isAuthenticated","app","config","giftCardSupported","External","shouldBeEnabledForGuest","onUpdating","handleCancelOrSubmit","hasSelectedItem","price","currencyCode","cultureFormatter","formatCurrency","enterGiftCardNumber","setState","clearError","enterGiftCardPin","enterGiftCardExp","setError","telemetry","error","debug","setHasError","removeGiftCard","checkoutState","applyGiftCard","trim","giftCardTypes","getGiftCardTypes","giftCardType","isPinRequired","IsPinRequired","isExpRequired","IsExpirationDateRequired","tenderTypeId","PaymentMethodId","getGiftCard","addGiftCard","additionalProperties","Pin","ExpirationDate","TenderTypeId","Promise","resolve","input","current","focus","findGiftcardTenderTypes","tenderTypes","operationId","giftcardType","matchedTenderTypes","Internal","filter","tenderType","OperationId","ConnectorId","Error","noBalanceError","invalidCardInfoError","invalidCardTypeError","noCardPinError","noCardExpError","supportedGiftCardType","getTenderTypesAsync","callerContext","actionContext","queryResultSettings","catch","internalGiftcardTenderTypes","OPERATIONS","PayGiftCertificate","externalGiftcardTenderTypes","includes","Both","month","Number","parseInt","split","year","getGiftCardAsync","then","activeGiftCard","emptyInputError","duplicatedCodeError","invalidCodeError","some","card","resolveCardTypesAsync","CardType","GiftCard","loyaltyAmount","reduce","count","getLoyaltyAmount","getGiftCardTotalAmount","requestFormData","query","pv","componentDidMount","when","isDataReady","shouldComponentUpdate","nextProps","nextState","render","isReady","shouldPayGiftCard","moduleClassName","classname","viewProps","checkoutGiftCardProps","moduleProps","showGiftCard","TitleCompoent","form","renderView","__decorate","computed","observer","withModuleState","From","Node","SelectedGiftCard","GiftCardList","item","key","AddResource","ShowResource","Module","binding","modules","dataActions","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","sanitizedActionPath","dataAction","default","prototype","RegistrationId","registerSanitizedActionPath","window","__bindings__","viewDictionary","cn","CheckoutDeliveryOptions","super","selectedItemId","deliveryOptions","isLoading","retailMultiplePickUpOptionEnabled","checkoutErrorRef","isSelectDefaultOptionEnabled","useDefaultDeliveryOption","canShip","cartDeliveryMode","getSavedDeliveryOption","loadDeliveryOptions","hasInvoiceLine","getCartLinesForShipping","isDeliveryModeExists","deliveryMode","find","deliveryOption","Code","getDeliveryOptionSelected","selectedItem","typeName","priceFree","get","DeliveryOption","description","DescriptionComponent","Description","PriceComponent","CustomerContextualPrice","freePriceText","getErrorMessage","errorMessageTitle","CheckoutDeliveryOptionsError","ErrorTitleComponent","message","ErrorMessageComponent","getDeliveryOptionList","index","code","radioButton","RadioButtonComponent","isChecked","ariaSetSize","ariaPosInSet","ariaLabel","onDeliveryOptionChange","telemetryContent","getSaveButton","saveBtnLabel","color","onSave","getEditButton","editBtnLabel","getCancelButton","cancelBtnLabel","information","updateShouldCollapsePaymentSection","newShouldCollapsePaymentSection","updateCartDeliverySpecification","savedDeliveryOption","cartLinesForShipping","DeliveryMode","deliveryModeId","updateCartDeliverySpecificationInput","shippingAddress","channelDeliveryOptionConfig","onPending","response","genericErrorMessage","setIsCancellable","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","CartLines","cartLine","PickupDeliveryModeCodes","getDeliveryOptions","cartState","cartId","originalDeliveryMode","shippingCartLines","hasShippingDeliveryLines","clearCartLinesDeliveryInformation","channelDeliveryOptionConfiguration","deliveryOptionFilter","filterDeliveryModeOption","FilterDeliveryModeOption","None","FilterOutNonCarrierDeliveryMode","getDeliveryOptionsAsync","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","deliveryOptionsNotFound","updateHasCartDeliveryMode","newHasCartDeliveryMode","getStoredDeliveryOptions","isExpressCheckoutApplied","isExpressPaymentAppliedInCartPage","currentTarget","getTelemetryObject","telemetryPageName","friendlyName","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","expressPaymentDetailsFromCartPage","isExpressCheckoutAppliedInCartPage","reaction","shouldEnableCheckoutErrorDisplayMessaging","checkoutError","errorLocation","ErrorLocation","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","featureState","feature","Name","IsEnabled","isUpdating","hasError","isError","isShowList","isShowSelected","deliveryOptionAriaLabel","deliveryOptionsData","ErrorComponent","errorMessageData","viewState","isShowSaveButton","hasExternalSubmitGroup","isShowEditButton","isShowCancelButton","DeliveryOptionsList","deliveryOptionSelected","waiting","Waiting","saveButton","editButton","cancelButton","observable","action","DeliveryOptionList","DeliveryOptionSelected","payLoad","getPayloadObject","TelemetryConstant","DeliveryOptions","attributes","getTelemetryAttributes","checked","contentAction","etext","CheckoutExpressPaymentContainer","_getItems","slots","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","text","shouldHideExpressPaymentContainer","shippingAddressFromExpressCheckout","isExpressPaymentModulesReady","items","extensionPropertyKey","paymentTenderType","isModuleReady","BooleanValue","checkoutExpressPaymentSectionLoadingMessage","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","WaitingComponent","_renderMsdyn365Text","headerProps","Msdyn365","editProps","requestContext","ContainerItemsComponent","isLoadingClassName","CheckoutGuestProfile","email","emailAddress","emailOnCart","ReceiptEmail","emailAddressFromExpressCheckout","updateGuestProfile","updateHasGuestCheckoutEmail","newHasGuestCheckoutEmail","isEmailValid","rowEmail","hasCheckoutError","EmailRegex","defaultRegex","test","updateGuestCheckoutEmail","newGuestCheckoutEmail","submitEmail","guestCheckoutEmail","_setErrorMessage","isExpressAddressApplied","showContactInfo","getShowContactInfo","canEdit","addContactInfo","getAddContactInfo","hasEmailError","canSubmit","canCancel","ShowContactInfo","showInfoProps","AddContactInfo","addFormProps","submitButton","inputGroupProps","emailLabel","emailErrortext","onInputChange","onInputChangeHandler","CheckoutLoyalty","_defaultLoyaltyPoints","loyaltyCard","CardNumber","LoyaltyCardId","updateLoyaltyCardId","loyaltyCardNumber","warning","shouldPayLoyalty","_clearError","_dialogToggleRef","_applyLoyaltyPoints","bind","_removeLoyaltyPoints","_onInputChange","_onBlur","dollarsApplied","maxDollars","isFetchingLoyaltyCard","loyaltyTransactionEstimation","MaxCurrencyValueOfLoyaltyPoints","_updateEstimate","_updateLoyalty","isShowLoyalty","isShowAddLoyalty","checkoutLoyalty","showLoyalty","heading","Heading","headingTag","loyaltyHeadingText","coveredAmountText","TextComponent","loyaltyCoveredAmountText","amount","addLoyalty","drawer","Drawer","toggleButtonText","_drawerHeader","openGlyph","closeGlyph","glyphPlacement","cardNumber","rewardPoints","RewardPoints","points","_renderPointSection","availablePointsLabel","expiringLoyaltyPointsLabel","loyaltyAmountContainer","appliedLoyaltyAmountContainer","loyaltyAmountLabel","LabelComponent","payWithLoyaltyAmountLabel","htmlFor","loyaltyAmountInput","InputComponent","onBlur","step","min","max","ariaValueMax","ariaValueMin","ariaValueNow","loyaltyAmountApplyButton","applyCheckoutLoyaltyPaymentText","isNaN","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","removeCheckoutLoyaltyPaymentText","innerRef","point","RewardPointId","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","ActivePoints","toString","expiringPointsText","expiringPoints","PointsExpiringSoon","updateLoyaltyAmount","newAmount","parseFloat","num","toFixed","element","document","getElementById","isDisabled","channelConfig","Currency","loyalPointsRequest","createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput","_query","bypassCache","callActionOrExecute","update","GetLoyaltyTransactionEstimationInput","apiSettings","newMaxPoints","exception","AddCheckoutLoyalty","rewardPoint","ShowCheckoutLoyalty","paymentInstrumentModuleId","CheckoutPlainContainer","getItems","getActiveChildModuleStates","childIds","getModule","hasModuleState","forEach","isPaymentSectionContainer","ArrayExtensions","hasElements","childId","shouldEnableSinglePaymentAuthorizationCheckout","amountDue","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","isSkipped","onContainerReady","isCollapse","shouldSubmitContainer","shouldCollapsePaymentSection","shouldTriggerPaymentWithPlaceOrder","updateIsPaymentSectionContainerHasError","newIsPaymentSectionContainerHasError","isCheckoutCallFailed","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","componentDidUpdate","enableControl","width","hasInitialized","container","hidden","loading","LoadingComponent","initialized","skipped","ready","updating","pending","isPending","ItemComponent","CheckoutTermsAndConditions","isTermsAccepted","handleTextChange","getTermsAndConditions","showCheckbox","isAutoSave","isTermsAndConditionAccepted","checkboxAriaLabel","termsAndConditionAcceptance","checkBox","CheckboxComponent","MsDyn365","updateTermsAndConditionsAcceptance","cancelBtnAriaLabel","saveBtnAriaLabel","editBtnAriaLabel","newIsTermsAndConditionAccepted","updateIsTermsAndConditionsChecked","newIsTermsAndConditionChecked","showControlButtons","defaultTermsAndConditionAcceptedValue","isShowContent","isShowButtons","checkoutTermsAndConditions","termsAndConditionsContent","TermsAndCondition","ErrorMessage","attribute","PayCard","PayLoyalty","PayCustomerAccount","module","exports","ReactDOM"],"sourceRoot":""}