{"version":3,"file":"static/js/a15b3b0844c3d84e21a2.bundle.js","mappings":"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","sources":["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"],"sourcesContent":["/*!\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, StringExtensions } 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 const channelConfig = this.props.context.request.channel;\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 const channelConfig = this.props.context.request.channel;\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.clearError();\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 const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\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, EnabledPaymentsForOBO } 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 this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\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, EnabledPaymentsForOBO } 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 getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\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 - this.getCustomerAccountAmount;\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 if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.GiftCard === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout gift card 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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { EmailRegex, StringExtensions } 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 const emailAddressFromExpressCheckout = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\n const isEmailFromExpressCheckoutDifferent =\n !StringExtensions.isNullOrEmpty(emailAddressFromExpressCheckout) &&\n emailAddressFromExpressCheckout !== this.state.email;\n\n if (\n isExpressCheckoutApplied &&\n (!this.props.data.checkout.result?.isExpressAddressApplied || isEmailFromExpressCheckoutDifferent)\n ) {\n await this.submitEmail(emailAddressFromExpressCheckout);\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 const customerAccountInformation = this.props.data.accountInformation?.result;\n\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n let updateEmail: string = '';\n\n // if obo enabled and profile selected, we need to send the order status to obo user not store manager.\n if (Msdyn365.isOboRequest(this.props.context.request)) {\n updateEmail =\n customerAccountInformation && customerAccountInformation.Email !== undefined\n ? customerAccountInformation.Email\n : this.setErrorMsgOboUserEmailEmpty();\n } else {\n updateEmail = this.state.email;\n }\n\n const emailOnCart = checkoutState?.checkoutCart.cart.ReceiptEmail;\n const email = hasInvoiceLine\n ? this.props.context.request.user.emailAddress ?? ''\n : emailOnCart ??\n (checkoutState?.isExpressCheckoutApplied && !StringExtensions.isNullOrEmpty(checkoutState.emailAddressFromExpressCheckout)\n ? checkoutState.emailAddressFromExpressCheckout\n : undefined) ??\n updateEmail;\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 if (email) {\n await this.updateGuestProfile(email);\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: true });\n } else {\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\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 setErrorMsgOboUserEmailEmpty = (): string => {\n // Clear prior error\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n return '';\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, EnabledPaymentsForOBO } 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 (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.Loyalty === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout loyalty module wont render');\n return null;\n }\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 const channelConfig = this.props.context.request.channel;\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 const channelConfig = this.props.context.request.channel;\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 if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\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"],"names":["CheckoutDeliveryOptions","React","constructor","props","super","selectedItemId","deliveryOptions","isLoading","retailMultiplePickUpOptionEnabled","checkoutErrorRef","init","async","this","moduleState","onEdit","isSelectDefaultOptionEnabled","undefined","onCancel","onSubmit","status","config","useDefaultDeliveryOption","canShip","cartDeliveryMode","getSavedDeliveryOption","loadDeliveryOptions","_this$props$data$chec","data","checkout","result","checkoutCart","hasInvoiceLine","getCartLinesForShipping","length","isDeliveryModeExists","deliveryMode","find","deliveryOption","Code","getDeliveryOptionSelected","selectedItem","context","telemetry","error","id","typeName","priceFree","resources","price","get","channelConfig","request","channel","DeliveryOption","className","description","DescriptionComponent","Object","assign","Description","PriceComponent","CustomerContextualPrice","freePriceText","currencyCode","Currency","getErrorMessage","errorMessageTitle","CheckoutDeliveryOptionsError","tag","role","title","ErrorTitleComponent","message","ErrorMessageComponent","errorMessage","getDeliveryOptionList","count","map","index","code","radioButton","RadioButtonComponent","isChecked","value","ariaSetSize","ariaPosInSet","ariaLabel","onChange","onDeliveryOptionChange","telemetryContent","getSaveButton","saveBtnLabel","Button","color","disabled","onClick","onSave","getEditButton","editBtnLabel","getCancelButton","cancelBtnLabel","setError","setHasError","onUpdating","clearError","_this$props$data$chec2","information","updateShouldCollapsePaymentSection","newShouldCollapsePaymentSection","_this$props$data$chec3","updateCartDeliverySpecification","savedDeliveryOption","_this$props$data$chec4","onReady","cartLinesForShipping","DeliveryMode","deliveryModeId","trim","checkoutState","updateCartDeliverySpecificationInput","shippingAddress","channelDeliveryOptionConfig","onPending","then","response","_response$errorDetail","errorDetails","LocalizedMessage","StringExtensions","isNullOrEmpty","genericErrorMessage","setIsCancellable","catch","pickupDeliveryModeCode","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","cart","CartLines","filter","cartLine","_this$channelDelivery","PickupDeliveryModeCodes","getDeliveryOptions","_this$props$data$chec5","cartState","cartId","Id","originalDeliveryMode","shippingCartLines","hasShippingDeliveryLines","clearCartLinesDeliveryInformation","channelDeliveryOptionConfiguration","deliveryOptionFilter","filterDeliveryModeOption","FilterDeliveryModeOption","None","FilterOutNonCarrierDeliveryMode","getDeliveryOptionsAsync","callerContext","actionContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","_unused","deliveryOptionsNotFound","_this$props$data$chec6","_this$props$data$chec7","updateHasCartDeliveryMode","newHasCartDeliveryMode","isPaymentVerificationRedirection","_this$props$data$chec8","getStoredDeliveryOptions","_this$props$data$chec9","_this$props$data$chec10","_this$props$data$chec11","_this$props$data$chec12","_this$props$data$chec13","_this$props$data$chec14","isExpressCheckoutApplied","isExpressPaymentAppliedInCartPage","event","currentTarget","getTelemetryObject","telemetryPageName","friendlyName","_this$props$data$cart","_this$props$data$cart2","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","_this$expressPaymentD","_this$expressPaymentD2","expressPaymentDetailsFromCartPage","isExpressCheckoutAppliedInCartPage","_this$props$data$chec19","when","isDataReady","reaction","_this$props$data$chec15","_this$props$data$chec16","_this$props$data$chec17","_this$props$data$chec18","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec20","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec21","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","shouldComponentUpdate","nextProps","nextState","state","render","_this$props$data$chan","_this$props$data$feat","featureState","feature","Name","IsEnabled","isReady","isUpdating","hasError","isError","isShowList","isShowSelected","deliveryOptionAriaLabel","viewProps","_objectSpread","deliveryOptionsData","alert","ErrorComponent","errorMessageData","viewState","isShowSaveButton","hasExternalSubmitGroup","isShowEditButton","isShowCancelButton","moduleProps","classname","DeliveryOptionsList","list","deliveryOptionSelected","waiting","Waiting","saveButton","editButton","cancelButton","renderView","__decorate","observable","computed","action","withModuleState","observer","DeliveryOptionList","_ref","Node","key","DeliveryOptionSelected","_ref2","Module","ref","payLoad","getPayloadObject","TelemetryConstant","DeliveryOptions","attributes","getTelemetryAttributes","checked","type","contentAction","etext","name","CheckoutExpressPaymentContainer","moduleClassName","_getItems","slots","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","text","target","shouldHideExpressPaymentContainer","shippingAddressFromExpressCheckout","componentDidMount","isExpressPaymentModulesReady","items","item","includes","extensionPropertyKey","paymentTenderType","isModuleReady","BooleanValue","setState","_checkout$result","_checkout$result2","checkoutExpressPaymentSectionLoadingMessage","user","isOBORequest","EnabledPaymentsForOBO","ExpressPayment","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","WaitingComponent","_renderMsdyn365Text","headerProps","Msdyn365","editProps","requestContext","ContainerItemsComponent","isLoadingClassName","SupportedGiftCardType","CheckoutGiftCard","_this","isFetchingGiftCard","giftCardNumber","giftCardPin","giftCardExp","inputRef","inputPinRef","inputExpRef","isRequired","isEnabled","giftCards","giftCardExtends","onSkip","couldPaidByGiftCard","TotalAmount","isAuthenticated","app","giftCardSupported","External","shouldBeEnabledForGuest","handleCancelOrSubmit","hasSelectedItem","getFormattedPrice","arguments","cultureFormatter","formatCurrency","enterGiftCardNumber","enterGiftCardPin","enterGiftCardExp","debug","removeGiftCard","applyGiftCard","giftCardTypes","getGiftCardTypes","giftCardType","isPinRequired","IsPinRequired","isExpRequired","IsExpirationDateRequired","tenderTypeId","PaymentMethodId","giftCard","getGiftCard","addGiftCard","additionalProperties","Pin","ExpirationDate","TenderTypeId","Promise","resolve","input","current","focus","findGiftcardTenderTypes","tenderTypes","operationId","giftcardType","matchedTenderTypes","Internal","tenderType","OperationId","ConnectorId","Error","noBalanceError","invalidCardInfoError","invalidCardTypeError","noCardPinError","noCardExpError","supportedGiftCardType","getTenderTypesAsync","internalGiftcardTenderTypes","OPERATIONS","PayGiftCertificate","externalGiftcardTenderTypes","Both","month","Number","parseInt","split","year","getGiftCardAsync","activeGiftCard","Balance","emptyInputError","duplicatedCodeError","invalidCodeError","some","card","resolveCardTypesAsync","CardType","GiftCard","loyaltyAmount","customerAccountAmount","reduce","getLoyaltyAmount","getGiftCardTotalAmount","getCustomerAccountAmount","showAdditionalFields","additionalFields","shouldPayGiftCard","supportExternalGiftCard","checkoutGiftCardProps","showGiftCard","TitleCompoent","giftCardFormLabel","getList","canRemove","onRemoveGiftCard","form","getForm","onEnterGiftCardNumber","onEnterGiftCardPin","onEnterGiftCardExp","onApplyGiftCard","disableAddGiftCard","From","formProps","label","inputPinLabel","inputExpLabel","inputProps","inputNumProps","inputPinProps","inputExpProps","inputNumber","inputPin","inputExp","applyButton","showGiftCardPinInput","showGiftCardExpInput","alertFieldLabel","SelectedGiftCard","itemProps","selectedGiftCard","removeButton","GiftCardList","_ref3","listProps","_ref4","_objectWithoutProperties","_excluded","AddResource","_ref5","ShowResource","_ref6","onApplyHandler","preventDefault","onChangeNumberHandler","replace","RegExp","onChangePinHandler","onChangeExpHandler","options","applyGiftCardButton","giftCardNumberLabel","giftCardPinLabel","giftCardExpLabel","giftCardAlertLabel","giftCardPinPlaceholderText","giftCardExpPlaceholderText","classnames","Alert","assertive","fade","includeAlertClass","isOpen","placeholder","onRemoveHandler","_giftCard$Id","getItem","enteredGiftCardLabel","giftCardAvailableBalanceLabel","removeGiftCardButton","balance","CardCurrencyCode","giftCardLast4Digit","substr","CheckoutGuestProfile","email","emailAddress","_this$props$data$acco","_this$props$context$r","customerAccountInformation","accountInformation","updateEmail","Email","setErrorMsgOboUserEmailEmpty","emailOnCart","ReceiptEmail","emailAddressFromExpressCheckout","isEmailValid","updateGuestProfile","updateHasGuestCheckoutEmail","newHasGuestCheckoutEmail","rowEmail","hasCheckoutError","EmailRegex","defaultRegex","test","updateGuestCheckoutEmail","newGuestCheckoutEmail","submitEmail","_this$inputRef$curren","guestCheckoutEmail","_setErrorMessage","isEmailFromExpressCheckoutDifferent","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","Loyalty","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","loyalPointsRequest","createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput","_query","bypassCache","callActionOrExecute","_points$MaxCurrencyVa","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","_checkoutResult$check","_cart$TotalAmount","shouldSubmitContainer","shouldCollapsePaymentSection","shouldTriggerPaymentWithPlaceOrder","updateIsPaymentSectionContainerHasError","newIsPaymentSectionContainerHasError","isCheckoutCallFailed","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","componentDidUpdate","enableControl","width","hasInitialized","container","hidden","loading","LoadingComponent","initialized","skipped","ready","updating","pending","isPending","ItemComponent","Loading","CheckoutTermsAndConditions","isTermsAccepted","handleTextChange","getTermsAndConditions","showCheckbox","isAutoSave","isTermsAndConditionAccepted","checkboxAriaLabel","termsAndConditionAcceptance","checkBox","CheckboxComponent","MsDyn365","_data$checkout$result","updateTermsAndConditionsAcceptance","cancelBtnAriaLabel","saveBtnAriaLabel","editBtnAriaLabel","newIsTermsAndConditionAccepted","updateIsTermsAndConditionsChecked","newIsTermsAndConditionChecked","showControlButtons","defaultTermsAndConditionAcceptedValue","isShowContent","isShowButtons","checkoutTermsAndConditions","termsAndConditionsContent","TermsAndCondition","ErrorMessage","attribute","PayCard","PayLoyalty","PayCustomerAccount"],"sourceRoot":""}