{"version":3,"file":"static/js/7.83627686d87cb0e8d72f.chunk.js","mappings":"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","sources":["webpack://lds-commerce/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://lds-commerce/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/address-detail-item.tsx?d9a2","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-date.tsx?bd12","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-grp.tsx?3a15","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-radio.tsx?045f","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://lds-commerce/./src/modules/checkout-delivery-options/components/get-line-items.tsx?e389","webpack://lds-commerce/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://lds-commerce/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://lds-commerce/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://lds-commerce/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://lds-commerce/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://lds-commerce/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://lds-commerce/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://lds-commerce/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://lds-commerce/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://lds-commerce/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://lds-commerce/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://lds-commerce/./src/modules/checkout/checkout.tsx?6737","webpack://lds-commerce/./src/modules/checkout/checkout.view.tsx?e4cc","webpack://lds-commerce/./src/modules/checkout/components/alert.tsx?cb1e","webpack://lds-commerce/./src/modules/checkout/components/get-invoice-payment-summary.tsx?9549","webpack://lds-commerce/./src/modules/checkout/components/get-line-items.tsx?92f8","webpack://lds-commerce/./src/modules/checkout/components/get-order-summary.tsx?4a81","webpack://lds-commerce/./src/modules/checkout/components/guided-card.tsx?58e0","webpack://lds-commerce/./src/modules/checkout/components/guided-form.tsx?f018","webpack://lds-commerce/./src/modules/checkout/components/place-order-button.tsx?9b41","webpack://lds-commerce/./src/modules/checkout/methods/checkout.ts?7b6b","webpack://lds-commerce/./src/modules/checkout/methods/place-order.ts?5aa0","webpack://lds-commerce/./src/invoice-summary-lineitem.tsx?5f61","webpack://lds-commerce/./src/order-summary-lineitem.tsx?8a98"],"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 {\n Address,\n CartLine,\n DeliveryOption,\n DeliveryPreferenceType,\n LineDeliverySpecification\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n GetDeliveryOptionsForCartLineAddressInput,\n getDeliveryOptionsForCartLineAddress,\n QueryResultSettingsProxy,\n StringExtensions,\n DeliveryOptionsCartLineAddress,\n ArrayExtensions\n} 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';\nimport groupBy from 'lodash/groupBy';\n\nimport { IImageSettings } from '@msdyn365-commerce/core';\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';\nimport { AddressDetailItemFunctionComponent } from './components/address-detail-item';\nimport CheckoutCartLineDeliveryDate from './components/checkout-cartLine-delivery-date';\nimport CheckoutCartLineDeliveryOptionsRadio from './components/checkout-cartLine-delivery-options-radio';\nimport { GetLineItems } from './components/get-line-items';\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 ICartLineSelectedDeliveryOption {\n cartLineId: string;\n selectedDeliveryOption: string;\n requestDeliveryDate?: string;\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 checkoutCartLineGroupDeliveryOptions?: React.ReactNode;\n enableCheckoutCartLineDeliveryOptions?: boolean;\n cartLineImages?: React.ReactNode;\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 @observable private groupDeliveryOptions: DeliveryOptionsCartLineAddress[] = [];\n\n @observable private cartLineSelectedDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\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 private readonly isMultipleAddressShippingEnabled?: boolean;\n\n private cartLinesDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\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 this.isMultipleAddressShippingEnabled = this.props.config.multipleAddressShippingEnabled;\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?.cartLinesWithShippingAddress,\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 checkoutCartLineGroupDeliveryOptions: this.getCheckoutCartLineGroupDeliveryOptions(),\n enableCheckoutCartLineDeliveryOptions: this.isMultipleAddressShippingEnabled,\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 if (this.isMultipleAddressShippingEnabled) {\n this.getCartLinesSavedDeliveryOption();\n }\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 const getAriaLabelWithPrice = get(deliveryOption, 'ShippingChargeAmount', 0);\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 if (this.isMultipleAddressShippingEnabled) {\n this.updateCartLinesDeliverySpecification();\n } else {\n await this.updateCartDeliverySpecification(this.selectedItemId);\n }\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 getCartLinesSavedDeliveryOption = (): void => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n cartLinesForShipping.forEach(cartLine => {\n const deliveryMode = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n if (!cartLine.LineId || StringExtensions.isNullOrEmpty(deliveryMode)) {\n return;\n }\n const cartLineId = cartLine?.LineId;\n const existingCartLineSelectedDeliveryOption = this.cartLinesDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryMode;\n } else {\n if (cartLineId !== undefined) {\n this.cartLinesDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryMode });\n }\n }\n });\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 @action\n private readonly updateCartLinesDeliverySpecification = async (): Promise => {\n if (!this.cartLineSelectedDeliveryOptions || !this.cartLineSelectedDeliveryOptions.length) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n const checkoutCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n\n this.cartLineSelectedDeliveryOptions.forEach(group => {\n const address = checkoutCartLines?.find(cartLine => cartLine.LineId === group.cartLineId)?.ShippingAddress;\n const lineSpec = {\n LineId: group.cartLineId,\n DeliverySpecification: {\n DeliveryModeId: group.selectedDeliveryOption,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ShipToAddress,\n DeliveryAddress: address\n }\n };\n lineSpecs.push(lineSpec);\n });\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinesDeliverySpecification({\n lineDeliverySpecifications: lineSpecs\n });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n const cartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n if (cartLines !== undefined && cartLines.length > 0) {\n cartLines?.forEach(cartLine => {\n const cartLineId = cartLine.LineId?.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n cartLine.RequestedDeliveryDate = existingCartLineSelectedDeliveryOption.requestDeliveryDate\n ? new Date(existingCartLineSelectedDeliveryOption.requestDeliveryDate)\n : undefined;\n }\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: cartLines });\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 const cartLinesForShipping = this.props.data.checkout.result?.cartLinesWithShippingAddress;\n\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\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 onCartLineDeliveryOptionChange = (\n event: React.ChangeEvent,\n cartLines: CartLine[],\n cartLineId?: string\n ) => {\n const deliveryModeId = event.currentTarget.value;\n if (cartLineId !== undefined) {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n console.log('existingCartLineSelectedDeliveryOption');\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n console.log('cartLineSelectedDeliveryOptions object if existing');\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n console.log('cartLineSelectedDeliveryOptions object new line id');\n }\n return;\n }\n\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n });\n };\n\n private readonly onCartLineRequestDeliveryDateChange = (event: React.ChangeEvent, cartLines: CartLine[]) => {\n const deliveryDate = event.currentTarget.value;\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.requestDeliveryDate = deliveryDate;\n } else {\n const deliveryModeId = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption: deliveryModeId,\n requestDeliveryDate: deliveryDate\n });\n }\n });\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 private readonly getCheckoutCartLineGroupDeliveryOptions = (): React.ReactNode => {\n const { resources, config } = this.props;\n const shippingCartLines = this.getCartLinesForShipping();\n if (!ArrayExtensions.hasElements(shippingCartLines) || !ArrayExtensions.hasElements(this.groupDeliveryOptions)) {\n return null;\n }\n const imageSettings = this.getImageSettings(config.imageSettings);\n const requestDeliveryDateEnabled = !config.enableRequestDeliveryDate && true;\n return (\n
\n {this.groupDeliveryOptions.map((groupDeliveryOption: DeliveryOptionsCartLineAddress, index) => {\n const cartLineId = groupDeliveryOption.cartLineIds !== undefined ? groupDeliveryOption.cartLineIds[0] : '';\n const cartLine1 = shippingCartLines.find(cartLine => cartLineId === cartLine?.LineId?.toString() ?? '');\n const cartLine = shippingCartLines.filter(\n cartLine => groupDeliveryOption && (cartLineId === cartLine?.LineId?.toString() ?? '')\n );\n if (groupDeliveryOption !== undefined) {\n const selectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLine[0].LineId\n )?.selectedDeliveryOption;\n return (\n
\n
\n \n
\n
\n
\n \n {resources.cartLineGroupDeliveryOptionsLabel}\n \n \n {resources.cartLineGroupDeliveryOptionsText}\n \n {requestDeliveryDateEnabled ? (\n \n ) : null}\n \n
\n {groupDeliveryOption.cartLineIds?.map(cartLineId => {\n const cartLine1 = shippingCartLines.find(\n cartLine => cartLineId === cartLine?.LineId?.toString() ?? ''\n );\n return (\n \n );\n })}\n
\n
\n );\n } else {\n return null;\n }\n })}\n
\n );\n };\n\n private readonly getGroupDeliveryOptions = async (): 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\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 cartLinesForShipping: CartLine[] = [];\n if (ArrayExtensions.hasElements(shippingCartLines)) {\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.ShippingAddress?.RecordId);\n cartLinesForShipping.push(getGroupByDelivery(shippingCartLines));\n console.log('running delivery option for all lines');\n }\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 inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n const response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n if (response && response.length > 0) {\n this.groupDeliveryOptions = response;\n console.log('groupDeliveryOptions');\n }\n if (this.groupDeliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartLinesDeliveryOptions.length !== 0) {\n this.cartLineSelectedDeliveryOptions = this.cartLinesDeliveryOptions;\n this.cartLinesDeliveryOptions = [];\n this.onReady();\n } else {\n this.onUpdating();\n this.groupDeliveryOptions.forEach(group => {\n const selectedDeliveryOption =\n group.deliveryOptions.length > 0 && group.deliveryOptions[0].Code !== undefined\n ? group.deliveryOptions[0].Code\n : '';\n group.cartLineIds?.forEach(cartLineId => {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\n });\n });\n }\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n }\n this.isLoading = false;\n };\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\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 enableCheckoutCartLineDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton,\n checkoutCartLineGroupDeliveryOptions\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 && !enableCheckoutCartLineDeliveryOptions && (\n \n )}\n {viewState.isShowList && enableCheckoutCartLineDeliveryOptions && checkoutCartLineGroupDeliveryOptions}\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 IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { labelText, value } = props;\n\n const className = `ms-checkout-delivery-options__cart-line-grp__item__header__address`;\n return (\n \n {labelText}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\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 { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport React, { useState } from 'react';\n\nexport interface ICheckoutCartLineDeliveryDateProps {\n className?: string;\n isDisabled?: boolean;\n minRangeValue?: string;\n maxRangeValue?: string;\n validationErrorForRange?: string;\n fallbackPattern?: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n disclaimerText?: string;\n heading?: string;\n checkBoxLabel?: string;\n onChangeMinValue?: void;\n id?: string;\n cartLines?: CartLine[];\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n}\n\nconst CheckoutCartLineDeliveryDate: React.FC = ({\n className,\n isDisabled,\n fallbackPattern,\n ariaLabel,\n telemetryContent,\n onChangeMinValue,\n checkBoxLabel,\n disclaimerText,\n heading,\n cartLines,\n onChange\n}) => {\n const [selectedDate, setSelectedDate] = useState('');\n const [isDateEnabled, setIsDateEnabled] = useState(false);\n // State to store today's date\n const [minDate, setMinDate] = useState('');\n\n // Update minDate state with today's date on component mount\n useState(() => {\n const today = new Date().toISOString().split('T')[0];\n setMinDate(today);\n });\n\n const handleDateChange = (event: React.FocusEvent) => {\n const selectedValue = event.target.value;\n // Check if the selected date is allowed\n if (selectedValue >= minDate) {\n setSelectedDate(selectedValue);\n console.log('Selected date is allowed.', selectedValue);\n } else {\n console.log('Selected date is not allowed.');\n }\n\n if (cartLines !== undefined) {\n onChange(event, cartLines);\n }\n };\n\n const handleCheckboxChange = () => {\n setIsDateEnabled(!isDateEnabled);\n };\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n \n {checkBoxLabel}\n
\n {disclaimerText}\n
\n {heading}\n \n
\n
\n );\n};\n\nexport default CheckoutCartLineDeliveryDate;\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 ICheckoutDeliveryOptionsGrpRadioButtonProps {\n className: string;\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 CheckoutDeliveryOptionsGrpRadioButton: React.FC = ({\n className,\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 const deliveryOptionRef: React.RefObject = React.createRef();\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsGrpRadioButton;\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';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport DescriptionComponent from './checkout-delivery-options.description';\nimport RadioButtonComponent from './checkout-cartLine-delivery-options-grp';\n\nexport interface ICheckoutCartLineDeliveryOptionsRadioButtonProps {\n className: string;\n moduleId: string;\n ariaSetSize: number;\n priceFree: string;\n ariaPosInSet: number;\n selectedItemId: string;\n cartLines: CartLine[];\n deliveryOptions: DeliveryOption[];\n typeName: string;\n context: ICoreContext>;\n ariaLabel?: string;\n value?: string;\n cartLineId?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[], cartLineId?: string): void;\n}\n\n/**\n * Represents a radio button component for checkout cart line delivery options.\n * @param {Object} props - The component props.\n * @param {boolean} props.isChecked - Indicates whether the radio button is checked.\n * @param {string} props.value - The value of the radio button.\n * @param {number} props.ariaSetSize - The total number of radio buttons in the set.\n * @param {number} props.ariaPosInSet - The position of the radio button in the set.\n * @param {string} props.ariaLabel - The ARIA label for the radio button.\n * @param {string} props.telemetryContent - The telemetry content for the radio button.\n * @param {Function} props.onChange - The event handler for when the radio button is changed.\n * @returns {JSX.Element} The rendered radio button component.\n */\nconst CheckoutCartLineDeliveryOptionsRadio: React.FC = ({\n className,\n moduleId,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n deliveryOptions,\n priceFree,\n selectedItemId,\n typeName,\n context,\n cartLines,\n cartLineId,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n console.log(attributes);\n const channelConfig = context.actionContext.requestContext.channel;\n const count = deliveryOptions.length;\n if (count === 0) {\n return null;\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n onChange(event, cartLines, cartLineId);\n },\n [onChange, cartLines, cartLineId]\n );\n // const selectedDeliveryOptionItem = deliveryOptions.length > 0 ? deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n const deliveryClassName = `${className}__radio-btn-grp`;\n const optionClassName = `${deliveryClassName}-opt`;\n const response = deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => (\n
\n \n \n \n
\n ));\n\n return
{response}
;\n};\n\nexport default CheckoutCartLineDeliveryOptionsRadio;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n className?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description, className }) => {\n if (!description) {\n return null;\n }\n\n const descClassName = StringExtensions.isNullOrEmpty(className) ? 'ms-checkout-delivery-options__description' : className;\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 { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { CartLine, DeliveryOption, ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\nimport CheckoutCartLineDeliveryOptionsRadio from './checkout-cartLine-delivery-options-radio';\n\nexport interface ICheckoutDeliveryOptionsLineItemsProps {\n className?: string;\n moduleId: string;\n selectedItemId: string;\n context: Msdyn365.ICoreContext;\n typeName: string;\n cartLines: CartLine[];\n imageSettings: Msdyn365.IImageSettings;\n showShippingChargesForLineItems: boolean;\n resources: ICheckoutDeliveryOptionsLineItemsResources;\n deliveryOptions: DeliveryOption[];\n ariaSetSize: number;\n ariaPosInSet: number;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n currencyCode?: string;\n products?: SimpleProduct[];\n catalogs?: ProductCatalog[];\n gridSettings?: Msdyn365.IGridSettings;\n cartLineId?: string;\n key?: string;\n}\n\nexport interface ICheckoutDeliveryOptionsLineItemsResources {\n quantityDisplayStringLabel: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n productDimensionTypeAmount: string;\n configString: string;\n discountStringText: string;\n shippingChargesText: string;\n priceFree: string;\n ariaLabel: string;\n changeButtonText?: string;\n deliveryMethodLabel?: string;\n}\n\nconst _getLineItemComponent = (\n context: Msdyn365.ICoreContext,\n cartLine: CartLine,\n product: SimpleProduct,\n moduleId: string,\n typeName: string,\n showShippingChargesForLineItems: boolean,\n imageSettings: Msdyn365.IImageSettings,\n resources: ICheckoutDeliveryOptionsLineItemsResources,\n currencyCode: string,\n catalogs?: ProductCatalog[],\n gridSettings?: Msdyn365.IGridSettings,\n cartLineId?: string\n): JSX.Element | undefined => {\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return (\n \n );\n};\n\nconst _getProduct = (productId: number, products: SimpleProduct[]): SimpleProduct | undefined => {\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n};\n\nexport const GetLineItems: React.FC = (props: ICheckoutDeliveryOptionsLineItemsProps) => {\n const products = props.products;\n const lineClassName = props.className;\n const lineItemClassName = `${lineClassName}-item`;\n const currencyCode = props.currencyCode;\n const changeText = props.resources.changeButtonText;\n const [showDeliveryOption, setShowDeliveryOption] = useState(false);\n\n const handleClick = () => {\n setShowDeliveryOption(!showDeliveryOption);\n };\n if (!props.cartLines || props.cartLines.length === 0 || !products || products.length === 0 || currencyCode === undefined) {\n return null;\n }\n const deliveryCode = props.deliveryOptions.find(option => option.Code === props.selectedItemId);\n const payload = getPayloadObject(TelemetryEvent.UpdateInCart, props.telemetryContent!, changeText !== undefined ? changeText : '', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\n const response = props.cartLines.map(cartLine => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId, products);\n if (!product) {\n return null;\n }\n return (\n
\n {_getLineItemComponent(\n props.context,\n cartLine,\n product,\n props.moduleId,\n props.typeName,\n props.showShippingChargesForLineItems,\n props.imageSettings,\n props.resources,\n currencyCode,\n props.catalogs,\n props.gridSettings\n )}\n
{props.resources.deliveryMethodLabel}
\n
\n {deliveryCode?.Description}\n \n
\n {showDeliveryOption ? (\n \n ) : null}\n
\n );\n });\n\n return
{response}
;\n};\nexport default GetLineItems;\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 { 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 config,\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 && !config.disableAddLoyaltyComponent\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { AsyncResultStatus, Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\nimport {\n updateLineDeliverySpecificationsAsync,\n validateForCheckoutAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n DeliveryPreferenceType,\n LineDeliverySpecification,\n SimpleProduct,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getAvailabilitiesForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n validateCartLinesInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n Waiting\n} from '@msdyn365-commerce-modules/utilities';\nimport { ErrorCode, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport { action, computed, get, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutData } from './checkout.data';\nimport { ICheckoutHeadingData, ICheckoutProps } from './checkout.props.autogenerated';\nimport AlertComponent from './components/alert';\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\nimport { getLineItems, ILineItems } from './components/get-line-items';\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\nimport GuidedFormComponent from './components/guided-form';\nimport PlaceOrderButtonComponent from './components/place-order-button';\nimport placeOrder from './methods/place-order';\nimport { focusOnCheckoutError, setCheckoutErrors } from '../../checkout-errors';\nimport { AsyncResultStatusCode, IExpressPaymentDetails } from '../../common';\n\nexport * from './components/get-line-items';\nexport * from './components/get-order-summary';\n\n/**\n * Device type.\n */\ntype DeviceType = 'Mobile';\n\n/**\n * The Checkout state.\n */\ninterface ICheckoutState {\n errorMessage: string;\n isValidationPassed: boolean;\n isPlaceOrderLoading?: boolean;\n isPlaceOrderClicked?: boolean;\n}\n\n/**\n * Known action error failure states\n */\nexport const enum ActionErrorStatus {\n Timeout = 'Timeout',\n HookTimeout = 'Hook Timeout',\n ServiceUnavailable = 'Service Unavailable'\n}\n\n/**\n * The Checkout view props.\n * @extends ICheckoutProps\n */\nexport interface ICheckoutViewProps extends ICheckoutProps {\n className: string;\n canShow?: boolean;\n isEmptyCart?: boolean;\n isConsentGiven?: boolean;\n hasError?: boolean;\n isPaymentVerificationRedirection?: boolean;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n cartStatus?: string;\n isMobile?: boolean;\n isEditorialMode?: boolean;\n backToShoppingUrl?: string;\n editCartLink?: string;\n hasSalesOrder: boolean;\n hasInvoiceLine?: boolean;\n\n checkoutProps: IModuleProps;\n headerProps: INodeProps;\n bodyProps: INodeProps;\n mainProps: INodeProps;\n mainControlProps: INodeProps;\n sideProps: INodeProps;\n sideControlFirstProps: INodeProps;\n sideControlSecondProps: INodeProps;\n termsAndConditionsProps: INodeProps;\n\n guidedForm?: React.ReactNode;\n title?: React.ReactNode;\n loading?: React.ReactNode;\n alert?: React.ReactNode;\n orderSummary?: IOrderSummary;\n invoicePaymentSummary?: IInvoicePaymentSummary;\n lineItems?: ILineItems;\n placeOrderButton?: React.ReactNode;\n termsAndConditions?: React.ReactNode;\n keepShoppingButton?: React.ReactNode;\n orderConfirmation?: React.ReactNode;\n\n checkoutExpressPaymentContainer?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n * The checkout module props interface.\n */\nexport interface ICheckoutModuleProps extends ICheckoutProps, IModuleStateProps {}\n\nconst expressPaymentSectionClassName = 'msc-express-payment-container';\n\n/**\n *\n * CheckoutContainer component.\n * @extends {React.Component}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass Checkout extends React.PureComponent {\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\n return this.props.data.checkout?.status;\n }\n\n @computed get isEmptyCart(): boolean {\n if (this.isEditorialMode) {\n // Editorial mode: Ignore empty cart\n return false;\n }\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\n }\n\n @computed get hasError(): boolean {\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\n }\n\n @computed get isEditorialMode(): boolean {\n return this.props.context.request.params.isEditor;\n }\n\n @computed get canPlaceOrder(): boolean {\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\n\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n const disableForOBO = Msdyn365.isOboRequest(this.props.context.request) && !this.isPaidOffByCustomerAccount;\n\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\n return (\n this.props.moduleState.isReady &&\n (isTermsAndConditionAccepted === undefined || isTermsAndConditionAccepted || shouldEnableSinglePaymentAuthorizationCheckout) &&\n (this.state.errorMessage === '' ||\n shouldEnableSinglePaymentAuthorizationCheckout ||\n (this.props.data.checkout.result?.isPaymentVerificationRedirection ?? false)) &&\n !(shouldEnableSinglePaymentAuthorizationCheckout && disableForOBO)\n );\n }\n\n @computed get isPaidOffByCustomerAccount(): boolean {\n const amountDue = this.props.data.checkout.result?.checkoutCart.cart.TotalAmount ?? 0;\n const customerAccountAmount = this.props.data.checkout.result?.customerAccountAmount ?? 0;\n\n return customerAccountAmount === amountDue;\n }\n\n @computed get isCartReady(): boolean {\n return (\n !!this.props.data.checkout.result?.checkoutCart?.cart &&\n this.props.data.customerInformation.status !== 'LOADING' &&\n this.props.data.featureState.status !== 'LOADING'\n );\n }\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n const properties =\n this.props.data.checkout?.result?.checkoutCart?.cart?.ExtensionProperties?.find(\n property => property.Key === 'expressPaymentDetails'\n )?.Value?.StringValue ?? '';\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n public state: ICheckoutState = {\n errorMessage: '',\n isValidationPassed: false,\n isPlaceOrderLoading: false,\n isPlaceOrderClicked: false\n };\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public componentDidMount(): void {\n const {\n resources: { genericErrorMessage }\n } = this.props;\n\n when(\n () => this.asyncResultStatus !== AsyncResultStatusCode.LOADING,\n async () => {\n if (this.expressPaymentDetailsFromCartPage) {\n const {\n email,\n tenderLine,\n tokenizedPaymentCard,\n paymentTenderType: paymentTenderTypeFromCartPage,\n isExpressCheckoutAppliedInCartPage,\n isExpressAddressAppliedInCartPage,\n cardPaymentAcceptResult,\n address\n } = this.expressPaymentDetailsFromCartPage;\n\n this.props.data.checkout.result?.updateExpressCheckoutDetails({\n newEmailAddressFromExpressCheckout: email ?? '',\n newTenderLine: tenderLine,\n newTokenizedPaymentCard: tokenizedPaymentCard,\n newPaymentTenderType: paymentTenderTypeFromCartPage,\n newIsExpressCheckoutApplied: isExpressCheckoutAppliedInCartPage,\n newIsExpressAddressApplied: isExpressAddressAppliedInCartPage,\n newCardPaymentAcceptResult: cardPaymentAcceptResult\n });\n\n if (isExpressAddressAppliedInCartPage && address) {\n this.props.data.checkout.result?.updateBillingAddressFromExpressCheckout({\n newBillingAddressFromExpressCheckout: address\n });\n this.props.data.checkout.result?.updateShippingAddressFromExpressCheckout({\n newShippingAddressFromExpressCheckout: address\n });\n } else {\n void this._saveShippingAndBillingAddress(tokenizedPaymentCard);\n }\n\n this.props.data.checkout.result?.checkoutCart.updateExtensionProperties({\n newExtensionProperties: [\n {\n Key: 'expressPaymentDetails',\n Value: { StringValue: '' }\n }\n ]\n });\n }\n }\n );\n\n when(\n () => this.hasError,\n () => {\n this.setState({\n errorMessage: genericErrorMessage\n });\n this.props.context.telemetry.error('Failed to get cart');\n }\n );\n\n when(\n () => {\n return this.isEmptyCart;\n },\n () => {\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\n }\n );\n\n when(\n () => this.isCartReady,\n () => {\n this.validateForCheckout();\n }\n );\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\n async isReady => {\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isReady &&\n !this.props.data.checkout.result?.redirectAdditionalContext &&\n (!this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.props.data.checkout.result?.isPaymentVerificationRedirection)\n ) {\n if (!this.state.isPlaceOrderLoading) {\n this.setState({ isPlaceOrderLoading: true });\n }\n\n this.props.telemetry.information(\n 'Call onPlaceOrder as reaction when isPaymentSectionContainerReady is updated for single auth payment.'\n );\n\n await this.onPlaceOrder();\n\n // If 3D authentication redirection, don't update isPlaceOrderLoading\n if (!this.props.data.checkout.result.isPaymentVerificationRequired) {\n this.setState({ isPlaceOrderLoading: false });\n }\n }\n }\n );\n\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isPaymentSectionContainerHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isPaymentSectionContainerHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isBillingAddressHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.data.checkout.result?.updateIsBillingAddressHasError({ newIsBillingAddressHasError: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isBillingAddressHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isBillingAddressHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n // Reaction to enable place order button when redirection is true for new checkout flow.\n reaction(\n () => this.canPlaceOrder,\n async () => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\n newIsPlaceOrderEnabledInRedirection: true\n });\n\n this.props.telemetry.information(\n 'Set isPaymentVerificationRedirection to true as reaction when canPlaceOrder is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when canPlaceOrder is updated to true but isPaymentVerificationRedirection is false for single auth payment.'\n );\n this.props.telemetry.information(\n `isOBORequest is ${Msdyn365.isOboRequest(this.props.context.request)} and canPlaceOrder is ${\n this.canPlaceOrder\n }.`\n );\n }\n } else {\n this.props.telemetry.information('No reaction when canPlaceOrder is updated to false or not single auth payment.');\n }\n }\n );\n\n // Reaction to update the error message when there is a checkout error.\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n const checkoutErrorLocation: boolean = checkoutError?.errorLocation === ErrorLocation.Checkout;\n // If there is an Error in CheckoutPaymentInstrument module, checkout error location will be updated.\n const checkoutPaymentErrorLocation: boolean =\n checkoutError?.errorCode === ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment\n ? checkoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument\n : checkoutErrorLocation;\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n checkoutError &&\n checkoutError.errorMessage &&\n (checkoutErrorLocation ? checkoutErrorLocation : checkoutPaymentErrorLocation)\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n this.props.data.checkout.result?.shouldFocusOnCheckoutError &&\n this.state.errorMessage\n ) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n\n // eslint-disable-next-line complexity -- ignore the complexity.\n public render(): JSX.Element {\n const {\n moduleState,\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\n resources,\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const { errorMessage } = this.state;\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\n const checkoutClass = classnames('ms-checkout', className);\n const allCheckoutInformation = this.getSlotItems('checkoutInformation');\n\n // @ts-expect-error - check the key of slot\n const checkoutInformation = allCheckoutInformation?.filter(info => !info?.key.includes('express-payment'));\n\n // @ts-expect-error - check the key of slot\n const checkoutExpressPaymentContainer = allCheckoutInformation?.find(info => info?.key.includes('express-payment'));\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n const isMobile =\n this.props.context.request &&\n this.props.context.request.device &&\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\n\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n\n const termsAndConditions =\n this.props.slots.termsAndConditions && this.props.slots.termsAndConditions.length > 0 && this.props.slots.termsAndConditions[0];\n\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout?.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isExpressCheckoutApplied = this.props.data.checkout?.result?.isExpressCheckoutApplied ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasCartDeliveryMode = this.props.data.checkout?.result?.hasCartDeliveryMode;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasGuestCheckoutEmail = this.props.data.checkout?.result?.hasGuestCheckoutEmail;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isTermsAndConditionAccepted = this.props.data.checkout?.result?.isTermsAndConditionAccepted;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isPaymentVerificationRedirection = this.props.data.checkout?.result?.isPaymentVerificationRedirection ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldEnableCheckoutErrorDisplayMessaging =\n this.props.data.checkout?.result?.shouldEnableCheckoutErrorDisplayMessaging ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldFocusOnCheckoutError = this.props.data.checkout?.result?.shouldFocusOnCheckoutError;\n\n let hasExpressPaymentContainer = false;\n\n if (\n typeof window !== 'undefined' &&\n (document?.getElementsByClassName(expressPaymentSectionClassName) as HTMLCollectionOf)[0]?.style.display === ''\n ) {\n hasExpressPaymentContainer = true;\n }\n\n let viewProps: ICheckoutViewProps = {\n ...this.props,\n className: checkoutClass,\n checkoutErrorRef: this.checkoutErrorRef,\n isEmptyCart: this.isEmptyCart,\n isConsentGiven,\n hasError: this.hasError,\n isPaymentVerificationRedirection: this.props.data.checkout?.result?.isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n hasSalesOrder:\n this.props.data.checkout &&\n this.props.data.checkout.result !== undefined &&\n this.props.data.checkout.result.salesOrder !== undefined,\n hasInvoiceLine,\n cartStatus: this.cartStatus,\n isMobile,\n backToShoppingUrl,\n editCartLink,\n isEditorialMode: this.isEditorialMode,\n orderConfirmation:\n this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0\n ? this.props.slots.orderConfirmation[0]\n : undefined,\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\n headerProps: { className: 'ms-checkout__head' },\n bodyProps: { className: 'ms-checkout__body' },\n mainProps: { className: 'ms-checkout__main' },\n mainControlProps: { className: 'ms-checkout__main-control' },\n sideProps: { className: hasExpressPaymentContainer ? 'ms-checkout__has-express-side' : 'ms-checkout__side' },\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\n title: checkoutHeading && this.renderMsdyn365Text(checkoutHeading),\n checkoutExpressPaymentContainer\n };\n\n if (!isConsentGiven && isAuthenticated) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else if (this.isLoading()) {\n viewProps = {\n ...viewProps,\n loading: \n };\n } else if (this.hasError) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else {\n viewProps = {\n ...viewProps,\n alert: errorMessage && ,\n canShow: true,\n guidedForm: checkoutInformation ? (\n \n ) : (\n undefined\n ),\n orderSummary: getOrderSummary(this.props),\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\n placeOrderButton: (\n \n ),\n termsAndConditions,\n keepShoppingButton: backToShoppingUrl && (\n \n {backToShopping}\n \n )\n };\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @computed public get asyncResultStatus(): AsyncResultStatus | undefined {\n const isLoading = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.LOADING);\n if (isLoading) {\n return AsyncResultStatusCode.LOADING;\n }\n\n const isSuccess = Object.values(this.props.data).every(data => get(data, 'status') === AsyncResultStatusCode.SUCCESS);\n if (isSuccess) {\n return AsyncResultStatusCode.SUCCESS;\n }\n\n const isFailed = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.FAILED);\n if (isFailed) {\n return AsyncResultStatusCode.FAILED;\n }\n\n return undefined;\n }\n\n /**\n * Renders heading.\n * @param checkoutHeading - The checkout heading.\n * @returns React node.\n */\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): 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 public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutHeading!.text = event.target.value);\n\n /**\n * Checks if cart is loading.\n * @returns True if is loading, false otherwise.\n */\n private readonly isLoading = (): boolean => {\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\n };\n\n /**\n * Get slot items.\n * @param key - The slot key.\n * @returns React node or undefined.\n */\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\n const { slots } = this.props;\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\n };\n\n /**\n * Trigger the payment section container submit when placing order.\n */\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\n this.setState({ isPlaceOrderLoading: true });\n\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder({\n newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder\n });\n };\n\n /**\n * On place order.\n * @returns Void promise.\n */\n private readonly onPlaceOrder = async (): Promise => {\n const {\n resources: { checkoutOutOfStockErrorMessage },\n context: {\n actionContext,\n app: {\n config: { enableStockCheck = false }\n }\n },\n slots: { orderConfirmation },\n data: { checkout, products }\n } = this.props;\n\n this.props.telemetry.information('Checkout onPlaceOrder is called.');\n this.setState({ isPlaceOrderClicked: true });\n\n // If hasInvoiceLine is true, no inventory check\n if (\n !this.props.data.checkout.result?.checkoutCart.hasInvoiceLine &&\n enableStockCheck &&\n (await this.isOverMaxQuantity((await checkout).checkoutCart.cart, await products))\n ) {\n this.setState({\n errorMessage: checkoutOutOfStockErrorMessage\n });\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\n } else {\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\n\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\n\n await placeOrder(\n actionContext,\n this.props.data.checkout.result,\n this.props.data.products.result,\n !hasOrderConfirmation,\n updatedCartVersion,\n this.props.data.checkout.result?.isPaymentVerificationRedirection\n ).catch(error => {\n this.handleCheckoutError(error);\n });\n\n await checkout.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: false });\n }\n };\n\n /**\n * Update receipt email address for electronic cart line.\n * @param newGuestCheckoutEmail - The guest checkout email.\n * @returns The updated cart version.\n */\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\n cartLine => cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode\n );\n\n let updatedCartVersion: number | undefined;\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\n return {\n LineId: line.LineId,\n DeliverySpecification: {\n DeliveryModeId: emailDeliveryModeCode,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\n }\n };\n });\n\n await updateLineDeliverySpecificationsAsync(\n { callerContext: this.props.context.actionContext },\n (await this.props.data.checkout).checkoutCart.cart.Id,\n lineDeliverySpecifications\n )\n .then(updatedCart => {\n updatedCartVersion = updatedCart.Version;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\n });\n }\n\n return updatedCartVersion;\n };\n\n /**\n * Return true if any product in the cart is over its max quantity.\n * @param cart -- The checkout cart.\n * @param products -- The checkout products.\n * @returns - Is any product in the cart is over max quantity.\n */\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\n let isOverMaxQuantity = false;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n await getAvailabilitiesForCartLineItems(\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\n this.props.context.actionContext\n )\n .then(productInventoryInformation => {\n const productsThatShouldValidateInventory: IProductInventoryInformation[] = [];\n\n cart.CartLines?.map(cartline => {\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\n\n // If product is non-stocked or cartline is electronic delivery, then no inventory check\n const isStockedItem = cartlineProduct?.Behavior?.IsStockedProduct;\n const isEmailDelivery =\n cartline.DeliveryMode && cartline.DeliveryMode !== '' ? cartline.DeliveryMode === emailDeliveryModeCode : false;\n const shouldSkipInventoryCheck = !isStockedItem || isEmailDelivery;\n if (!shouldSkipInventoryCheck && ArrayExtensions.hasElements(productInventoryInformation)) {\n const foundProductAvailability = productInventoryInformation.find(productInventory => {\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n if (foundProductAvailability) {\n productsThatShouldValidateInventory.push(foundProductAvailability);\n }\n }\n });\n\n const cartLinesInventoryValidation = validateCartLinesInventory(\n cart.CartLines ?? [],\n productsThatShouldValidateInventory,\n this.props.context.actionContext,\n products,\n emailDeliveryModeCode\n );\n\n // If is invalid then exceeds the available quantity\n isOverMaxQuantity = !cartLinesInventoryValidation.isValid;\n return isOverMaxQuantity;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\n });\n\n return isOverMaxQuantity;\n };\n\n /**\n * Gets active child in module state.\n * @returns - The module state manager collection.\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 /**\n * On container ready.\n */\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Checkout onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n\n /**\n * Redirects to cart page.\n * @param notFoundEditCartLinkMessage - Not found edit cart link message.\n */\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n if (window && editCartLink) {\n window.location.assign(editCartLink);\n } else {\n this.setState({\n errorMessage: this.props.resources.genericErrorMessage\n });\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\n }\n };\n\n /**\n * Validates for checkout.\n * @param retry - Retry flag.\n */\n private readonly validateForCheckout = (retry: boolean = true): void => {\n const notFoundEditCartLinkMessage = \"Cart doesn't pass validation, but no editCartLink found\";\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\n const { Id, Version } = cart;\n if (this._shouldValidateQuantityLimits()) {\n if (Version && Id) {\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\n .then((result: CartLineValidationResults) => {\n if (result.ValidationFailuresByCartLines?.length !== 0) {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n } else {\n this.setState({ isValidationPassed: true });\n }\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to validate Cart');\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n const cartState = this.props.data.checkout.result?.checkoutCart;\n cartState\n ?.refreshCart({})\n .then(() => {\n this.validateForCheckout(false);\n })\n .catch((refreshError: Error) => {\n this.props.telemetry.warning(refreshError.message);\n this.props.telemetry.debug('Unable to refresh Cart');\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n } else {\n this.setState({ isValidationPassed: true });\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 _shouldValidateQuantityLimits = (): boolean => {\n const featureStatuses = this.props.data.featureState.result;\n const isECommerceQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n\n if (isECommerceQuantityLimitsFeatureEnabledInHq) {\n return true;\n }\n\n const isOrderQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature')\n ?.IsEnabled || false;\n\n if (!isOrderQuantityLimitsFeatureEnabledInHq) {\n return false;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n const customerInfo = this.props.data.customerInformation.result;\n const isB2BSite = isChannelTypeB2B(this.props.context.actionContext.requestContext);\n\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings =\n defaultOrderQuantityLimitsFeatureConfig === 'all' ||\n (customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && isB2BSite) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !isB2BSite)));\n\n return isOrderQuantityLimitsFeatureEnabledInSiteSettings ?? false;\n } else {\n const cartConfiguration = this.props.data.cartConfiguration?.result;\n return !(cartConfiguration?.IgnoreOrderSettings ?? false);\n }\n };\n\n /**\n * Save the address as Shipping and Billing address.\n * @param tokenizedPaymentCard - Tokenized payment card.\n */\n private readonly _saveShippingAndBillingAddress = async (tokenizedPaymentCard?: TokenizedPaymentCard): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n // For Paypal, the address returned in TokenizedPaymentCard will be used as both shipping and billing address.\n if (checkoutState && tokenizedPaymentCard && tokenizedPaymentCard.Zip) {\n const address: Address = this._getAddressFromTokenizedPaymentCard(tokenizedPaymentCard);\n\n await checkoutState.updateBillingAddressFromExpressCheckout({ newBillingAddressFromExpressCheckout: address });\n await checkoutState.updateShippingAddressFromExpressCheckout({ newShippingAddressFromExpressCheckout: address });\n }\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly _getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const address: Address = {\n TwoLetterISORegionName: tokenizedPaymentCard.Country,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone\n };\n\n return address;\n };\n\n /**\n * Handle checkout errors.\n * @param error -- The error on checkout api failure.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly handleCheckoutError = (error: any) => {\n // Here checkout failure message will be shown if there is any error in checkout api except data validation.\n const {\n resources: {\n genericErrorMessage,\n invalidCartVersionErrorMessage,\n missingRequiredCartTenderLinesErrorMessage,\n checkoutApiFailureErrorMessage,\n invoiceCheckoutApiFailureErrorMessage\n },\n context: { actionContext }\n } = this.props;\n const checkoutResult = this.props.data.checkout.result;\n const apiError = error && error.message;\n if (error?.statusCode === 500) {\n const errorMessage = checkoutApiFailureErrorMessage;\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n this.setState({ isPlaceOrderLoading: false });\n return;\n }\n if (checkoutResult && checkoutResult.shouldEnableCheckoutErrorDisplayMessaging) {\n const errorCode = error && error.name ? error.name : '';\n // apiError message will be used if errorcode resource/enums is unavailable\n setCheckoutErrors(errorCode, this.props.resources, !!checkoutResult.isExpressCheckoutApplied, actionContext, apiError);\n } else {\n let errorMessage = genericErrorMessage;\n this.setState({ isPlaceOrderClicked: false });\n\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n errorMessage = invalidCartVersionErrorMessage;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines') {\n errorMessage = missingRequiredCartTenderLinesErrorMessage;\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_ExclusiveCouponCannotBeAppliedWithOtherCoupons') {\n // If api error is not available show generic message\n errorMessage = apiError || genericErrorMessage;\n } else {\n if (error.status === ActionErrorStatus.Timeout || error.status === ActionErrorStatus.ServiceUnavailable) {\n errorMessage = checkoutResult?.checkoutCart.hasInvoiceLine\n ? invoiceCheckoutApiFailureErrorMessage\n : checkoutApiFailureErrorMessage;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n error.data?.AdditionalContext &&\n !this.props.data.checkout.result?.isPaymentVerificationRedirection\n ) {\n return;\n }\n\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n }\n };\n}\n\nexport default Checkout;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutViewProps,\n ILineItem,\n ILineItemDeliveryGroup,\n ILineItems,\n IOrderSummary,\n IPickUpAtStore,\n IEmailDelivery,\n IInvoicePaymentSummary\n} from './index';\n\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => {label};\n\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {pickUpAtStore && }\n {emailDelivery && }\n \n);\n\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\n \n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({\n LineItemDeliveryGroup,\n LineItemList,\n heading,\n lineItems,\n lineItemWraper,\n lineItemWraperIcon\n}) => (\n \n {lineItemWraperIcon}\n {lineItemWraper}\n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {emailDelivery && }\n \n);\n\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const LineItemsComponent: React.FC = ({\n LineItems,\n Header,\n heading,\n editLink,\n itemsForPickup,\n itemsForShip,\n itemsForEmail,\n itemsGroupWithMulitplePickupMode\n}) => (\n \n \n {heading}\n {editLink}\n \n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\n {itemsGroupWithMulitplePickupMode !== undefined\n ? itemsGroupWithMulitplePickupMode.map((item, index) => {\n return ;\n })\n : null}\n \n);\n\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\n
\n {heading}\n
\n {lines && (\n <>\n {lines.subtotal}\n {lines.shipping}\n {lines.otherCharge}\n {lines.tax}\n {lines.totalDiscounts}\n {lines.loyalty}\n {lines.customerAccount}\n {lines.giftCard}\n {lines.orderTotal}\n \n )}\n
\n
\n);\n\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\n
\n {heading}\n
\n {lines && (\n <>\n {lines.invoices}\n {lines.giftCard}\n {lines.loyalty}\n {lines.orderTotal}\n \n )}\n
\n
\n);\n\nconst CheckoutView: React.FC = props => {\n const {\n isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n canShow,\n checkoutProps,\n headerProps,\n hasSalesOrder,\n hasInvoiceLine,\n bodyProps,\n mainProps,\n mainControlProps,\n sideProps,\n sideControlFirstProps,\n sideControlSecondProps,\n termsAndConditionsProps,\n orderConfirmation,\n loading,\n alert,\n title,\n guidedForm,\n orderSummary,\n invoicePaymentSummary,\n lineItems,\n placeOrderButton,\n termsAndConditions,\n keepShoppingButton,\n checkoutExpressPaymentContainer,\n checkoutErrorRef\n } = props;\n\n return (\n \n {!hasSalesOrder && !checkoutExpressPaymentContainer && {title}}\n {!hasSalesOrder && isPaymentVerificationRedirection && shouldEnableSinglePaymentAuthorizationCheckout && !alert && !loading && (\n \n )}\n {!hasSalesOrder && (\n \n {loading}\n {alert}\n {canShow && (\n <>\n \n {checkoutExpressPaymentContainer}\n {checkoutExpressPaymentContainer && {title}}\n {guidedForm}\n {termsAndConditions}\n \n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n {!hasInvoiceLine\n ? orderSummary && \n : invoicePaymentSummary && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n {lineItems && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n )}\n \n )}\n {hasSalesOrder && orderConfirmation}\n \n );\n};\n\nexport default CheckoutView;\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 IAlertProps {\n message: string;\n}\n\nconst CheckoutAlert: React.FC = ({ message }) => (\n

\n {message}\n

\n);\n\nexport default CheckoutAlert;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\nexport interface IInvoicePaymentSummary {\n heading?: React.ReactNode;\n lines?: IInvoiceSummaryLines;\n}\nexport const getInvoicePaymentSummary = (input: ICheckoutProps): IInvoicePaymentSummary => {\n const {\n data: { checkout },\n resources: { totalAmountLabel, invoiceLabel, invoiceSummaryTitle },\n context,\n typeName,\n id,\n telemetry\n } = input;\n\n const checkoutCart = get(checkout, 'result.checkoutCart');\n const cart = get(checkout, 'result.checkoutCart.cart');\n\n return {\n heading:

{invoiceSummaryTitle}

,\n lines: checkoutCart?.hasInvoiceLine\n ? InvoiceSummary({\n orderTotalLabel: totalAmountLabel,\n invoiceLabel,\n cart,\n context,\n typeName,\n telemetry,\n id,\n checkoutState: checkout.result\n })\n : undefined\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\ntype deliveryType = 'pickup' | 'ship' | 'email';\n\nexport interface IPickUpAtStore {\n PickUpAtStore: INodeProps;\n label: React.ReactNode;\n location: React.ReactNode;\n}\n\nexport interface IEmailDelivery {\n EmailDelivery: INodeProps;\n label: React.ReactNode;\n}\n\nexport interface ILineItem {\n LineId: string;\n LineItem: INodeProps;\n item?: React.ReactNode;\n pickUpAtStore?: IPickUpAtStore;\n emailDelivery?: IEmailDelivery;\n}\n\nexport interface ILineItemDeliveryGroup {\n LineItemDeliveryGroup: INodeProps;\n LineItemList: INodeProps;\n heading: React.ReactNode;\n lineItemWraper?: React.ReactNode;\n lineItemWraperIcon?: React.ReactNode;\n lineItems: ILineItem[];\n}\n\nexport interface ILineItems {\n LineItems: INodeProps;\n Header: INodeProps;\n heading: React.ReactNode;\n editLink: React.ReactNode;\n itemsForPickup?: ILineItemDeliveryGroup;\n itemsForShip?: ILineItemDeliveryGroup;\n itemsForEmail?: ILineItemDeliveryGroup;\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\n}\n\nexport const getLineItems = (input: ICheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = input.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const _getDeliveryLocation = (cartLine: CartLine): string => {\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\n return '';\n }\n\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\n });\n\n return locationMatch && locationMatch.OrgUnitName;\n };\n\n const _getProduct = (productId: number): SimpleProduct | undefined => {\n const products = get(input, 'data.products.result') || [];\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n };\n\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\n const {\n id,\n typeName,\n context,\n config: { imageSettings, showShippingChargesForLineItems },\n resources: {\n quantityDisplayString,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n productDimensionTypeAmount,\n configString,\n inputQuantityAriaLabel,\n discountStringText,\n shippingCharges\n },\n context: {\n request: { gridSettings }\n }\n } = input;\n const catalogs = input.data.catalogs?.result;\n if (!product) {\n return;\n }\n\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n const currencyCode = get(input, 'context.request.channel.Currency');\n return (\n \n );\n };\n\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\n const {\n resources: { pickUpAtStoreWithLocationText }\n } = input;\n\n return {\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\n label: {pickUpAtStoreWithLocationText},\n location:
{pickupDeliveryLocation}
\n };\n };\n\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\n const {\n resources: { emailDeliveryText }\n } = input;\n\n return {\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\n label: {emailDeliveryText}\n };\n };\n\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\n return items.map(cartLine => {\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const isPickUp = _getCartPickDeliveryMode(cartLine);\n const isEmailDelivery =\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\n return {\n LineId: cartLine.LineId || '',\n LineItem: { className: 'ms-checkout__line-item' },\n item: _getLineItemComponent(cartLine),\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\n };\n });\n };\n\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode ===\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode === pickupDeliveryModeCode\n : false;\n };\n\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode !==\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode !== pickupDeliveryModeCode\n : false;\n };\n\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\n const {\n resources: { itemLabel, itemsLabel, inStorePickUpLabel, shippingCountCheckoutLineItem }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? shippingCountCheckoutLineItem\n : type === 'pickup'\n ? inStorePickUpLabel\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _countItems = (items: CartLine[]): number => {\n return items.reduce((count, item) => {\n return count + (item.Quantity || 0);\n }, 0);\n };\n\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n if (type === 'ship') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? _getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n } else if (type === 'pickup') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? _getCartPickDeliveryMode(cartLine) : null\n );\n }\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\n };\n\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\n return;\n }\n\n const items = _filterItemsByDiliveryType(type);\n\n if (items.length === 0) {\n return undefined;\n }\n\n const count = _countItems(items);\n const title = _getGroupTitleComponent(count, type);\n\n return {\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n heading:
{title}
,\n lineItems: _getLineItemsComponents(items)\n };\n };\n\n const _getLineItems = (): ILineItems | undefined => {\n const {\n context,\n config: { lineItemsHeading },\n data: { products },\n resources: { editCartText }\n } = input;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\n return undefined;\n }\n\n return {\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\n Header: { className: 'ms-checkout__line-items-header' },\n heading: lineItemsHeading && lineItemsHeading.text && (\n \n ),\n editLink: (\n \n {editCartText}\n \n ),\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\n itemsForShip: _getLineItemsByDeliveryType('ship'),\n itemsForEmail: _getLineItemsByDeliveryType('email'),\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled\n ? _getLineItemsByDeliveryTypeWithMulitplePickupMode()\n : undefined\n };\n };\n\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n const {\n config: { lineItemsHeading }\n } = input;\n if (lineItemsHeading) {\n lineItemsHeading.text = event.target.value;\n }\n };\n\n const _getGroupTitleComponentWithMultiplePickUp = (\n count: number,\n type: deliveryType,\n deliveryMode?: string,\n fulFillmentStoreId?: string\n ): string => {\n const {\n resources: { itemLabel, itemsLabel }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n let pickupDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n pickupDeliveryModeDesc = pickupDeliveryModeDesc\n ? pickupDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\n });\n\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? `(${count} ${suffix})`\n : type === 'pickup'\n ? `${pickupTitle} (${count} ${suffix})`\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\n const groupDelivery = getGroupByDelivery(cart.CartLines);\n const cartLinesGroup: CartLine[] = [];\n const cartLinesGrp: CartLine[][] = [];\n\n // 1) Group by store and pick up mode\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\n // @ts-expect-error\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\n });\n\n Object.keys(cartLinesGroup).forEach(key => {\n const cartLines = cartLinesGroup[key];\n Object.keys(cartLines).forEach(index => {\n const cartLine = cartLines[index];\n cartLinesGrp.push(cartLine);\n });\n });\n\n return cartLinesGrp;\n };\n\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\n return;\n }\n\n const {\n resources: { multiplePickUpLabel, shippingLable }\n } = input;\n\n const items = _filterItemsByMultiplePickupMode();\n\n if (items.length === 0) {\n return undefined;\n }\n\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\n items.map(item => {\n const count = _countItems(item);\n const cartLine = item[0];\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const type: deliveryType =\n cartLine.FulfillmentStoreId && cartLine.DeliveryMode\n ? 'pickup'\n : cartLine.FulfillmentStoreId === '' &&\n cartLine.DeliveryMode === emailDeliveryModeCode &&\n !StringExtensions.isNullOrEmpty(emailDeliveryModeCode)\n ? 'email'\n : 'ship';\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : type === 'ship' ? shippingLable : 'email';\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\n lineItemDeliveryGroup.push({\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n lineItemWraperIcon:
,\n lineItemWraper:
{groupTitle}
,\n heading:
{title}
,\n lineItems: _getLineItemsComponents(item)\n });\n });\n\n return lineItemDeliveryGroup;\n };\n\n return _getLineItems();\n};\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 { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\nexport interface IOrderSummary {\n orderSummaryProps: INodeProps;\n heading?: React.ReactNode;\n lines?: IOrderSummaryLines;\n}\nexport const getOrderSummary = (input: ICheckoutProps): IOrderSummary => {\n const {\n config: { orderSummaryHeading },\n data: { checkout },\n resources: {\n subTotalLabel,\n shippingLabel,\n taxLabel,\n orderTotalLabel,\n loyaltyLabel,\n giftcardLabel,\n totalDiscountsLabel,\n freeText,\n toBeCalculatedText,\n otherCharges,\n customerAccountLabel\n },\n context,\n typeName,\n id,\n telemetry\n } = input;\n\n const checkoutState = get(checkout, 'result');\n const cart = get(checkout, 'result.checkoutCart.cart');\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\n const channelConfiguration = context.request.channel!;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = input.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const isShowOrHideTaxEnabled = context.request.app.config.isEnableShowOrHideSalesTaxECommerceEnabled === true;\n\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n const {\n config: { orderSummaryHeading }\n } = input;\n if (orderSummaryHeading) {\n orderSummaryHeading.text = event.target.value;\n }\n };\n\n return {\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\n heading: orderSummaryHeading && orderSummaryHeading.text && (\n \n ),\n lines: showLineItems\n ? OrderSummary({\n checkoutState,\n cart,\n subTotalLabel,\n shippingLabel,\n taxLabel,\n orderTotalLabel,\n loyaltyLabel,\n giftcardLabel,\n totalDiscountsLabel,\n freeText,\n toBeCalculatedText,\n context,\n typeName,\n id,\n channelConfiguration,\n telemetry,\n otherChargeLabel: otherCharges,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- existing property.\n isTaxIncludedInPrice: cart.IsTaxIncludedInPrice,\n isShowTaxBreakup: isShowOrHideTaxEnabled,\n customerAccountLabel\n })\n : undefined\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Heading as HeadingType } from '@msdyn365-commerce-modules/data-types';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport * as React from 'react';\nimport { focusOnCheckoutError, setCheckoutErrorFocus } from '../../../checkout-errors';\n\nexport interface ICheckoutGuidedCardProps {\n id?: string;\n step: number;\n title?: HeadingType;\n disabled?: boolean; // Module is not available\n isActive?: boolean; // Step === currentStep\n isVisted?: boolean; // Step < currentStep\n isExpanded?: boolean;\n isReady?: boolean;\n isPending?: boolean;\n isUpdating?: boolean;\n isSubmitting?: boolean;\n isCancelAllowed?: boolean;\n isMobile?: boolean;\n hasInitialized?: boolean;\n hasControlGroup?: boolean;\n shouldFocus?: boolean;\n children: React.ReactNode;\n moduleState?: IModuleStateManager;\n actionContext?: IActionContext;\n resource: {\n checkoutStepTitleFormat: string;\n saveBtnLabel: string;\n changeBtnLabel: string;\n cancelBtnLabel: string;\n saveAndContinueBtnLabel: string;\n };\n telemetryContent?: ITelemetryContent;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n onNext(): void;\n}\n\n/**\n *\n * CheckoutGuidedCard component.\n * @extends {React.Component}\n */\nclass CheckoutGuidedCard extends React.PureComponent {\n private readonly editButtonRef: React.RefObject = React.createRef();\n\n private readonly formCardRef: React.RefObject = React.createRef();\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: ICheckoutGuidedCardProps) {\n super(props);\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\n }\n\n public componentDidUpdate(prevProps: ICheckoutGuidedCardProps): void {\n /**\n * Move to next step when current step is ready.\n */\n const { isActive, isReady, onNext, isVisted, onEdit, shouldFocus, children, moduleState, actionContext } = this.props;\n\n // Move to next step after completing the current step\n if (isActive && isReady) {\n onNext();\n }\n\n // Set the focus to Edit button once edit button appear\n // (It happens when current step switch to isReady status)\n const prevCanEdit = prevProps.isReady && prevProps.isVisted && !!prevProps.onEdit;\n const canEdit = isReady && isVisted && !!onEdit;\n if (!prevCanEdit && canEdit) {\n this.focusOnEditButton();\n this.scrollToTitle();\n }\n\n // Set the focus to the first focusable element\n // (It happens when current step switch to isUpdating status)\n if (prevProps.isReady && !isReady) {\n this.focusOnFirstFocusableElement();\n }\n\n // Set the focus for the checkout error\n if (shouldFocus && actionContext) {\n const childrenModules = this._getModules(children);\n\n // Set the focus for the module within the checkout section container\n if (childrenModules.length > 0) {\n for (const childModule of childrenModules) {\n const childId = this._getId(childModule);\n const childState = moduleState?.getModule(childId);\n\n if (childState?.hasError) {\n setCheckoutErrorFocus(childId, actionContext);\n return;\n }\n }\n } else {\n focusOnCheckoutError(this.formCardRef, actionContext);\n }\n }\n }\n\n public render(): JSX.Element | null {\n const {\n title,\n disabled,\n isExpanded,\n isActive,\n isVisted,\n children,\n isReady,\n isPending,\n isUpdating,\n hasInitialized,\n hasControlGroup,\n onEdit,\n resource\n } = this.props;\n const { changeBtnLabel } = resource;\n\n this.payLoad.contentAction.etext = TelemetryConstant.CheckoutChange;\n const changeBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n const canEdit = hasControlGroup && isReady && isVisted && onEdit;\n\n return (\n \n
\n {this.getTitle()}\n\n {canEdit && (\n \n {changeBtnLabel}\n \n )}\n
\n\n \n
{children}
\n\n {this.renderFooder()}\n
\n \n );\n }\n\n private readonly renderFooder = (): JSX.Element | null => {\n const { isVisted, isReady, isSubmitting, isCancelAllowed, hasControlGroup, onCancel, onSubmit, resource } = this.props;\n const { saveBtnLabel, cancelBtnLabel, saveAndContinueBtnLabel } = resource;\n\n const canSubmit = !isReady && onSubmit;\n const canCancel = !isReady && isVisted && isCancelAllowed && onCancel;\n\n if (!hasControlGroup || (!canSubmit && !canCancel)) {\n return null;\n }\n\n this.payLoad.contentAction.etext = isVisted ? TelemetryConstant.Save : TelemetryConstant.SaveContinue;\n const saveBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.Cancel;\n const cancelBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n {canSubmit && (\n \n {isVisted && isCancelAllowed ? saveBtnLabel : saveAndContinueBtnLabel}\n \n )}\n {canCancel && (\n \n {cancelBtnLabel}\n \n )}\n
\n );\n };\n\n private readonly focusOnFirstFocusableElement = (): void => {\n const node = this.formCardRef.current as HTMLElement;\n const focussableElements = `\n a:not([disabled]),\n button:not([disabled]),\n input[type=submit]:not([disabled]),\n input[type=checkbox]:not([disabled]),\n input[type=text]:not([disabled]),\n input[type=radio]:not([disabled]),\n input[type=password]:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n [tabindex]:not([disabled]):not([tabindex=\"-1\"])\n `;\n\n const child = node && node.querySelector && (node.querySelector(focussableElements) as HTMLElement);\n child && child.focus && child.focus();\n };\n\n private readonly focusOnEditButton = (): void => {\n // Focus on edit button\n const editButton =\n this.editButtonRef &&\n this.editButtonRef.current &&\n this.editButtonRef.current.focus &&\n (this.editButtonRef.current as HTMLElement);\n editButton && editButton.focus();\n };\n\n private readonly scrollToTitle = (): void => {\n // Scroll window to the title of the step that was just completed only in mobile viewport\n const formCard = this.props.isMobile && this.formCardRef && this.formCardRef.current && (this.formCardRef.current as HTMLElement);\n formCard && formCard.scrollIntoView();\n };\n\n private readonly getTitle = (): JSX.Element => {\n const { step, title } = this.props;\n const { headingTag: Tag = 'h2', text = '' } = title || {};\n return (\n \n \n {step + 1}. {` `}\n \n {text && {text}}\n \n );\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _getModules = (item: React.ReactNode): any[] => {\n return get(item, 'props.modules.primary') || [];\n };\n\n private readonly _getId = (item: React.ReactNode): string => {\n return get(item, 'id') || '';\n };\n}\n\nexport default CheckoutGuidedCard;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport get from 'lodash/get';\nimport { computed } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport GuidedCard from './guided-card';\n\nexport interface ICheckoutGuidedFormProps {\n items: React.ReactNode[];\n moduleState: IModuleStateManager;\n disableGuidedCheckoutFlow?: boolean;\n isMobile?: boolean;\n isEditor?: boolean;\n resource: {\n checkoutStepTitleFormat: string;\n saveBtnLabel: string;\n changeBtnLabel: string;\n cancelBtnLabel: string;\n saveAndContinueBtnLabel: string;\n };\n requestContext?: ICoreContext;\n telemetryContent?: ITelemetryContent;\n isPaymentVerificationRedirection?: boolean;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n hasError?: boolean;\n hasShippingAddress?: boolean | undefined;\n hasCartDeliveryMode?: boolean | undefined;\n hasGuestCheckoutEmail?: boolean | undefined;\n isTermsAndConditionAccepted?: boolean | undefined;\n shouldEnableCheckoutErrorDisplayMessaging?: boolean;\n shouldFocusOnCheckoutError?: boolean | undefined;\n}\n\ninterface ICheckoutGuidedFormState {\n currentStep: number;\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\n/**\n *\n * CheckoutGuidedForm component.\n * @extends {React.Component}\n */\n@observer\nclass CheckoutGuidedForm extends React.PureComponent {\n @computed public get hasMissingInfo(): boolean {\n if (\n this.props.hasShippingAddress === false ||\n this.props.hasCartDeliveryMode === false ||\n this.props.hasGuestCheckoutEmail === false ||\n this.props.isTermsAndConditionAccepted === false\n ) {\n return true;\n }\n\n return false;\n }\n\n @computed public get hasOrderError(): boolean {\n for (const item of this.props.items) {\n const childId = this.getId(item);\n const state = this.props.moduleState.getModule(childId);\n\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n state.childIds?.filter(currentId => currentId?.includes(paymentInstrumentModuleId))\n );\n\n if (!isPaymentSectionContainer && !state.isDisabled && state.hasError) {\n return true;\n }\n }\n\n return false;\n }\n\n public state: ICheckoutGuidedFormState = {\n currentStep: 0\n };\n\n public componentDidMount(): void {\n /**\n * Append child modules.\n */\n const childIds = this.props.items.map((item: React.ReactNode) => get(item, 'props.id'));\n this.props.moduleState.init({ childIds });\n }\n\n public render(): JSX.Element | null {\n const { moduleState, items, resource } = this.props;\n if (!items || !moduleState) {\n return null;\n }\n\n const shouldCollapseAfterRedirect =\n this.props.isPaymentVerificationRedirection &&\n this.props.shouldEnableSinglePaymentAuthorizationCheckout &&\n !this.props.hasError &&\n !this.hasMissingInfo &&\n !this.hasOrderError;\n\n let previousModuleHasError = false;\n const childModule = this._enableAfterModule();\n return (\n
\n {items.map((item: React.ReactNode) => {\n const childId = this.getId(item);\n const step = this.getStep(childId);\n const title = this.getHeading(item);\n const state = this.props.moduleState.getModule(childId);\n const {\n isReady,\n isPending,\n isUpdating,\n isDisabled,\n isCancelAllowed,\n onEdit,\n onCancel,\n onSubmit,\n hasModuleState,\n hasInitialized,\n hasError\n } = state || ({} as IModuleStateManager);\n\n let shouldFocus =\n !!this.props.shouldEnableCheckoutErrorDisplayMessaging &&\n !!this.props.shouldFocusOnCheckoutError &&\n !previousModuleHasError &&\n hasError;\n previousModuleHasError = previousModuleHasError || shouldFocus;\n\n return (\n \n {React.cloneElement(item as React.ReactElement, { enableControl: true })}\n \n );\n })}\n
\n );\n }\n\n private readonly getEnabledModules = (): string[] => {\n const {\n moduleState: { childIds, getModule }\n } = this.props;\n return childIds.filter((childId: string) => {\n const state = getModule(childId);\n return !!state && !state.isDisabled;\n });\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _enableAfterModule = (): string => {\n const childIds: string[] = this.props.items.map((item: React.ReactNode) => get(item, 'props.id')).filter(Boolean);\n let id: string = '';\n for (let i = 0; i < childIds.length - 1; i++) {\n const childId = childIds[i];\n const nextChildId = childIds[i + 1];\n if (this._isPaymentSectionContainer(childId) && nextChildId) {\n id = nextChildId;\n }\n }\n return id;\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n const sectionState = this.props.moduleState.getModule(moduleId);\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n sectionState.childIds?.filter(currentId => currentId?.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer) {\n return true;\n }\n return false;\n };\n\n private readonly getStep = (id: string): number => {\n return this.getEnabledModules().indexOf(id);\n };\n\n private readonly getId = (item: React.ReactNode): string => {\n return get(item, 'props.id') || '';\n };\n\n private readonly getHeading = (item: React.ReactNode): Heading => {\n return get(item, 'props.config.heading') || '';\n };\n\n private readonly isExpanded = (step: number, moduleChildId: string, childId: string): boolean => {\n if (this.props.isEditor) {\n // Editorial mode: Expand all the drawers\n return true;\n }\n if (this.props.shouldEnableSinglePaymentAuthorizationCheckout && moduleChildId === childId) {\n return true;\n }\n return step > -1 && step <= this.state.currentStep;\n };\n\n private readonly isActive = (step: number): boolean => {\n return step === this.state.currentStep;\n };\n\n private readonly isVisted = (step: number): boolean => {\n return step > -1 && step < this.state.currentStep;\n };\n\n private readonly onNext = (): void => {\n this.setState({\n currentStep: this.state.currentStep + 1\n });\n };\n}\n\nexport default CheckoutGuidedForm;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\ninterface ICheckoutPlaceOrderButtonProps {\n canPlaceOrder: boolean;\n checkoutBtnText: string;\n telemetryContent?: ITelemetryContent;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n isPlaceOrderLoading?: boolean;\n isExpressCheckoutApplied?: boolean;\n isPaymentVerificationRedirection?: boolean;\n placeOrder(): Promise;\n}\n\nconst buttonsStates: React.Dispatch>[] = [];\n\n/**\n * On place order function.\n * @param isBusy -Check is busy.\n * @param canPlaceOrder -Check can place order.\n * @param placeOrder -Place order function.\n * @returns Set state of button.\n */\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\n if (isBusy || !canPlaceOrder) {\n return;\n }\n buttonsStates.map(buttonSetState => {\n buttonSetState(true);\n return true;\n });\n await placeOrder();\n};\n\nconst CheckoutPlaceOrderButton: React.FC = ({\n checkoutBtnText,\n canPlaceOrder,\n placeOrder,\n telemetryContent,\n shouldEnableSinglePaymentAuthorizationCheckout,\n isPlaceOrderLoading,\n isExpressCheckoutApplied,\n isPaymentVerificationRedirection\n}) => {\n const [isBusy, setIsBusy] = useState(false);\n buttonsStates.push(setIsBusy);\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && (!isExpressCheckoutApplied || isPaymentVerificationRedirection)) {\n return (\n \n {checkoutBtnText}\n \n );\n }\n\n return (\n \n {checkoutBtnText}\n \n );\n};\n\nexport default CheckoutPlaceOrderButton;\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","/*!\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 { ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { PlaceOrder } from '../../../common/place-order';\n\nexport default async (\n ctx: IActionContext,\n checkoutState: ICheckoutState | undefined,\n orderedProducts: SimpleProduct[] | undefined,\n redirect: boolean,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n) => {\n return PlaceOrder(ctx, checkoutState, orderedProducts, redirect, updatedCartVersion, isPaymentVerificationRedirection);\n};\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 { ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Cart, CartLine } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IInvoiceSummaryProps {\n orderTotalLabel: string;\n invoiceLabel: string;\n loyaltyLabel?: string;\n giftcardLabel?: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n cart: Cart;\n id: string;\n typeName: string;\n freeText?: string;\n toBeCalculatedText?: string;\n checkoutState?: ICheckoutState;\n}\n\nexport interface IInvoiceSummaryLines {\n orderTotal: React.ReactNode;\n invoices: React.ReactNode;\n giftCard?: React.ReactNode;\n loyalty?: React.ReactNode;\n}\n\ninterface IInvoiceSummaryLineProps {\n label: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n price?: number;\n freeText?: string;\n toBeCalculatedText?: string;\n id: string;\n typeName: string;\n cssLabel: string;\n}\n\nconst InvoiceSummaryLine: React.FC = ({\n price,\n label,\n context,\n id,\n typeName,\n toBeCalculatedText,\n freeText,\n cssLabel\n}) => {\n return (\n

\n {label}\n {price || price === 0 ? (\n \n ) : (\n {toBeCalculatedText}\n )}\n

\n );\n};\n\nconst _buildPaymentSummarySection = (\n props: IInvoiceSummaryProps,\n price: number | undefined,\n label: string,\n cssLabel: string\n): React.ReactNode => {\n return (\n \n );\n};\n\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\n};\n\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n };\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\n return Math.min(giftCardTotalValue, amount);\n};\n\nexport const InvoiceSummary = (props: IInvoiceSummaryProps) => {\n const { TotalAmount, CartLines } = props.cart;\n const invoiceLines = CartLines?.filter(cartLine => cartLine.IsInvoiceLine);\n const reactNodes: IInvoiceSummaryLines = {\n invoices: invoiceLines?.map((invoiceLine: CartLine) => {\n return _buildPaymentSummarySection(\n props,\n invoiceLine.InvoiceAmount,\n format(props.invoiceLabel, invoiceLine.InvoiceId),\n 'invoice'\n );\n }),\n orderTotal: _buildPaymentSummarySection(props, TotalAmount, props.orderTotalLabel, 'total')\n };\n\n if (props.checkoutState) {\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount;\n\n if (loyaltyAmount > 0) {\n reactNodes.loyalty = _buildPaymentSummarySection(props, -loyaltyAmount, props.loyaltyLabel || 'Loyalty amount', 'loyalty');\n }\n\n if (giftCardAmount > 0) {\n reactNodes.giftCard = _buildPaymentSummarySection(\n props,\n -giftCardAmount,\n props.giftcardLabel || 'Gift card amount',\n 'gift-card'\n );\n }\n\n reactNodes.orderTotal = _buildPaymentSummarySection(\n { ...props, freeText: undefined },\n totalAmountAfterGiftCard,\n props.orderTotalLabel,\n 'total'\n );\n }\n\n return reactNodes;\n};\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 { ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\nexport interface IOrderSummaryProps {\n subTotalLabel: string;\n shippingLabel: string;\n taxLabel: string;\n orderTotalLabel: string;\n loyaltyLabel?: string;\n giftcardLabel?: string;\n totalDiscountsLabel: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n id: string;\n typeName: string;\n otherChargeLabel?: string;\n freeText?: string;\n toBeCalculatedText?: string;\n checkoutState?: ICheckoutState;\n retailMultiplePickUpOptionEnabled?: boolean;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isTaxIncludedInPrice?: boolean;\n isShowTaxBreakup?: boolean;\n customerAccountLabel?: string;\n}\n\nexport interface IOrderSummaryLines {\n subtotal: React.ReactNode;\n shipping?: React.ReactNode;\n otherCharge?: React.ReactNode;\n tax: React.ReactNode;\n orderTotal: React.ReactNode;\n totalDiscounts?: React.ReactNode;\n giftCard?: React.ReactNode;\n loyalty?: React.ReactNode;\n customerAccount?: React.ReactNode;\n}\n\ninterface IOrderSummaryLineProps {\n label: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n price?: number;\n freeText?: string;\n toBeCalculatedText?: string;\n id: string;\n typeName: string;\n cssLabel: string;\n priceCurrency?: string;\n}\n\ninterface IShippingOrderLine {\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n canShip?: boolean;\n hasDeliveryMethod?: boolean;\n hasShippingMethod?: boolean;\n freightFee?: number;\n}\n\nconst OrderSummaryLine: React.FC = ({\n price,\n label,\n context,\n id,\n typeName,\n toBeCalculatedText,\n freeText,\n cssLabel,\n priceCurrency\n}) => {\n return (\n

\n {label}\n {price || price === 0 ? (\n \n ) : (\n {toBeCalculatedText}\n )}\n

\n );\n};\n\nconst _buildOrderSummarySection = (\n props: IOrderSummaryProps,\n price: number | undefined,\n cssLabel: string,\n label: string = ''\n): React.ReactNode => {\n return (\n \n );\n};\n\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\n};\n\nconst _computedCustomerAccountAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.customerAccountAmount) || 0;\n};\n\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n };\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\n return Math.min(giftCardTotalValue, amount);\n};\n\nconst getDeliveryConfiguration = (\n cart: Cart,\n channelConfiguration: ChannelConfiguration,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n retailMultiplePickUpOptionEnabled?: boolean,\n isTaxIncludedInPrice?: boolean,\n isShowTaxBreakup?: boolean\n): IShippingOrderLine => {\n const pickupDeliveryModeCode = channelConfiguration && channelConfiguration.PickupDeliveryModeCode;\n const emailDeliveryModeCode = channelConfiguration && channelConfiguration.EmailDeliveryModeCode;\n const cartLines = cart.CartLines || [];\n const deliveryModes = cartLines.map(cartLine => cartLine.DeliveryMode);\n const taxOnShippingCharge = cart.TaxOnShippingCharge !== undefined ? cart.TaxOnShippingCharge : 0;\n const shippingChargeAmount = cart.ShippingChargeAmount !== undefined ? cart.ShippingChargeAmount : 0;\n\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True shippingChargeAmount\n // True True shippingChargeAmount\n // True false shippingChargeAmount + taxOnShippingCharge\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n let freightFee: number | undefined = 0;\n if (isTaxIncludedInPrice === undefined || isShowTaxBreakup === undefined) {\n freightFee = cart.ShippingChargeAmount;\n } else {\n freightFee = isTaxIncludedInPrice && !isShowTaxBreakup ? shippingChargeAmount + taxOnShippingCharge : cart.ShippingChargeAmount;\n }\n const canShip = deliveryModes.some(\n deliveryMode =>\n !(\n deliveryMode !== '' &&\n (deliveryMode ===\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) ||\n deliveryMode === emailDeliveryModeCode)\n )\n );\n const hasDeliveryMethod = deliveryModes.some(deliveryMode => !!deliveryMode && deliveryMode !== emailDeliveryModeCode);\n const hasShippingMethod = deliveryModes.some(\n deliveryMode =>\n !!deliveryMode &&\n deliveryMode !==\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) &&\n deliveryMode !== emailDeliveryModeCode\n );\n return {\n canShip,\n hasDeliveryMethod,\n hasShippingMethod,\n freightFee\n } as IShippingOrderLine;\n};\n\nconst getDeliveryMode = (\n deliveryMode?: string,\n featureSate: boolean = false,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n pickupDeliveryMode?: string\n) => {\n if (!featureSate) {\n return pickupDeliveryMode;\n }\n return channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(dM => dM === deliveryMode);\n};\n\n// eslint-disable-next-line complexity\nexport const OrderSummary = (props: IOrderSummaryProps) => {\n const {\n SubtotalAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n SubtotalAmountWithoutTax,\n TaxAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n TaxOnNonShippingCharges,\n DiscountAmount = 0,\n TotalAmount,\n OtherChargeAmount\n } = props.cart;\n\n const { canShip, hasDeliveryMethod, hasShippingMethod, freightFee } = getDeliveryConfiguration(\n props.cart,\n props.channelConfiguration,\n props.channelDeliveryOptionConfig,\n props.retailMultiplePickUpOptionEnabled,\n props.isTaxIncludedInPrice,\n props.isShowTaxBreakup\n );\n\n let reactNodes: IOrderSummaryLines;\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n if (props.isTaxIncludedInPrice === undefined || props.isShowTaxBreakup === undefined) {\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, SubtotalAmount, 'sub-total', props.subTotalLabel),\n tax: _buildOrderSummarySection(props, hasDeliveryMethod ? TaxAmount : undefined, 'tax-amount', props.taxLabel),\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, OtherChargeAmount, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n } else {\n const otherChargeAmount = OtherChargeAmount !== undefined ? OtherChargeAmount : 0;\n const taxOnNonShippingCharges = TaxOnNonShippingCharges !== undefined ? TaxOnNonShippingCharges : 0;\n const isTaxGreaterThanZero = TaxAmount !== undefined && TaxAmount > 0;\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True otherChargeAmount\n // True True otherChargeAmount\n // True false otherChargeAmount+TaxOnNonShippingCharges\n\n const otherChargeAmountTotal =\n props.isTaxIncludedInPrice && !props.isShowTaxBreakup ? otherChargeAmount + taxOnNonShippingCharges : otherChargeAmount;\n\n const subtotalAmountActual = props.isTaxIncludedInPrice && props.isShowTaxBreakup ? SubtotalAmountWithoutTax : SubtotalAmount;\n\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, subtotalAmountActual, 'sub-total', props.subTotalLabel),\n tax: props.isShowTaxBreakup\n ? _buildOrderSummarySection(\n props,\n hasDeliveryMethod || isTaxGreaterThanZero ? TaxAmount : undefined,\n 'tax-amount',\n props.taxLabel\n )\n : '',\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, otherChargeAmountTotal, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n }\n if (canShip) {\n reactNodes.shipping = _buildOrderSummarySection(props, hasShippingMethod ? freightFee : undefined, 'shipping', props.shippingLabel);\n }\n if (props.checkoutState) {\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\n const customerAccountAmount = _computedCustomerAccountAmount(props.checkoutState);\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount - customerAccountAmount;\n\n if (loyaltyAmount > 0) {\n reactNodes.loyalty = _buildOrderSummarySection(props, -loyaltyAmount, 'loyalty', props.loyaltyLabel || 'Loyalty amount');\n }\n\n if (giftCardAmount > 0) {\n reactNodes.giftCard = _buildOrderSummarySection(props, -giftCardAmount, 'gift-card', props.giftcardLabel || 'Gift card amount');\n }\n\n if (customerAccountAmount > 0) {\n reactNodes.customerAccount = _buildOrderSummarySection(\n props,\n -customerAccountAmount,\n 'customer-credit-amount',\n props.customerAccountLabel || 'Customer Credit amount'\n );\n }\n\n reactNodes.orderTotal = _buildOrderSummarySection(\n { ...props, freeText: undefined },\n totalAmountAfterGiftCard,\n 'total',\n props.orderTotalLabel\n );\n }\n\n if (DiscountAmount > 0) {\n reactNodes.totalDiscounts = _buildOrderSummarySection(props, -DiscountAmount, 'total-discounts', props.totalDiscountsLabel);\n }\n\n return reactNodes;\n};\n"],"names":["CheckoutDeliveryOptions","React","constructor","props","super","selectedItemId","deliveryOptions","isLoading","groupDeliveryOptions","cartLineSelectedDeliveryOptions","retailMultiplePickUpOptionEnabled","checkoutErrorRef","cartLinesDeliveryOptions","init","async","this","moduleState","onEdit","isSelectDefaultOptionEnabled","undefined","onCancel","onSubmit","status","config","useDefaultDeliveryOption","canShip","cartDeliveryMode","getSavedDeliveryOption","isMultipleAddressShippingEnabled","getCartLinesSavedDeliveryOption","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","getAriaLabelWithPrice","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","updateCartLinesDeliverySpecification","updateCartDeliverySpecification","savedDeliveryOption","_this$props$data$chec4","onReady","cartLinesForShipping","DeliveryMode","forEach","cartLine","LineId","StringExtensions","isNullOrEmpty","cartLineId","existingCartLineSelectedDeliveryOption","cartLineDeliveryOption","selectedDeliveryOption","push","deliveryModeId","trim","checkoutState","updateCartDeliverySpecificationInput","shippingAddress","channelDeliveryOptionConfig","onPending","then","response","_response$errorDetail","errorDetails","LocalizedMessage","genericErrorMessage","setIsCancellable","catch","_this$props$data$chec5","lineSpecs","checkoutCartLines","cart","CartLines","group","_checkoutCartLines$fi","address","ShippingAddress","lineSpec","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","DeliveryPreferenceType","ShipToAddress","DeliveryAddress","lineDeliverySpecifications","_this$props$data$chec6","cartLines","_cartLine$LineId","toString","cartLineSelectedDeliveryOption","RequestedDeliveryDate","requestDeliveryDate","Date","updateCartLines","updatedCartLinesObject","_unused","pickupDeliveryModeCode","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","filter","_this$channelDelivery","PickupDeliveryModeCodes","getDeliveryOptions","_this$props$data$chec7","cartState","cartId","Id","originalDeliveryMode","shippingCartLines","hasShippingDeliveryLines","clearCartLinesDeliveryInformation","channelDeliveryOptionConfiguration","deliveryOptionFilter","filterDeliveryModeOption","FilterDeliveryModeOption","None","FilterOutNonCarrierDeliveryMode","getDeliveryOptionsAsync","callerContext","actionContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","_unused2","deliveryOptionsNotFound","_this$props$data$chec8","_this$props$data$chec9","updateHasCartDeliveryMode","newHasCartDeliveryMode","isPaymentVerificationRedirection","_this$props$data$chec10","getStoredDeliveryOptions","_this$props$data$chec11","_this$props$data$chec12","_this$props$data$chec13","cartLinesWithShippingAddress","_this$props$data$chec14","_this$props$data$chec15","_this$props$data$chec16","_this$props$data$chec17","isExpressCheckoutApplied","getGroupDeliveryOptions","isExpressPaymentAppliedInCartPage","event","currentTarget","onCartLineDeliveryOptionChange","console","log","onCartLineRequestDeliveryDateChange","deliveryDate","getCheckoutCartLineGroupDeliveryOptions","ArrayExtensions","hasElements","imageSettings","getImageSettings","requestDeliveryDateEnabled","enableRequestDeliveryDate","groupDeliveryOption","cartLineIds","cartLine1","_ref","_cartLine$LineId2","_ref2","_cartLine$LineId3","_this$cartLineSelecte","_cartLine1$ShippingAd","_cartLine1$ShippingAd2","_groupDeliveryOption$","key","AddressDetailItemFunctionComponent","isNewLine","isShowLabel","labelText","cartLineGroupShippingAddressLabel","name","FullAddress","cartLineGroupDeliveryOptionsLabel","cartLineGroupDeliveryOptionsText","CheckoutCartLineDeliveryDate","heading","cartLineGroupDeliveryRequestDeliveryDateText","disclaimerText","cartLineGroupDeliveryRequestDeliveryDateDisclaimerText","checkBoxLabel","cartLineGroupDeliveryRequestDeliveryDate","CheckoutCartLineDeliveryOptionsRadio","moduleId","_this$props$data$prod","_this$props$data$cata","_ref3","_cartLine$LineId4","GetLineItems","products","gridSettings","configString","discountStringText","shippingChargesText","shippingChargesString","productDimensionTypeColor","productDimensionTypeSize","productDimensionTypeStyle","productDimensionTypeAmount","quantityDisplayStringLabel","quantityDisplayString","changeButtonText","deliveryMethodLabel","catalogs","showShippingChargesForLineItems","_this$props$data$chec18","getGroupByDelivery","items","groupBy","item","_item$ShippingAddress","RecordId","inputData","GetDeliveryOptionsForCartLineAddressInput","getDeliveryOptionsForCartLineAddress","_group$cartLineIds","_unused3","viewports","xs","q","w","h","sm","lg","lazyload","getTelemetryObject","telemetryPageName","friendlyName","multipleAddressShippingEnabled","_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$chec25","when","isDataReady","reaction","_this$props$data$chec19","_this$props$data$chec20","_this$props$data$chec21","_this$props$data$chec22","_this$props$data$chec23","_this$props$data$chec24","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec26","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec27","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","checkoutCartLineGroupDeliveryOptions","enableCheckoutCartLineDeliveryOptions","saveButton","editButton","cancelButton","renderView","__decorate","observable","computed","action","withModuleState","observer","DeliveryOptionList","Node","DeliveryOptionSelected","Module","ref","isDisabled","fallbackPattern","onChangeMinValue","selectedDate","setSelectedDate","useState","isDateEnabled","setIsDateEnabled","minDate","setMinDate","today","toISOString","split","payLoad","getPayloadObject","TelemetryConstant","DeliveryOptions","attributes","getTelemetryAttributes","type","checked","handleCheckboxChange","selectedValue","target","min","pattern","deliveryOptionRef","contentAction","etext","requestContext","changeCurrentDeliveryOption","deliveryClassName","optionClassName","descClassName","lineClassName","lineItemClassName","changeText","showDeliveryOption","setShowDeliveryOption","handleClick","deliveryCode","option","payload","TelemetryEvent","UpdateInCart","product","ProductId","_getProduct","productId","_product","_getLineItemComponent","productUrl","getProductUrlSync","MsDyn365","isBrowser","isChannelTypeB2B","_cartLine$CatalogId","fullUrl","URL","window","location","href","searchParams","set","CatalogId","CartLineItemComponent","sizeString","colorString","styleString","amountString","inputQuantityAriaLabel","originalPriceText","currentPriceText","salesAgreementPricePrompt","isQuantityEditable","primaryImageUrl","PrimaryImageUrl","priceCurrency","SupportedGiftCardType","CheckoutGiftCard","_this","isFetchingGiftCard","giftCardNumber","giftCardPin","giftCardExp","inputRef","inputPinRef","inputExpRef","isRequired","isEnabled","giftCards","giftCardExtends","onSkip","couldPaidByGiftCard","TotalAmount","user","isAuthenticated","app","giftCardSupported","External","shouldBeEnabledForGuest","handleCancelOrSubmit","hasSelectedItem","getFormattedPrice","arguments","cultureFormatter","formatCurrency","enterGiftCardNumber","setState","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","includes","Both","month","Number","parseInt","year","getGiftCardAsync","activeGiftCard","Balance","emptyInputError","duplicatedCodeError","invalidCodeError","some","card","resolveCardTypesAsync","CardType","GiftCard","loyaltyAmount","customerAccountAmount","reduce","getLoyaltyAmount","getGiftCardTotalAmount","getCustomerAccountAmount","componentDidMount","showAdditionalFields","additionalFields","shouldPayGiftCard","isOBORequest","EnabledPaymentsForOBO","supportExternalGiftCard","moduleClassName","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","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","CheckoutLoyalty","_defaultLoyaltyPoints","loyaltyCard","CardNumber","LoyaltyCardId","updateLoyaltyCardId","loyaltyCardNumber","warning","shouldPayLoyalty","_setErrorMessage","_clearError","_dialogToggleRef","_applyLoyaltyPoints","bind","_removeLoyaltyPoints","_onInputChange","_onBlur","dollarsApplied","maxDollars","isFetchingLoyaltyCard","loyaltyTransactionEstimation","MaxCurrencyValueOfLoyaltyPoints","_updateEstimate","_updateLoyalty","Loyalty","isShowLoyalty","isShowAddLoyalty","disableAddLoyaltyComponent","checkoutLoyalty","showLoyalty","Heading","headingTag","text","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","max","ariaValueMax","ariaValueMin","ariaValueNow","loyaltyAmountApplyButton","applyCheckoutLoyaltyPaymentText","isNaN","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","removeCheckoutLoyaltyPaymentText","innerRef","point","RewardPointId","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","ActivePoints","expiringPointsText","expiringPoints","PointsExpiringSoon","updateLoyaltyAmount","newAmount","parseFloat","num","toFixed","element","document","getElementById","loyalPointsRequest","createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput","_query","bypassCache","callActionOrExecute","_points$MaxCurrencyVa","update","GetLoyaltyTransactionEstimationInput","apiSettings","newMaxPoints","exception","AddCheckoutLoyalty","rewardPoint","ShowCheckoutLoyalty","Checkout","isValidationPassed","isPlaceOrderLoading","isPlaceOrderClicked","handleCheckoutHeadingChange","checkoutHeading","cartStatus","isEmptyCart","getSlotItems","slots","triggerPaymentWithPlaceOrder","updateShouldTriggerPaymentWithPlaceOrder","newShouldTriggerPaymentWithPlaceOrder","shouldTriggerPaymentWithPlaceOrder","onPlaceOrder","checkoutOutOfStockErrorMessage","enableStockCheck","orderConfirmation","isOverMaxQuantity","_checkout$result","hasOrderConfirmation","updatedCartVersion","updateCartLineEmailAddress","guestCheckoutEmail","placeOrder","handleCheckoutError","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","_this$props$context$r","emailDeliveryCartLines","line","ElectronicDelivery","ElectronicDeliveryEmailAddress","newGuestCheckoutEmail","updateLineDeliverySpecificationsAsync","updatedCart","Version","_this$props$context$r2","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","productInventoryInformation","_cart$CartLines","_cart$CartLines2","productsThatShouldValidateInventory","cartline","_cartlineProduct$Beha","cartlineProduct","isStockedItem","Behavior","IsStockedProduct","isEmailDelivery","foundProductAvailability","productInventory","_productInventory$Pro","ProductAvailableQuantity","cartLinesInventoryValidation","validateCartLinesInventory","isValid","getActiveChildModuleStates","childIds","getModule","hasModuleState","onContainerReady","redirectToCartPage","notFoundEditCartLinkMessage","editCartLink","Msdyn365","validateForCheckout","retry","_shouldValidateQuantityLimits","validateForCheckoutAsync","_result$ValidationFai","ValidationFailuresByCartLines","refreshCart","refreshError","_featureStatuses$find","_featureStatuses$find2","_featureStatuses$find3","featureStatuses","_this$props$context","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","customerInfo","customerInformation","isB2BSite","isOrderQuantityLimitsFeatureEnabledInSiteSettings","_cartConfiguration$Ig","cartConfiguration","IgnoreOrderSettings","_saveShippingAndBillingAddress","tokenizedPaymentCard","Zip","_getAddressFromTokenizedPaymentCard","updateBillingAddressFromExpressCheckout","newBillingAddressFromExpressCheckout","updateShippingAddressFromExpressCheckout","newShippingAddressFromExpressCheckout","TwoLetterISORegionName","Country","NameOnCard","Street","Address1","StreetNumber","Address2","City","State","ZipCode","Phone","invalidCartVersionErrorMessage","missingRequiredCartTenderLinesErrorMessage","checkoutApiFailureErrorMessage","invoiceCheckoutApiFailureErrorMessage","checkoutResult","apiError","statusCode","errorCode","setCheckoutErrors","_error$data","shouldEnableSinglePaymentAuthorizationCheckout","AdditionalContext","isEditorialMode","isEmpty","params","isEditor","isTermsAndConditionAccepted","disableForOBO","isPaidOffByCustomerAccount","amountDue","asyncResultStatus","AsyncResultStatusCode","LOADING","email","tenderLine","paymentTenderType","paymentTenderTypeFromCartPage","isExpressAddressAppliedInCartPage","cardPaymentAcceptResult","updateExpressCheckoutDetails","newEmailAddressFromExpressCheckout","newTenderLine","newTokenizedPaymentCard","newPaymentTenderType","newIsExpressCheckoutApplied","newIsExpressAddressApplied","newCardPaymentAcceptResult","updateExtensionProperties","newExtensionProperties","isCartReady","_this$props$data$chec28","isPaymentSectionContainerReady","_this$props$data$chec29","_this$props$data$chec30","_this$props$data$chec31","_this$props$data$chec32","redirectAdditionalContext","isPaymentVerificationRequired","_this$props$data$chec33","isPaymentSectionContainerHasError","_this$props$data$chec34","_this$props$data$chec35","isBillingAddressHasError","_this$props$data$chec36","_this$props$data$chec37","updateIsBillingAddressHasError","newIsBillingAddressHasError","canPlaceOrder","_this$props$data$chec38","_this$props$data$chec39","updateIsPlaceOrderEnabledInRedirection","newIsPlaceOrderEnabledInRedirection","_this$props$data$chec40","_this$props$data$chec41","checkoutErrorLocation","checkoutPaymentErrorLocation","ErrorCode","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment","CheckoutPaymentInstrument","componentDidUpdate","_this$props$data$chec42","_this$props$data$chec43","shouldFocusOnCheckoutError","_this$props$data$chec44","_this$props$data$chec45","_this$props$data$chec46","_this$props$data$chec47","_this$props$data$chec48","_this$props$data$chec49","_this$props$data$chec50","_this$props$data$chec51","_this$props$data$chec52","_this$props$data$chec53","_this$props$data$chec54","_this$props$data$chec55","_this$props$data$chec56","_this$props$data$chec57","_document","_this$props$data$chec58","disableGuidedCheckoutFlow","backToShopping","placeOrderText","confirmPaymentText","cookieConsentRequiredMessage","checkoutClass","allCheckoutInformation","checkoutInformation","info","checkoutExpressPaymentContainer","isConsentGiven","cookies","isMobile","device","Type","backToShoppingUrl","termsAndConditions","BackToShopping","backToShoppingAttributes","checkoutBtnText","hasShippingAddress","hasCartDeliveryMode","hasGuestCheckoutEmail","hasExpressPaymentContainer","getElementsByClassName","style","display","hasSalesOrder","salesOrder","checkoutProps","headerProps","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","renderMsdyn365Text","AlertComponent","loading","_this$props$data$chec59","_this$props$data$chec60","canShow","guidedForm","GuidedFormComponent","resource","orderSummary","getOrderSummary","invoicePaymentSummary","getInvoicePaymentSummary","lineItems","getLineItems","placeOrderButton","PlaceOrderButtonComponent","keepShoppingButton","values","every","SUCCESS","FAILED","editProps","PickUpAtStoreComponent","PickUpAtStore","EmailDeliveryComponent","EmailDelivery","LineItemComponent","LineItem","pickUpAtStore","emailDelivery","LineItemGroupComponent","LineItemDeliveryGroup","LineItemList","lineItem","LineItemGroupComponentWithMultiplePickUp","lineItemWraper","lineItemWraperIcon","LineItemComponentWithMultiplePickUp","PickUpAtStoreComponentWithMultiplePickUp","_ref7","LineItemsComponent","_ref8","LineItems","Header","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","OrderSummaryComponent","_ref9","lines","subtotal","shipping","otherCharge","tax","totalDiscounts","loyalty","customerAccount","orderTotal","PaymentSummaryComponent","_ref10","invoices","totalAmountLabel","invoiceLabel","invoiceSummaryTitle","InvoiceSummary","orderTotalLabel","_featureState$result","_getDeliveryLocation","orgUnitLocations","FulfillmentStoreId","locationMatch","OrgUnitNumber","OrgUnitName","_input$data$catalogs","shippingCharges","_getPickUpAtStoreComponents","pickupDeliveryLocation","pickUpAtStoreWithLocationText","_getEmailDeliveryComponents","emailDeliveryText","_getLineItemsComponents","isPickUp","_getCartPickDeliveryMode","cartLineItem","_channelDeliveryOptio","isNullOrWhitespace","_countItems","Quantity","_filterItemsByDiliveryType","_channelDeliveryOptio2","_getLineItemsByDeliveryType","_getGroupTitleComponent","_input$data$deliveryO","itemLabel","itemsLabel","inStorePickUpLabel","shippingCountCheckoutLineItem","emailDeliveryModeDesc","productDeliveryOptions","_productDeliveryOptio","suffix","handleLineItemHeadingChange","lineItemsHeading","_getLineItemsByDeliveryTypeWithMulitplePickupMode","multiplePickUpLabel","shippingLable","_filterItemsByMultiplePickupMode","getGroupByStorePickup","groupDelivery","cartLinesGroup","cartLinesGrp","entries","groupByDeliveryType","keys","lineItemDeliveryGroup","_getGroupTitleComponentWithMultiplePickUp","fulFillmentStoreId","_input$data$deliveryO2","_input$data$deliveryO3","pickupDeliveryModeDesc","_productDeliveryOptio2","_productDeliveryOptio3","groupTitle","iconClass","_getLineItems","editCartText","EditCart","attribute","groupClass","orderSummaryHeading","subTotalLabel","shippingLabel","taxLabel","loyaltyLabel","giftcardLabel","totalDiscountsLabel","freeText","toBeCalculatedText","otherCharges","customerAccountLabel","showLineItems","channelConfiguration","isShowOrHideTaxEnabled","isEnableShowOrHideSalesTaxECommerceEnabled","orderSummaryProps","OrderSummary","otherChargeLabel","isTaxIncludedInPrice","IsTaxIncludedInPrice","isShowTaxBreakup","CheckoutGuidedCard","editButtonRef","formCardRef","renderFooder","isVisted","isSubmitting","isCancelAllowed","hasControlGroup","saveAndContinueBtnLabel","canSubmit","canCancel","Save","SaveContinue","saveBtnAttributes","Cancel","cancelBtnAttributes","focusOnFirstFocusableElement","node","child","querySelector","focusOnEditButton","scrollToTitle","formCard","scrollIntoView","getTitle","Tag","_getModules","_getId","prevProps","isActive","onNext","shouldFocus","children","childrenModules","childModule","childId","childState","setCheckoutErrorFocus","isExpanded","isPending","hasInitialized","changeBtnLabel","CheckoutChange","changeBtnAttributes","canEdit","active","expanded","closed","visted","hidden","initialized","ready","pending","updating","paymentInstrumentModuleId","CheckoutGuidedForm","currentStep","getEnabledModules","_enableAfterModule","Boolean","i","nextChildId","_isPaymentSectionContainer","_sectionState$childId","sectionState","currentId","getStep","indexOf","getId","getHeading","moduleChildId","_state$childIds","shouldCollapseAfterRedirect","hasMissingInfo","hasOrderError","previousModuleHasError","_this$props$requestCo","GuidedCard","enableControl","buttonsStates","onPlaceOrderHandler","isBusy","buttonSetState","setIsBusy","Purchase","PayCard","PayLoyalty","PayCustomerAccount","ctx","orderedProducts","redirect","PlaceOrder","InvoiceSummaryLine","cssLabel","_buildPaymentSummarySection","_computedLoyaltyAmount","invoiceLines","IsInvoiceLine","reactNodes","invoiceLine","InvoiceAmount","format","InvoiceId","giftCardAmount","_computeGiftCardAmount","giftCardTotalValue","giftCardCounter","Math","totalAmountAfterGiftCard","OrderSummaryLine","_buildOrderSummarySection","getDeliveryMode","featureSate","pickupDeliveryMode","dM","SubtotalAmount","SubtotalAmountWithoutTax","TaxAmount","TaxOnNonShippingCharges","DiscountAmount","OtherChargeAmount","hasDeliveryMethod","hasShippingMethod","freightFee","getDeliveryConfiguration","deliveryModes","taxOnShippingCharge","TaxOnShippingCharge","shippingChargeAmount","ShippingChargeAmount","otherChargeAmount","taxOnNonShippingCharges","isTaxGreaterThanZero","otherChargeAmountTotal","subtotalAmountActual"],"sourceRoot":""}