{"version":3,"file":"static/js/13.6b80250baf929daf32ce.chunk.js","mappings":"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","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-google-pay/custom-checkout-google-pay.tsx?fb70","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-google-pay/custom-checkout-google-pay.view.tsx?c19d","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/filtered-delivery-options.props.autogenerated.ts?9ca7","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.description.tsx?b6af","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-message.tsx?a76a","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-title.tsx?829f","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.radio-button.tsx?9751","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/filtered-delivery-options.tsx?9a97","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/filtered-delivery-options.view.tsx?6bae","webpack://venchi-ecommerce-msdyn365/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://venchi-ecommerce-msdyn365/./src/common/address-autosuggest.ts?f5a2","webpack://venchi-ecommerce-msdyn365/./src/common/address-common.ts?cf4b","webpack://venchi-ecommerce-msdyn365/./src/common/address-format.data.ts?6cbf","webpack://venchi-ecommerce-msdyn365/./src/common/address-format.ts?4f04","webpack://venchi-ecommerce-msdyn365/./src/common/address-meta-data.ts?c6e6","webpack://venchi-ecommerce-msdyn365/./src/common/address-module.data.ts?697a","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-checkbox.tsx?eb1a","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-add.tsx?e6a6","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-alert.tsx?10d1","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-button.tsx?7f7b","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-detail-item.tsx?5209","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-dropdown.tsx?f24b","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-error-alert.tsx?bcde","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-error-message.tsx?89ad","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-error-title.tsx?3926","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-input.tsx?8073","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-label.tsx?6864","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-list.tsx?a628","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-select.tsx?c1df","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-ship-multiple-heading.tsx?5d65","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-ship-multiple-lines.tsx?ce68","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-ship-multiple.tsx?136d","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-show.tsx?3f60","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-billing-checkbox.tsx?4008","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-billing-heading.tsx?7bbd","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://venchi-ecommerce-msdyn365/./src/validate-cart.ts?cd50","webpack://venchi-ecommerce-msdyn365/./src/Common/get-product.ts?0a21","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-shipping-cartlines-images.tsx?ab7c","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/address-detail-item.tsx?d9a2","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-date.tsx?bd12","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-grp.tsx?3a15","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-radio.tsx?045f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/get-line-items.tsx?e389","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/address-format.data.ts?3c40","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/checkout.tsx?6737","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/checkout.view.tsx?e4cc","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/alert.tsx?cb1e","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/get-invoice-payment-summary.tsx?9549","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/get-line-items.tsx?92f8","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/get-order-summary.tsx?4a81","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/guided-card.tsx?58e0","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/guided-form.tsx?f018","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/place-order-button.tsx?9b41","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/methods/checkout.ts?7b6b","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/methods/place-order.ts?5aa0","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/components/get-form.tsx?e249","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/components/get-item.tsx?4862","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/gift-card-balance-check.tsx?d1f8","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?a0c9","webpack://venchi-ecommerce-msdyn365/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://venchi-ecommerce-msdyn365/./src/modules/header/components/logo.tsx?f27e","webpack://venchi-ecommerce-msdyn365/./src/modules/header/components/nav-icon.tsx?2475","webpack://venchi-ecommerce-msdyn365/./src/modules/header/header.tsx?e91a","webpack://venchi-ecommerce-msdyn365/./src/modules/header/header.view.tsx?cf0f","webpack://venchi-ecommerce-msdyn365/./src/invoice-summary-lineitem.tsx?5f61","webpack://venchi-ecommerce-msdyn365/./src/order-summary-lineitem.tsx?8a98","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/product-v2.component.tsx?d155","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/product.component.tsx?fd23","webpack://venchi-ecommerce-msdyn365/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/header.view.tsx?9bd3","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/search-result-container-v2.view.tsx?6eaa","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/search-result-container.view.tsx?6e86"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { GetCardPaymentAcceptPointInput, getCardPaymentAcceptPointAction, GetCheckoutReturnUrl } from '@msdyn365-commerce-modules/checkout';\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { CardPaymentAcceptPoint, CardPaymentAcceptResult } from '@msdyn365-commerce/retail-proxy';\r\nimport classNames from 'classnames';\r\nimport { computed, reaction } from 'mobx';\r\nimport * as React from 'react';\r\nimport { ICheckoutGooglePayData } from './custom-checkout-google-pay.data';\r\nimport { IPaymentAuthorizationResult, IPaymentData, IPaymentsError, ITransactionInfo } from './custom-checkout-google-pay.model';\r\nimport { ICustomCheckoutGooglePayProps } from './custom-checkout-google-pay.props.autogenerated';\r\n\r\nexport interface ICheckoutGooglePayViewProps extends ICustomCheckoutGooglePayProps<{}> {\r\n alert?: React.ReactNode;\r\n className?: string;\r\n checkoutButton?: HTMLDivElement;\r\n checkoutGooglePay: IModuleProps;\r\n}\r\n\r\nexport interface ICheckoutGooglePayModuleProps extends ICustomCheckoutGooglePayProps {}\r\n\r\nexport enum GooglePayButtonState {\r\n Unknown,\r\n NotAvailable,\r\n Available\r\n}\r\n\r\ninterface IMerchantConfiguration {\r\n adyenMerchantId?: string;\r\n googleMerchantId?: string;\r\n currencyCode?: string;\r\n environment?: string;\r\n connectorId?: string;\r\n}\r\n\r\ninterface ICheckoutGooglePayState {\r\n buttonState: GooglePayButtonState;\r\n merchantConfiguration?: IMerchantConfiguration;\r\n errorMessage?: string;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ndeclare const window: any;\r\n\r\n/**\r\n *\r\n * CheckoutGooglePay component\r\n * @extends {React.Component}\r\n */\r\nexport class CheckoutGooglePay extends React.Component {\r\n private readonly moduleClassName: string = 'ms-checkout-google-pay';\r\n private readonly zeroAmount: number = 0;\r\n\r\n private readonly baseRequest = {\r\n apiVersion: 2,\r\n apiVersionMinor: 0\r\n };\r\n\r\n private readonly allowedCardNetworks = ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'];\r\n private readonly allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS'];\r\n\r\n private readonly baseCardPaymentMethod = {\r\n type: 'CARD',\r\n parameters: {\r\n allowedAuthMethods: this.allowedCardAuthMethods,\r\n allowedCardNetworks: this.allowedCardNetworks\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private paymentsClient: any = null;\r\n private googlePayButton: HTMLDivElement = document.createElement('div');\r\n\r\n @computed private get getLoyaltyAmount(): number {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n const checkoutState = checkout?.result;\r\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : this.zeroAmount;\r\n }\r\n\r\n @computed private get getGiftCardTotalAmount(): number {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n const checkoutState = checkout?.result;\r\n if (!checkoutState || !checkoutState.giftCardExtends) {\r\n return this.zeroAmount;\r\n }\r\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\r\n return count + (giftCard.Balance || this.zeroAmount);\r\n }, 0);\r\n }\r\n\r\n @computed private get getCustomerAccountAmount(): number {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n const checkoutState = checkout?.result;\r\n\r\n return checkoutState?.customerAccountAmount ?? this.zeroAmount;\r\n }\r\n\r\n @computed private get amountDue(): number {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n\r\n const cart = checkout?.result?.checkoutCart.cart;\r\n if (!cart || !cart.AmountDue) {\r\n return this.zeroAmount;\r\n }\r\n\r\n return Math.max(\r\n this.zeroAmount,\r\n cart.AmountDue - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount\r\n );\r\n }\r\n\r\n @computed private get googleClient() {\r\n if (this.paymentsClient === null || this.paymentsClient === undefined) {\r\n const { merchantConfiguration } = this.state;\r\n const clientRequest = {\r\n environment: merchantConfiguration?.environment,\r\n paymentDataCallbacks: {\r\n onPaymentAuthorized: this.onPaymentAuthorized\r\n }\r\n };\r\n\r\n this.paymentsClient = new window.google.payments.api.PaymentsClient(clientRequest);\r\n }\r\n\r\n return this.paymentsClient;\r\n }\r\n\r\n @computed private get transactionInfo(): ITransactionInfo {\r\n const { merchantConfiguration } = this.state;\r\n return {\r\n currencyCode: merchantConfiguration?.currencyCode || '',\r\n totalPriceStatus: 'ESTIMATED',\r\n totalPrice: `${this.amountDue}`\r\n };\r\n }\r\n\r\n @computed private get paymentDataRequest() {\r\n const { merchantConfiguration } = this.state;\r\n const cardPaymentMethod = {\r\n ...this.baseCardPaymentMethod,\r\n tokenizationSpecification: {\r\n type: 'PAYMENT_GATEWAY',\r\n parameters: {\r\n gateway: 'adyen',\r\n gatewayMerchantId: merchantConfiguration?.adyenMerchantId || ''\r\n }\r\n }\r\n };\r\n\r\n const callbackIntents: string[] = ['PAYMENT_AUTHORIZATION'];\r\n const paymentDataRequest = {\r\n ...this.baseRequest,\r\n allowedPaymentMethods: [cardPaymentMethod],\r\n transactionInfo: this.transactionInfo,\r\n merchantInfo: {\r\n merchantId: merchantConfiguration?.googleMerchantId || ''\r\n },\r\n callbackIntents: callbackIntents\r\n };\r\n\r\n return paymentDataRequest;\r\n }\r\n\r\n public constructor(props: ICustomCheckoutGooglePayProps) {\r\n super(props);\r\n this.state = {\r\n buttonState: GooglePayButtonState.Unknown\r\n };\r\n }\r\n\r\n public async componentDidMount() {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n\r\n reaction(\r\n () => checkout?.result?.redirectAdditionalContext && checkout?.result?.redirectPaymentConnectorId,\r\n async () => this.performRedirect()\r\n );\r\n\r\n reaction(\r\n () => checkout?.result?.isPaymentVerificationRedirection && checkout?.result?.isPlaceOrderEnabledInRedirection,\r\n async () => this.handlePaymentVerification()\r\n );\r\n\r\n await this.loadPaymentAcceptPage();\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { className },\r\n telemetry\r\n } = this.props;\r\n\r\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\r\n telemetry.information('isOBORequest is enabled, google pay module wont render');\r\n return null;\r\n }\r\n\r\n let checkoutButton: HTMLDivElement;\r\n switch (this.state.buttonState) {\r\n case GooglePayButtonState.Available:\r\n checkoutButton = this.googlePayButton;\r\n break;\r\n\r\n case GooglePayButtonState.NotAvailable:\r\n case GooglePayButtonState.Unknown:\r\n default:\r\n checkoutButton = document.createElement('div');\r\n }\r\n\r\n const viewProps: ICheckoutGooglePayViewProps = {\r\n ...this.props,\r\n ...this.state,\r\n className,\r\n checkoutGooglePay: {\r\n moduleProps: this.props,\r\n className: classNames(this.moduleClassName, className)\r\n },\r\n checkoutButton\r\n };\r\n\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private async loadPaymentAcceptPage() {\r\n const {\r\n config,\r\n context: {\r\n actionContext,\r\n request: { apiSettings }\r\n },\r\n telemetry\r\n } = this.props;\r\n\r\n const input = {\r\n amountDue: this.amountDue,\r\n apiSettings,\r\n paymenTenderType: config.paymentTenderType\r\n };\r\n\r\n await getCardPaymentAcceptPointAction(new GetCardPaymentAcceptPointInput(input), actionContext)\r\n .then((paymentAcceptPoint: any) => {\r\n const configuration = this.getMerchantConfiguration(paymentAcceptPoint);\r\n if (configuration) {\r\n this.setState({ merchantConfiguration: configuration });\r\n this.initialize();\r\n } else {\r\n telemetry.error('Unable to initialize Google Pay module');\r\n this.setState({ buttonState: GooglePayButtonState.NotAvailable });\r\n }\r\n })\r\n .catch((error: Error) => {\r\n telemetry.error(error.message);\r\n console.error(`[GooglePay] getCardPaymentAcceptPointAction failed: ${error.message}`);\r\n });\r\n }\r\n\r\n private getMerchantConfiguration(paymentAcceptPoint: CardPaymentAcceptPoint): IMerchantConfiguration | null {\r\n const { telemetry } = this.props;\r\n\r\n try {\r\n const configuration: IMerchantConfiguration = JSON.parse(paymentAcceptPoint?.AcceptPageContent || '');\r\n configuration.connectorId = paymentAcceptPoint?.PaymentConnectorId;\r\n\r\n if (StringExtensions.isNullOrWhitespace(configuration.adyenMerchantId)) {\r\n throw new Error('missing Adyen merchant account identifier');\r\n } else if (StringExtensions.isNullOrWhitespace(configuration.currencyCode)) {\r\n throw new Error('missing currency code');\r\n } else if (StringExtensions.isNullOrWhitespace(configuration.connectorId)) {\r\n throw new Error('missing connector identifier');\r\n } else if (StringExtensions.isNullOrWhitespace(configuration.environment)) {\r\n throw new Error('missing environment property');\r\n } else if (configuration.environment === 'PRODUCTION' && StringExtensions.isNullOrWhitespace(configuration.googleMerchantId)) {\r\n throw new Error('missing Google merchant account identifier');\r\n }\r\n\r\n return configuration;\r\n } catch (error) {\r\n telemetry.error(`Caught exception during parsing configuration: ${error}`);\r\n console.error(`[GooglePay] Caught exception during parsing configuration: ${error}`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private initialize = () => {\r\n const { telemetry } = this.props;\r\n\r\n const script = document.createElement('script');\r\n script.onload = this.loadGoogleSdk;\r\n script.src = 'https://pay.google.com/gp/p/js/pay.js';\r\n script.async = true;\r\n script.onerror = () => telemetry.error('unable to load Google Pay SDK');\r\n document.body.appendChild(script);\r\n };\r\n\r\n /**\r\n * Load Google Pay JS SDK.\r\n */\r\n private loadGoogleSdk = async () => {\r\n const { telemetry } = this.props;\r\n const isReadyToPayRequest = {\r\n ...this.baseRequest,\r\n allowedPaymentMethods: [this.baseCardPaymentMethod]\r\n };\r\n\r\n let buttonState: GooglePayButtonState = GooglePayButtonState.NotAvailable;\r\n try {\r\n const isReadyToPay = await this.googleClient.isReadyToPay(isReadyToPayRequest);\r\n if (isReadyToPay?.result) {\r\n this.googlePayButton = this.googleClient.createButton({\r\n allowedPaymentMethods: [this.baseCardPaymentMethod],\r\n buttonColor: 'default',\r\n buttonType: 'buy',\r\n buttonSizeMode: 'fill',\r\n buttonLocale: this.props.context.actionContext.requestContext.locale.split('-')[0] || 'en',\r\n onClick: this.handlePayButton\r\n });\r\n\r\n buttonState = GooglePayButtonState.Available;\r\n } else {\r\n telemetry.error('[loadGoogleSdk] current browser does not support Google Pay');\r\n }\r\n } catch (error) {\r\n telemetry.error(`[loadGoogleSdk] unexpected error during loading sdk: ${error}`);\r\n }\r\n\r\n return this.setState({\r\n buttonState\r\n });\r\n };\r\n\r\n /**\r\n * Handler for Google Pay button.\r\n */\r\n private handlePayButton = () => {\r\n const { telemetry } = this.props;\r\n this.googleClient.loadPaymentData(this.paymentDataRequest).catch((error: IPaymentsError) => {\r\n if (error.statusCode === 'CANCELED') {\r\n telemetry.information('[CheckoutGooglePay::handlePayButton] popup was canceled');\r\n } else {\r\n telemetry.error(\r\n `[CheckoutGooglePay::handlePayButton] unable to complete Google transaction (${error.statusCode}): ${error.statusMessage}`\r\n );\r\n }\r\n });\r\n };\r\n\r\n private onPaymentAuthorized = async (paymentData: IPaymentData) => {\r\n const { resources } = this.props;\r\n let result: IPaymentAuthorizationResult;\r\n try {\r\n await this.processPayment(paymentData);\r\n result = {\r\n transactionState: 'SUCCESS'\r\n };\r\n } catch (e) {\r\n result = {\r\n transactionState: 'ERROR',\r\n error: {\r\n reason: 'PAYMENT_DATA_INVALID',\r\n message: resources.genericErrorMessage,\r\n intent: 'PAYMENT_AUTHORIZATION'\r\n }\r\n };\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n resolve(result);\r\n });\r\n };\r\n\r\n /**\r\n * Process payment data in CSU.\r\n * @param paymentData The payment data from Google SDK.\r\n */\r\n private processPayment = async (paymentData: IPaymentData) => {\r\n const {\r\n data: { checkout },\r\n context: { actionContext }\r\n } = this.props;\r\n const { merchantConfiguration } = this.state;\r\n const paymentConnectorId: string = merchantConfiguration?.connectorId || '';\r\n const message = {\r\n paymentToken: paymentData.paymentMethodData.tokenizationData.token,\r\n browserInfo: {\r\n acceptHeader: '*/*',\r\n colorDepth: window.screen.colorDepth,\r\n language: window.navigator.language,\r\n javaEnabled: window.navigator.javaEnabled(),\r\n screenHeight: window.screen.height,\r\n screenWidth: window.screen.width,\r\n userAgent: window.navigator.userAgent,\r\n timeZoneOffset: new Date().getTimezoneOffset()\r\n }\r\n };\r\n\r\n const settings = {\r\n ReturnUrl: GetCheckoutReturnUrl(actionContext),\r\n ...(paymentConnectorId && { PaymentConnectorId: paymentConnectorId })\r\n };\r\n\r\n const cardPaymentAcceptResult: CardPaymentAcceptResult = {\r\n AccessCode: btoa(JSON.stringify(message)),\r\n Settings: settings\r\n };\r\n\r\n await checkout?.result?.updateCardPaymentAcceptResult({ newCardPaymentAcceptResult: cardPaymentAcceptResult });\r\n await checkout?.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: true });\r\n };\r\n\r\n /**\r\n * Perform redirect\r\n */\r\n private performRedirect = async () => {\r\n const {\r\n config,\r\n data: { checkout },\r\n telemetry\r\n } = this.props;\r\n\r\n const { merchantConfiguration } = this.state;\r\n const checkoutState = checkout?.result;\r\n\r\n if (\r\n !StringExtensions.isNullOrWhitespace(checkoutState?.redirectPaymentConnectorId) &&\r\n checkoutState?.redirectPaymentConnectorId === merchantConfiguration?.connectorId\r\n ) {\r\n let redirectInfo;\r\n try {\r\n redirectInfo = JSON.parse(checkoutState?.redirectAdditionalContext || '');\r\n } catch (error) {\r\n telemetry.error(`[CheckoutGooglePay::performRedirect] unable to parse additional context`);\r\n return;\r\n }\r\n\r\n await checkoutState?.updatePaymentTenderType({ newPaymentTenderType: config.paymentTenderType });\r\n await checkoutState?.saveDataInStorage({});\r\n await checkoutState?.updateIsPaymentVerificationRequired({ newIsPaymentVerificationRequired: true });\r\n\r\n const { url, data } = redirectInfo;\r\n const form = document.createElement('form');\r\n\r\n form.method = 'POST';\r\n form.action = url;\r\n\r\n for (const propertyName of Object.keys(data)) {\r\n const element = document.createElement('input');\r\n element.name = propertyName;\r\n element.value = data[propertyName];\r\n form.appendChild(element);\r\n }\r\n\r\n document.body.appendChild(form);\r\n form.submit();\r\n } else {\r\n telemetry.warning(`[CheckoutGooglePay::performRedirect] cannot perform redirect, connector id is not valid or matching`);\r\n }\r\n };\r\n\r\n /**\r\n * Handle redirect shopper bank institution.\r\n */\r\n private handlePaymentVerification = async () => {\r\n const {\r\n config,\r\n context: { actionContext },\r\n data: { checkout },\r\n telemetry\r\n } = this.props;\r\n\r\n const { merchantConfiguration } = this.state;\r\n const checkoutState = checkout?.result;\r\n\r\n if (\r\n !StringExtensions.isNullOrWhitespace(checkoutState?.paymentTenderType) &&\r\n checkoutState?.paymentTenderType === config.paymentTenderType\r\n ) {\r\n const { requestFormData, query } = this.props.context.request;\r\n const formData = btoa(JSON.stringify(requestFormData ?? { redirectResult: query?.redirectResult }));\r\n\r\n const settings = {\r\n ReturnUrl: GetCheckoutReturnUrl(actionContext),\r\n PaymentConnectorId: merchantConfiguration?.connectorId\r\n };\r\n\r\n const cardPaymentAcceptResult: CardPaymentAcceptResult = {\r\n AccessCode: formData,\r\n Settings: settings\r\n };\r\n\r\n await checkoutState?.updateCardPaymentAcceptResult({ newCardPaymentAcceptResult: cardPaymentAcceptResult });\r\n await checkoutState?.checkoutCart.refreshCart({});\r\n await checkoutState?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n await checkoutState?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: true });\r\n } else {\r\n telemetry.warning(\r\n `[CheckoutGooglePay::handlePaymentVerification] ignore payment verification, checkout tender type: '${checkoutState?.paymentTenderType}', config tender type: '${config.paymentTenderType}'`\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutGooglePay;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICheckoutGooglePayViewProps } from './custom-checkout-google-pay';\r\n\r\nconst CheckoutGooglePayView: React.FC = props => {\r\n const { alert, checkoutGooglePay, checkoutButton } = props;\r\n return (\r\n \r\n {alert}\r\n
ref?.appendChild(checkoutButton || document.createElement('div'))}>
\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutGooglePayView;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IFilteredDeliveryOptions contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum filterDeliveryModeOption {\r\n none = 'none',\r\n filterOutNonCarrierDeliveryMode = 'filterOutNonCarrierDeliveryMode'\r\n}\r\n\r\nexport const enum useDefaultDeliveryOption {\r\n none = 'none',\r\n displaySelectedDeliveryOption = 'displaySelectedDeliveryOption',\r\n notDisplaySelectedDeliveryOption = 'notDisplaySelectedDeliveryOption'\r\n}\r\n\r\nexport interface IFilteredDeliveryOptionsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n filterDeliveryModeOption?: filterDeliveryModeOption;\r\n useDefaultDeliveryOption?: useDefaultDeliveryOption;\r\n className?: string;\r\n clientRender?: boolean;\r\n enableAddressFilter?: boolean;\r\n nameExcludedStrings?: string;\r\n cityExcludedStrings?: string;\r\n streetExcludedStrings?: string;\r\n excludedAddressErrorMessage?: string;\r\n paragraph?: Msdyn365.RichText;\r\n}\r\n\r\nexport interface IFilteredDeliveryOptionsResources {\r\n deliveryOptionsNotFound: string;\r\n genericErrorMessage: string;\r\n errorMessageTitle: string;\r\n priceFree: string;\r\n saveBtnLabel: string;\r\n editBtnLabel: string;\r\n cancelBtnLabel: string;\r\n deliveryOptionAriaLabel: string;\r\n unableDeliveryHome: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IFilteredDeliveryOptionsProps extends Msdyn365.IModule {\r\n resources: IFilteredDeliveryOptionsResources;\r\n config: IFilteredDeliveryOptionsConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\r\n description?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.description\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\r\n if (!description) {\r\n return null;\r\n }\r\n\r\n return {description};\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsDescription;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return

{message}

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

{title}

;\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorTitle;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\r\n isChecked: boolean;\r\n value?: string;\r\n ariaSetSize: number;\r\n ariaPosInSet: number;\r\n ariaLabel?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.value\r\n * @param root0.ariaSetSize\r\n * @param root0.ariaPosInSet\r\n * @param root0.ariaLabel\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\r\n isChecked,\r\n value,\r\n ariaSetSize,\r\n ariaPosInSet,\r\n ariaLabel,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsRadioButton;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\r\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { Address, CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { QueryResultSettingsProxy, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { action, computed, observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/checkout';\r\nimport { IFilteredDeliveryOptionsData } from './filtered-delivery-options.data';\r\nimport {\r\n filterDeliveryModeOption,\r\n IFilteredDeliveryOptionsProps,\r\n useDefaultDeliveryOption\r\n} from './filtered-delivery-options.props.autogenerated';\r\nimport DescriptionComponent from './components/filtered-delivery-options.description';\r\nimport ErrorMessageComponent from './components/filtered-delivery-options.error-message';\r\nimport ErrorTitleComponent from './components/filtered-delivery-options.error-title';\r\nimport RadioButtonComponent from './components/filtered-delivery-options.radio-button';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport interface ICheckoutDeliveryOptionsModuleProps\r\n extends IFilteredDeliveryOptionsProps,\r\n IModuleStateProps {}\r\n\r\nexport interface ICheckoutDeliveryOption {\r\n DeliveryOption: INodeProps;\r\n description?: React.ReactNode;\r\n price?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\r\n code: string;\r\n radioButton?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsList {\r\n DeliveryOptionsList: INodeProps;\r\n list: ICheckoutDeliveryOptionEdit[];\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsError {\r\n Error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewState {\r\n isLoading: boolean;\r\n isError: boolean;\r\n isShowList: boolean;\r\n isShowSelected: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewProps extends IFilteredDeliveryOptionsProps<{}> {\r\n CheckoutDeliveryOptions: IModuleProps;\r\n selectedItemId: string;\r\n deliveryOptionsData: DeliveryOption[];\r\n isLoading: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutDeliveryOptionsViewState;\r\n deliveryOptions?: ICheckoutDeliveryOptionsList;\r\n deliveryOptionSelected?: ICheckoutDeliveryOption;\r\n errorMessage?: ICheckoutDeliveryOptionsError;\r\n waiting?: React.ReactNode;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n showShipToDepot?: boolean;\r\n checkoutErrorRef?: React.RefObject;\r\n onDeliveryOptionChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n}\r\n\r\nfunction parseStringToArray(input: string): string[] {\r\n // Split the string by comma\r\n const elements = input.split(',');\r\n // Trim whitespace and remove single or double quotes from each element\r\n return elements.map(element => element.trim().replace(/^[\"']|[\"']$/g, ''));\r\n}\r\n\r\nfunction createRegexExcludedPatterns(excludedValuesString: string | undefined): RegExp | null {\r\n if (!excludedValuesString) {\r\n return null;\r\n }\r\n const substrings = parseStringToArray(excludedValuesString);\r\n // Create a regular expression from the substrings\r\n const regexString = substrings.map(s => s.toLowerCase().replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')).join('|');\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n return new RegExp(regexString);\r\n}\r\nfunction validateAddressString(addressFieldString: string, regexExcludedStrings: RegExp): boolean {\r\n const lowerCaseAddressField = addressFieldString.toLowerCase();\r\n // Create a regular expression from the substrings\r\n return !regexExcludedStrings.test(lowerCaseAddressField);\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutDeliveryOptions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutDeliveryOptions extends React.Component {\r\n @observable private selectedItemId: string = '';\r\n\r\n @observable private deliveryOptions: DeliveryOption[] = [];\r\n\r\n @observable private isLoading: boolean = false;\r\n\r\n @observable private errorMessage?: string;\r\n\r\n @computed private get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n public get expressPaymentDetailsFromCartPage() {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const properties =\r\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\r\n ?.StringValue ?? '';\r\n\r\n return properties ? JSON.parse(properties) : null;\r\n }\r\n\r\n public get isExpressPaymentAppliedInCartPage(): boolean {\r\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\r\n }\r\n\r\n private cartDeliveryMode?: string;\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private readonly isSelectDefaultOptionEnabled?: boolean;\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n private readonly deliveryNameExcludedValuesRegExp: RegExp | null;\r\n private readonly deliveryStreetExcludedValuesRegExp: RegExp | null;\r\n private readonly deliveryCityExcludedValuesRegExp: RegExp | null;\r\n\r\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.isSelectDefaultOptionEnabled =\r\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\r\n this.deliveryNameExcludedValuesRegExp = createRegexExcludedPatterns(props.config.nameExcludedStrings);\r\n this.deliveryCityExcludedValuesRegExp = createRegexExcludedPatterns(props.config.cityExcludedStrings);\r\n this.deliveryStreetExcludedValuesRegExp = createRegexExcludedPatterns(props.config.streetExcludedStrings);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.shippingAddress,\r\n async () => {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\r\n async isExpressCheckoutApplied => {\r\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\r\n checkoutError.errorMessage\r\n ) {\r\n this.setError(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n async checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\r\n try {\r\n await focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to focus on checkout error', error);\r\n }\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\r\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\r\n feature => feature.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n\r\n if (!this.canShip()) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const {\r\n moduleState: { isReady, isUpdating, hasError }\r\n } = this.props;\r\n const isError = !this.isLoading && hasError;\r\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\r\n const isShowSelected = !this.isLoading && !hasError && isReady;\r\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDeliveryOptionChange: this.onDeliveryOptionChange,\r\n selectedItemId: this.selectedItemId,\r\n deliveryOptionsData: this.deliveryOptions,\r\n isLoading: this.isLoading,\r\n alert: this.errorMessage && ,\r\n showShipToDepot:\r\n this.props.data.checkout.result?.shippingAddress?.ThreeLetterISORegionName === 'FIN' ||\r\n this.props.data.checkout.result?.shippingAddress?.ThreeLetterISORegionName === 'SWE',\r\n errorMessageData: this.errorMessage,\r\n viewState: {\r\n isLoading: this.isLoading,\r\n isError,\r\n isShowList,\r\n isShowSelected,\r\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\r\n },\r\n CheckoutDeliveryOptions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-delivery-options', this.props.config.className)\r\n },\r\n deliveryOptions: {\r\n DeliveryOptionsList: {\r\n className: 'ms-checkout-delivery-options__list',\r\n role: 'list',\r\n 'aria-label': deliveryOptionAriaLabel\r\n },\r\n list: this.getDeliveryOptionList()\r\n },\r\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\r\n errorMessage: this.getErrorMessage(),\r\n waiting: ,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSave,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n this.props.moduleState.init({\r\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\r\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\r\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\r\n status:\r\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\r\n this.canShip()\r\n ? 'updating'\r\n : 'disabled'\r\n });\r\n\r\n this.cartDeliveryMode = this.getSavedDeliveryOption();\r\n await this.loadDeliveryOptions();\r\n };\r\n\r\n private readonly canShip = (): boolean => {\r\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\r\n };\r\n\r\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\r\n if (deliveryMode) {\r\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\r\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\r\n if (!selectedItem) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const { id, typeName, context } = this.props;\r\n const { priceFree } = this.props.resources;\r\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\r\n\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\r\n description: ,\r\n price: (\r\n \r\n )\r\n };\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n // @ts-expect-error\r\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\r\n const count = this.deliveryOptions.length;\r\n const { priceFree } = this.props.resources;\r\n const { id, typeName, context } = this.props;\r\n\r\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\r\n code: deliveryOption.Code || '',\r\n radioButton: (\r\n \r\n ),\r\n description: (\r\n \r\n ),\r\n price: (\r\n \r\n )\r\n };\r\n });\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n const { saveBtnLabel = 'Save' } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n const { editBtnLabel = 'Change' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onSave = async (): Promise => {\r\n await this.onSubmit();\r\n };\r\n\r\n private readonly onEdit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onEdit is called.');\r\n\r\n this.clearError();\r\n this.onUpdating();\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onSubmit is called.');\r\n\r\n await this.updateCartDeliverySpecification(this.selectedItemId);\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n };\r\n\r\n private readonly onCancel = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onCancel is called.');\r\n\r\n // Reset to the saved value\r\n const savedDeliveryOption = this.getSavedDeliveryOption();\r\n if (savedDeliveryOption) {\r\n this.selectedItemId = savedDeliveryOption;\r\n this.onReady();\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n } else {\r\n this.onUpdating();\r\n }\r\n };\r\n\r\n private readonly getSavedDeliveryOption = (): string | undefined => {\r\n const cartLinesForShipping = this.getCartLinesForShipping();\r\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\r\n };\r\n\r\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\r\n if (deliveryModeId.trim() === '') {\r\n return;\r\n }\r\n\r\n const { resources } = this.props;\r\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\r\n const updateCartDeliverySpecificationInput = {\r\n deliveryModeId,\r\n shippingAddress: checkoutState.shippingAddress,\r\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\r\n };\r\n\r\n this.clearError();\r\n this.onPending();\r\n\r\n await checkoutState.checkoutCart\r\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\r\n .then(response => {\r\n if (response.status === 'FAILED') {\r\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\r\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\r\n }\r\n\r\n this.onReady();\r\n this.props.moduleState.setIsCancellable(true);\r\n })\r\n .catch(() => {\r\n this.setError(resources.genericErrorMessage);\r\n });\r\n };\r\n\r\n private readonly getCartLinesForShipping = (): CartLine[] => {\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context, resources, config } = this.props;\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n const cartId = (cartState.cart as Cart).Id;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n try {\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n if (hasShippingDeliveryLines) {\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({\r\n cart,\r\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n });\r\n }\r\n\r\n // TODO: Check if we can move this getDeliveryOptions to checkout state\r\n let deliveryOptionFilter: FilterDeliveryModeOption;\r\n switch (config.filterDeliveryModeOption) {\r\n case filterDeliveryModeOption.none:\r\n deliveryOptionFilter = FilterDeliveryModeOption.None;\r\n break;\r\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n break;\r\n default:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n }\r\n if (config.enableAddressFilter) {\r\n let isAddressValid = true;\r\n\r\n if (\r\n this.deliveryNameExcludedValuesRegExp &&\r\n !validateAddressString(shippingAddress.Name!, this.deliveryNameExcludedValuesRegExp)\r\n ) {\r\n isAddressValid = false;\r\n } else if (\r\n this.deliveryCityExcludedValuesRegExp &&\r\n !validateAddressString(shippingAddress.City!, this.deliveryCityExcludedValuesRegExp)\r\n ) {\r\n isAddressValid = false;\r\n } else if (\r\n this.deliveryStreetExcludedValuesRegExp &&\r\n !validateAddressString(shippingAddress.Street!, this.deliveryStreetExcludedValuesRegExp)\r\n ) {\r\n isAddressValid = false;\r\n }\r\n if (!isAddressValid) {\r\n this.setError(config.excludedAddressErrorMessage ?? '');\r\n this.isLoading = false;\r\n return;\r\n }\r\n }\r\n const response = await getDeliveryOptionsAsync(\r\n {\r\n callerContext: context.actionContext,\r\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\r\n },\r\n cartId,\r\n shippingAddress,\r\n [],\r\n deliveryOptionFilter,\r\n true\r\n );\r\n\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n\r\n var sortedDeliveryOptions: DeliveryOption[];\r\n if (response && response.length > 0) {\r\n sortedDeliveryOptions = response.sort((a, b) => {\r\n return a.ShippingChargeAmount! - b.ShippingChargeAmount!;\r\n });\r\n this.deliveryOptions = sortedDeliveryOptions;\r\n }\r\n } catch {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n if (this.deliveryOptions.length === 0) {\r\n this.setError(resources.deliveryOptionsNotFound);\r\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n } else {\r\n this.onUpdating();\r\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n private readonly getStoredDeliveryOptions = async (): Promise => {\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context } = this.props;\r\n const cartState = this.props.data.checkout.result.checkoutCart;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n if (hasShippingDeliveryLines) {\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({\r\n cart,\r\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n });\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n }\r\n\r\n if (this.cartDeliveryMode) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n private readonly loadDeliveryOptions = async (): Promise => {\r\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\r\n\r\n if (this.canShip() && shippingAddress) {\r\n if (\r\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\r\n this.isSelectDefaultOptionEnabled ||\r\n this.props.data.checkout.result?.isExpressCheckoutApplied\r\n ) {\r\n await this.getDeliveryOptions(shippingAddress);\r\n }\r\n\r\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.getStoredDeliveryOptions();\r\n }\r\n\r\n if (\r\n this.isSelectDefaultOptionEnabled ||\r\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\r\n this.isExpressPaymentAppliedInCartPage\r\n ) {\r\n try {\r\n await this.onSubmit();\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to submit delivery options', error);\r\n this.setError(this.props.resources.genericErrorMessage);\r\n }\r\n }\r\n }\r\n };\r\n\r\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\r\n const deliveryModeId = event.currentTarget.value;\r\n this.selectedItemId = deliveryModeId;\r\n };\r\n\r\n private readonly onReady = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n private readonly onPending = () => {\r\n if (!this.isSelectDefaultOptionEnabled) {\r\n this.props.moduleState.onPending();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutDeliveryOptions;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\n\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionEdit,\r\n ICheckoutDeliveryOptionsList,\r\n ICheckoutDeliveryOptionsViewProps\r\n} from './filtered-delivery-options';\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n \r\n {deliveryOption.radioButton}\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n checkoutErrorRef,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionSelected,\r\n alert,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton,\r\n showShipToDepot\r\n } = props;\r\n\r\n const extraTextField = props.config.paragraph;\r\n const extraText = extraTextField && ;\r\n\r\n const ShipToDepot = () => {\r\n return (\r\n
\r\n

⚠️{props.resources.unableDeliveryHome}

\r\n
\r\n );\r\n };\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {showShipToDepot && }\r\n {extraText}\r\n {viewState.isLoading && waiting}\r\n {viewState.isError && alert}\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\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 { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format',\n MaxLength = 'MaxLength'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly maxLengthRegEx: string = '^.{0,20}$';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n case AddressValidationRuleType.MaxLength: {\n if (type === AddressItemType.Phone) {\n validationRules.push(this._validationRule(ruleType, this.maxLengthRegEx, message));\n }\n\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List',\n Multiple = 'Multiple'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressAddNewButtonText?: string;\n addressAddNewButtonAriaLabel?: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressPhoneMaxLengthErrorMessage?:string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\n addressProductImage?: string;\n addressProductNumberText?: string;\n addressProductText?: string;\n addressProductUnitPriceText?: string;\n addressProductUOMText?: string;\n addressProductQuantityText?: string;\n addressProductActionsText?: string;\n addressSelectAllRowsText?: string;\n addressProductAddressText?: string;\n addressShipMultipleText?: string;\n addressShipMultipleAriaLabel?: string;\n saveAndContinueBtnLabel?: string;\n addressShipSingleText?: string;\n addressShipSingleAriaLabel?: string;\n clearSelectionButtonText?: string;\n clearSelectionButtonAriaLabel?: string;\n chooseAddressForSelectedItemsText?: string;\n chooseAddressForSelectedItemsAriaLabel?: string;\n noAddressSelectedAriaLabel?: string;\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \n )\n }\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\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\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 { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\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 * as React from 'react';\n\nexport interface IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n recordId?: string;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange, recordId } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\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\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

\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\nexport interface IAdressErrorMessage {\n message: string;\n}\n\n/**\n * Address error message.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\n const { message } = props;\n\n return

{message}

;\n};\n\nexport default AddressErrorMessageFunctionComponent;\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 IAdressErrorTitle {\n title: string;\n}\n\n/**\n * Address error title.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorTitleFunctionComponent: React.FC = (props: IAdressErrorTitle) => {\n const { title } = props;\n\n return

{title}

;\n};\n\nexport default AddressErrorTitleFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressInput {\n id?: string;\n name?: string;\n className: string;\n type: string;\n value: string;\n maxLength?: number;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address input.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressInputFunctionComponent: React.FC = (props: IAdressInput) => {\n const {\n id: itemId,\n name,\n className,\n type,\n value,\n maxLength,\n additionalAddributes,\n autoFocus: shouldUseAutoFocus,\n telemetryContent,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressInputFunctionComponent;\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 IAdressLabel {\n id: string;\n text: string;\n}\n\n/**\n * Address label.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressLabelFunctionComponent: React.FC = (props: IAdressLabel) => {\n const { id: itemId, text } = props;\n\n return (\n \n );\n};\n\nexport default AddressLabelFunctionComponent;\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 { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressListError {\n Error: INodeProps;\n isShowError: boolean;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressListItem {\n Item: INodeProps;\n key: number;\n error: IAddressListError;\n showItems: IAddressShowProps;\n isShowPrimaryButton: boolean;\n primaryButton: React.ReactNode;\n editButton: React.ReactNode;\n removeButton: React.ReactNode;\n}\n\nexport interface IAddressList {\n List: INodeProps;\n isShowList: boolean;\n heading: React.ReactNode;\n items: IAddressListItem[];\n}\n\nexport interface IAddressListProps {\n ListAddress: INodeProps;\n heading: React.ReactNode;\n isShowEmptyListMessage: boolean;\n emptyListMessage: React.ReactNode;\n addButton: React.ReactNode;\n primaryAddressList: IAddressList;\n otherAddressList: IAddressList;\n}\n\nexport interface IAddressListInputProps {\n isUpdating?: boolean;\n selectedAddress?: Address;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n heading?: HeadingData;\n primaryAddressSectionHeading?: HeadingData;\n otherAddressSectionHeading?: HeadingData;\n addressActionResponse?: IAddressResponse;\n resources: IAddressResource;\n contextRequest: Msdyn365.IRequestContext;\n telemetryContent?: ITelemetryContent;\n handleLineItemHeadingChange?(event: Msdyn365.ContentEditableEvent): void;\n onAddAddress(): void;\n onEditAddress(address?: Address): void;\n onRemoveAddress(address?: Address): void;\n onUpdatePrimaryAddress(address: Address): void;\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\n isAsyncCustomer?: boolean;\n isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\n isEditAsyncCustomerFeatureEnabled?: boolean;\n}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (\n className: string,\n addresses: Address[],\n showPrimaryButton: boolean,\n props: IAddressListInputProps,\n heading?: HeadingData\n): IAddressList => {\n const {\n resources,\n isUpdating,\n addressActionResponse,\n selectedAddress,\n addressFormat,\n onEditAddress,\n onRemoveAddress,\n onUpdatePrimaryAddress,\n addressPurposes,\n telemetryContent\n } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className },\n isShowList: addresses.length > 0,\n heading: heading && ,\n items: addresses.map(\n (address: Address): IAddressListItem => {\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\n\n // Disable 'primary', 'edit', and 'remove' buttons if the customer IS EITHER async OR async address creation feature is enabled and edit async customer feature is disabled.\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\n const isInvalidAsyncState: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n Item: { className: `${className}-list` },\n key: address.RecordId || 0,\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n }),\n error: {\n Error: { className: `${className}-error` },\n isShowError: !!isShowError,\n title: ,\n message: \n },\n isShowPrimaryButton: showPrimaryButton,\n\n primaryButton: (\n {\n onUpdatePrimaryAddress(address);\n }\n }}\n />\n ),\n editButton: (\n {\n onEditAddress(address);\n },\n role: 'link'\n }}\n />\n ),\n removeButton: (\n {\n onRemoveAddress(address);\n },\n role: 'link'\n }}\n />\n )\n };\n }\n )\n };\n};\n\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, primaryAddressSectionHeading } = props;\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\n};\n\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, otherAddressSectionHeading } = props;\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\n};\n\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\n const { addresses, heading, resources, onAddAddress, telemetryContent, handleLineItemHeadingChange } = props;\n const headingComponent = heading?.text && (\n {\n // Required\n },\n requestContext: props.contextRequest\n }}\n />\n );\n\n // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\n const disableAddButton: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false) &&\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { format, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressInputComponent from './address-input';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressSelectInputProps {\n hasExternalSubmitGroup?: boolean;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n resources: IAddressResource;\n selectedAddress: Address;\n telemetryContent?: ITelemetryContent;\n onAddressOptionChange(event: React.ChangeEvent): void;\n onShipMultipleAddresses?(): void;\n onAddAddress(): void;\n onSave(): void;\n onCancel(): void;\n multipleAddressShippingEnabled?: boolean;\n}\n\nexport interface IAddressSelectItem {\n key: number;\n SelectItem: INodeProps;\n input: React.ReactNode;\n showItems: IAddressShowProps;\n}\n\nexport interface IAddressSelectProps {\n SelectAddress: INodeProps;\n shipMultipleAddressesButton?: React.ReactNode;\n addButton: React.ReactNode;\n items: IAddressSelectItem[];\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\n const { addresses, onAddressOptionChange, selectedAddress, resources, addressPurposes } = props;\n const addressTypeDescription = address.AddressTypeValue\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\n : '';\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1,\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel, addressTypeDescription)\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n })\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const {\n resources,\n onCancel,\n onSave,\n onAddAddress,\n onShipMultipleAddresses,\n hasExternalSubmitGroup,\n multipleAddressShippingEnabled\n } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n
\n \n
\n ),\n shipMultipleAddressesButton: multipleAddressShippingEnabled && onShipMultipleAddresses && (\n \n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\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\nexport interface IShipMultipleAddressesTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productQuantity: string;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n productAddress?: string;\n isAllSelected: boolean;\n isMobile: boolean;\n clearSelectionButton: React.ReactNode;\n}\n\nexport interface IShipMultipleAddressesTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IShipMultipleAddressesTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Ship multiple addresses table heading.\n */\nexport class ShipMultipleAddressesTableHeading extends React.PureComponent {\n public state: IShipMultipleAddressesTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\n\n public getOnChange = () => (event: React.ChangeEvent) => {\n this.setState(\n {\n isChecked: !this.state.isChecked\n },\n () => {\n this.props.clickHandler(this.state.isChecked);\n }\n );\n };\n\n public render(): JSX.Element {\n if (!this.props.isMobile) {\n return (\n \n \n \n \n \n {this.props.productNumber}\n {{this.props.productName}}\n {\n \n {this.props.productUnitPrice}\n \n }\n {\n \n {this.props.productQuantity}\n \n }\n {{this.props.productAddress}}\n \n \n );\n } else {\n return (\n \n \n \n \n\n {/* Clear Selection Button */}\n
\n {this.props.clearSelectionButton}\n
\n \n \n \n );\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { Address, CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ICoreContext, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IShipMultipleAddressesLineViewModel } from '../../modules/checkout-shipping-address';\nimport { ICheckoutShippingCartLineInfo } from '../../modules/checkout-shipping-address/components';\n\nexport interface IShipMultipleAddressesLineProps extends CartLine {\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewModel;\n shippingLineImage: ICheckoutShippingCartLineInfo;\n price?: number;\n context: ICoreContext;\n product?: SimpleProduct;\n imageSettings?: IImageSettings;\n quantity: number;\n moduleId: string;\n moduleTypeName: string;\n currencyCode: string | undefined;\n customerAddresses: Address[];\n error?: string;\n isMobile: boolean;\n onSelect(line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void;\n onShippingAddressChange(shippingLine: CartLine, event: React.ChangeEvent): void;\n resources: {\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n };\n}\n\nexport interface IShipMultipleAddressesLineViewProps {\n key?: string;\n productImage?: React.ReactNode;\n productPrice?: React.ReactNode;\n productCurrencyCode?: React.ReactNode;\n productName?: string;\n productNumber?: React.ReactNode;\n productInfo?: React.ReactNode;\n productLabel?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n productQuantity?: number;\n productListId?: string;\n productAddress?: React.ReactNode;\n selectLine?: React.ReactNode;\n popUp?: JSX.Element;\n productAddressPopup?: JSX.Element | null | undefined;\n isMobile?: boolean;\n}\n\n/**\n * On Select line function.\n * @param shipMultipleAddressesLine - Ship multiple addresses line.\n * @param input - Ship multiple addresses line props.\n * @returns Set on select shipping line.\n */\nconst onSelectLineHandler = (shipMultipleAddressesLine: IShipMultipleAddressesLineViewModel, input: IShipMultipleAddressesLineProps) => (\n event: React.ChangeEvent\n) => {\n shipMultipleAddressesLine.isChecked = !shipMultipleAddressesLine.isChecked;\n\n input.onSelect(shipMultipleAddressesLine, event.target.checked);\n};\n\nexport const ShipMultipleAddressesLineView = (input: IShipMultipleAddressesLineProps): IShipMultipleAddressesLineViewProps | null => {\n const { customerAddresses, shipMultipleAddressesLine, shippingLineImage, product, context, onShippingAddressChange } = input;\n\n console.log('ShipMultipleAddressesLineView rendering');\n\n if (!product) {\n return null;\n }\n\n const { ItemId } = product;\n const { Quantity, ShippingAddress } = shipMultipleAddressesLine.cartLine;\n\n return {\n selectLine: (\n \n ),\n productImage: renderProductImage(\n '',\n context,\n product.Name!,\n shippingLineImage.imageProps.fallBackSrc,\n shippingLineImage.imageProps.src\n ),\n productInfo: renderProductInfo(input),\n productPrice: renderProductPrice(input),\n productNumber: product && (\n <>\n
{ItemId}
\n {input.error !== 'NONE' ?
{renderProductError(input)}
: undefined}\n \n ),\n productQuantity: Quantity,\n productAddress: (\n onShippingAddressChange(shipMultipleAddressesLine.cartLine, e)}\n value={ShippingAddress?.RecordId}\n >\n {customerAddresses?.map((address: Address, index: number) => (\n \n {address.FullAddress}\n \n ))}\n \n )\n };\n};\n\nconst renderProductImage = (\n className: string,\n context: ICoreContext,\n heading: string,\n image?: string,\n fallbackImage?: string\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n};\n\nconst renderProductDimensions = (props: IShipMultipleAddressesLineProps): (string | undefined)[] => {\n const { product } = props;\n if (!product || !product.Dimensions) {\n return [];\n }\n return product.Dimensions.map(dimension => {\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\n return undefined;\n }\n return dimension.DimensionValue.Value;\n });\n};\n\nconst renderProductInfo = (props: IShipMultipleAddressesLineProps): React.ReactNode | undefined => {\n const { product } = props;\n const name = product?.Name;\n const dimensions = renderProductDimensions(props);\n if (!product) {\n return [];\n }\n const productName =
{name}
;\n const dimensionsLine: string = dimensions.join(', ');\n return (\n
\n
{productName}
\n
{dimensionsLine}
\n
\n );\n};\n\nconst renderProductPrice = (props: IShipMultipleAddressesLineProps): React.ReactNode | undefined => {\n const { product } = props;\n\n if (!product?.Price) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n\nconst renderProductError = (props: IShipMultipleAddressesLineProps) => {\n const { error, resources } = props;\n\n if (!error) {\n return '';\n }\n\n const errorMessages = {\n OOS: resources.outOfStockProductErrorMessage,\n UNASSORTED: resources.unavailableProductErrorMessage,\n NONE: ''\n };\n\n return errorMessages[error];\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';\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { Address, CartLine } from '@msdyn365-commerce/retail-proxy';\nimport AddressButtonComponent from './address-button';\nimport { IShipMultipleAddressesTableHeadingProps, ShipMultipleAddressesTableHeading } from './address-ship-multiple-heading';\nimport { IAddressResource } from '../address-module.data';\nimport {\n IShipMultipleAddressesLineProps,\n IShipMultipleAddressesLineViewProps,\n ShipMultipleAddressesLineView\n} from './address-ship-multiple-lines';\nimport { IShipMultipleAddressesLineViewModel } from '../../modules/checkout-shipping-address';\nimport { ICartLineWithProduct, ICheckoutShippingCartLineInfo } from '../../modules/checkout-shipping-address/components';\n\nexport interface IAddressShipMultipleInputProps {\n context: ICoreContext;\n hasExternalSubmitGroup?: boolean;\n moduleId: string;\n moduleTypeName: string;\n currencyCode: string | undefined;\n resources: IAddressResource;\n shippingLines: ICartLineWithProduct[];\n shippingLineImages: ICheckoutShippingCartLineInfo[];\n selectedShippingLines: IShipMultipleAddressesLineViewModel[];\n customerAddresses: Address[];\n onSelect(line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void;\n onSelectAll(isChecked: boolean): void;\n onClear(): void;\n onShippingAddressChange(shippingLine: CartLine, event: React.ChangeEvent): void;\n onBulkShippingAddressChange(event: React.ChangeEvent): void;\n onShipSingleAddress(): void;\n onSave(): void;\n onCancel(): void;\n isMobile: boolean;\n telemetryContent?: ITelemetryContent;\n}\n\nexport interface IShipMultipleAddressesViewProps {\n ShipMultipleAddress?: INodeProps;\n shipSingleAddressButton?: React.ReactNode;\n clearSelectionButton?: React.ReactNode;\n addressDropdown?: React.ReactNode;\n ProductsTable?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductsTableRow?: INodeProps;\n shipMultipleAddressLines?: IShipMultipleAddressesLineViewProps[];\n isShowSaveButton?: boolean;\n saveButton?: React.ReactNode;\n isShowCancelButton?: boolean;\n cancelButton?: React.ReactNode;\n isMobile?: boolean;\n}\n\nexport const AddressShipMultiple = (props: IAddressShipMultipleInputProps): IShipMultipleAddressesViewProps => {\n const {\n context,\n currencyCode,\n hasExternalSubmitGroup,\n moduleId,\n moduleTypeName,\n shippingLines,\n shippingLineImages,\n selectedShippingLines,\n customerAddresses,\n isMobile,\n onSelect,\n onSelectAll,\n onClear,\n onShippingAddressChange,\n onBulkShippingAddressChange,\n onShipSingleAddress,\n onSave,\n onCancel,\n resources\n } = props;\n\n const { unavailableProductErrorMessage, outOfStockProductErrorMessage } = props.resources;\n\n const shipMultipleAddressLines: IShipMultipleAddressesLineViewModel[] = [];\n\n for (const line of shippingLines) {\n shipMultipleAddressLines.push({\n isChecked: false,\n cartLine: line.cartLine\n });\n }\n\n function _renderProductListHeader(): React.ReactNode {\n const headers: IShipMultipleAddressesTableHeadingProps = {\n selectAllRowsText: resources.addressSelectAllRowsText,\n productNumber: resources.addressProductNumberText!,\n productName: resources.addressProductText!,\n productUnitPrice: resources.addressProductUnitPriceText!,\n productQuantity: resources.addressProductQuantityText!,\n productAddress: resources.addressProductAddressText,\n clickHandler: (isChecked: boolean) => {\n onSelectAll(isChecked);\n },\n isAllSelected: selectedShippingLines && selectedShippingLines.every(line => line.isChecked),\n isMobile: isMobile,\n clearSelectionButton: (\n !line.isChecked)\n }}\n />\n )\n };\n\n return ;\n }\n\n function _renderShipMultipleAddressLines(): IShipMultipleAddressesLineViewProps[] {\n return shippingLines.map((line, index) => {\n const currentLineProps: IShipMultipleAddressesLineProps = {\n shipMultipleAddressesLine: {\n isChecked: (selectedShippingLines && selectedShippingLines[index] && selectedShippingLines[index].isChecked) || false,\n cartLine: line.cartLine\n },\n shippingLineImage: shippingLineImages[index],\n product: line.product ? line.product : undefined,\n price: line.product?.Price,\n context,\n quantity: line.cartLine?.Quantity!,\n moduleId: moduleId,\n moduleTypeName: moduleTypeName,\n currencyCode: currencyCode,\n customerAddresses: customerAddresses,\n isMobile: isMobile,\n onSelect: onSelect,\n onShippingAddressChange: onShippingAddressChange,\n resources: {\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n }\n };\n\n return ShipMultipleAddressesLineView({ ...currentLineProps })!;\n });\n }\n\n return {\n ShipMultipleAddress: { className: 'msc-address-select' },\n shipSingleAddressButton: (\n \n ),\n clearSelectionButton: (\n !line.isChecked)\n }}\n />\n ),\n addressDropdown: (\n onBulkShippingAddressChange(e)}\n defaultValue={''}\n disabled={selectedShippingLines.every(line => !line.isChecked)}\n >\n \n {customerAddresses?.map((address: Address, index: number) => (\n \n ))}\n \n ),\n ProductsTable: {\n className: `ms-address-select__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `ms-address-select-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: _renderProductListHeader(),\n shipMultipleAddressLines: _renderShipMultipleAddressLines(),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n isMobile: isMobile\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressItemType, IAddressItem } from '../address-format.data';\nimport AddressDetailItemComponent from './address-detail-item';\n\nexport interface IAddressShowItem {\n key: string;\n description: React.ReactNode;\n}\n\nexport interface IAddressShowProps {\n AddressDetail: INodeProps;\n items: IAddressShowItem[];\n}\n\nexport interface IAddressShowInputProps {\n addressFormat: IAddressItem[];\n address: Address;\n addressPurposes: AddressPurpose[];\n}\n\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\n const { addressFormat, addressPurposes, address } = props;\n\n return {\n AddressDetail: { className: 'msc-address-detail' },\n items: addressFormat.map(item => {\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n const addressType = addressPurposes.find(\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\n );\n if (addressType) {\n const addressTypeDescription = addressType.Description || '';\n return {\n key: item.name,\n description: (\n \n )\n };\n }\n }\n return {\n key: item.name,\n description: (\n \n )\n };\n })\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport AddressInputComponent from './address-input';\n\nexport interface IAddressBillingCheckbox {\n isChecked: boolean;\n value: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const AddressBillingCheckbox: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n text,\n telemetryContent,\n onChange\n}) => {\n const additionalAttributes = {\n checked: isChecked,\n 'aria-checked': isChecked\n };\n\n return (\n \n );\n};\nexport default AddressBillingCheckbox;\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 IAddressBillingHeading {\n text: string;\n}\n\nexport const AddressBillingHeading: React.FC = ({ text }) => (\n

{text}

\n);\n\nexport default IAddressBillingHeading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\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.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\n ): 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 if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.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) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private 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 return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\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\nexport default CheckoutBillingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n shippingAddressId?: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n isMultipleAddressShippingEnabled?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources,\n isMultipleAddressShippingEnabled = false\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n\n const renderShipMultiAddressView = isMultipleAddressShippingEnabled;\n const quantity = 1;\n return renderShipMultiAddressView ? (\n
{resources.headingAfterMultiSelectAddressSelect}
\n ) : (\n
\n
\n
{title}
\n
{itemTitle}
\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
\n )\n : isShowQty && (\n
\n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
\n );\n })}\n \n \n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\nimport { AddressShipMultiple, IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowShipMultipleAddress?: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n shippingGroupsBuffer: ICartLineWithProduct[];\n selectedShippingLines: IShipMultipleAddressesLineViewModel[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showShipMultipleAddresses?: IShipMultipleAddressesViewProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n orderLines?: IShipMultipleAddressesLineViewProps[];\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\nexport interface IShipMultipleAddressesLineViewModel {\n isChecked: boolean;\n cartLine: CartLine;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n this.state = { shippingGroups: [], shippingGroupsBuffer: [], selectedShippingLines: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\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.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): 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 if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartLines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0,\n shippingAddressId: line.cartLine.ShippingAddress?.RecordId ?? 0\n }));\n\n const numberOfCartLines = this._countItems(cartLines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartLines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: itemTitle,\n title: headingImages,\n resources: this.props.resources,\n isMultipleAddressShippingEnabled: config.multipleAddressShippingEnabled\n };\n\n const cartLineImages: React.ReactNode = ;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState } = this.props.data;\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update,\n isShowShipMultipleAddress: this.currentOperation === AddressOperation.Multiple\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n /**\n * Show address select.\n * @param onShipMultipleAddressesHandler - On ship to multiple addresses click function.\n * @param onAddAddressHandler - On add address click function.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddressSelectHandler: (\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ) => this._renderSelectAddress(onShipMultipleAddressesHandler, onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show ship multiple addresses.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders ship multiple addresses.\n */\n showShipMultipleAddressesHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderShipMultipleAddresses(onSaveHandler, onCancelHandler),\n showShipMultipleAddresses: this._renderShipMultipleAddresses(),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders add/update address.\n */\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\n showAddressSelect: this._renderSelectAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect = (line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void => {\n line.isChecked = isChecked;\n\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n // @ts-ignore\n if (shippingLine.cartLine?.cartLine?.LineId === line.cartLine.LineId) {\n shippingLine.isChecked = isChecked;\n }\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are invalid.`);\n }\n };\n\n public onSelectAll(isChecked: boolean): void {\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n shippingLine.isChecked = isChecked;\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\n }\n\n public onShippingAddressChange = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n const updated = this.state.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n this.setState({\n shippingGroups: updated\n });\n }\n };\n\n public updateIndividualAddresses = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n this.setState(prevState => {\n const updated = prevState.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n return {\n shippingGroups: updated\n };\n });\n }\n };\n\n public onBulkShippingAddressChange = (event: React.ChangeEvent): void => {\n if (this.state.selectedShippingLines && this.state.shippingGroups) {\n this.state.selectedShippingLines.forEach((shippingLine, index) => {\n if (shippingLine.isChecked) {\n const cartline = this.state.shippingGroups.find(\n // @ts-ignore\n line => line.cartLine.LineId === shippingLine.cartLine?.cartLine?.LineId\n );\n\n if (cartline) {\n this.updateIndividualAddresses(cartline.cartLine, event);\n }\n }\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\n };\n\n /**\n * Initialize pickup group.\n */\n @action\n private readonly _initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\n const cartLines: ICartLineWithProduct[] = [];\n\n try {\n const products = await this._getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n for (const line of pickupCartLines) {\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n cartLines.push({ cartLine: line, product });\n }\n this.setState({ shippingGroups: cartLines });\n this.setState({ shippingGroupsBuffer: cartLines });\n\n const initialShippingLineSelection = cartLines.map(cartLine => ({\n isChecked: false,\n cartLine: cartLine as CartLine\n }));\n this.setState({ selectedShippingLines: initialShippingLineSelection });\n } catch (error) {\n // @ts-ignore\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n this.setState({ shippingGroupsBuffer: [] });\n this.setState({ selectedShippingLines: [] });\n }\n };\n\n /**\n * On suggestion selected.\n * @param result - Suggestion result interface.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n const timeout = 0;\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, timeout);\n };\n\n /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n for (const formatAddress of addressFormatItem) {\n if (\n this.addUpdateAddress[formatAddress.name] !== undefined &&\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\n ) {\n this.addressFormat[formatAddress.name] = '';\n }\n }\n this._clearValidation();\n };\n\n /**\n * Method to clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\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) as IExpressPaymentDetails) : null;\n }\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n\n reaction(\n () => data.featureState.result,\n () => {\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n }\n );\n };\n\n /**\n * Method to get cart lines for delivery.\n * @returns The cart line collection.\n */\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\n };\n\n /**\n * Method to check cart line for delivery.\n * @param line -The cart line.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isDelivery = (line: CartLine): boolean => {\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\n };\n\n /**\n * Method to check cart line for delivery.\n * @param deliveryMode -The delivery mode.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\n pickupMode => pickupMode !== deliveryMode\n );\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\n };\n\n /**\n * Method to check cart line for delivery.\n * @param channelId - The channelId.\n * @param cartLines - Cart line collections.\n * @returns Collection of SimpleProduct.\n */\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext,\n line.CatalogId || 0\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n /**\n * Method to render ship multiple addresses.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n */\n private readonly _renderShipMultipleAddresses = (onSaveHandler?: () => void, onCancelHandler?: () => void) => {\n const { config, context } = this.props;\n const { imageSettings } = config;\n\n // Line images\n const cartlineImages: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n\n return AddressShipMultiple({\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler,\n\n onSelect: this.onSelect.bind(this),\n\n onSelectAll: this.onSelectAll.bind(this),\n\n onClear: () => {\n this.onSelectAll(false);\n },\n\n onShippingAddressChange: this.onShippingAddressChange.bind(this),\n\n onBulkShippingAddressChange: this.onBulkShippingAddressChange.bind(this),\n\n /**\n * On Ship to Single Address Function.\n */\n onShipSingleAddress: () => {\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n },\n\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n shippingLines: this.state.shippingGroups,\n\n shippingLineImages: cartlineImages,\n\n selectedShippingLines: this.state.selectedShippingLines ? this.state.selectedShippingLines : [],\n\n customerAddresses: this.customerAddresses,\n\n context: this.props.context,\n\n currencyCode: this.currencyCode,\n\n moduleId: this.props.id,\n\n moduleTypeName: this.props.typeName,\n\n resources: this.resources,\n\n telemetryContent: this.telemetryContent,\n\n isMobile: this.isMobile\n });\n };\n\n /**\n * Method to render add/update address.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n * @returns Address app/update props.\n */\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\n const addressFormat =\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\n ? this.addressFormat\n : this.addressFormat;\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render select address.\n * @param onShipMultipleAddressesHandler - To handle ship to multiple addresses button click.\n * @param onAddAddressHandler - To handle add address button click.\n * @param onSaveHandler - To handle save button click.\n * @param onCancelHandler - To handle cancel button click.\n * @returns Select address props.\n */\n private readonly _renderSelectAddress = (\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n\n /**\n * On Ship to Multiple Addresses Function.\n */\n onShipMultipleAddresses: () => {\n this._goToShipMultipleAddresses();\n onShipMultipleAddressesHandler?.();\n },\n\n /**\n * On Add Address Function.\n */\n onAddAddress: () => {\n this._goToAddAddress();\n onAddAddressHandler?.();\n },\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this._onSelectAddress();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler,\n\n multipleAddressShippingEnabled: this.props.config.multipleAddressShippingEnabled\n });\n };\n\n /**\n * Method to render show address.\n * @returns Show address props.\n */\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * Method to render map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * Method gets called on address option change.\n * @param event - To get current option.\n */\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n /**\n * Method to render map auto suggest.\n * @param name - Address name field.\n * @param value - Address name value field.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method to get called on address update change.\n * @param event - Input element.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * Method to get called on address update dropdown change.\n * @param event - Select element.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Method to get called on address update submit.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._clearError();\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: result.address });\n } else {\n this._onAddOrUpdateSuccess({ address: result.address });\n }\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n /**\n * Method to get called on country change.\n * @param countryRegionId - Country region id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Method to get all address format exclude list.\n * @returns Collection of address items.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Method to get all state/provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Method to set default country region id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Method to get default address region id.\n * @returns - Address object from existing addresses.\n */\n private readonly _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n /**\n * Method to get address from express payment details from cart page.\n * @returns - Address.\n */\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\n if (this.expressPaymentDetailsFromCartPage) {\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\n\n let addressFromCartExpress: Address | undefined;\n\n if (isExpressAddressAppliedInCartPage) {\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\n } else {\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\n }\n\n return addressFromCartExpress;\n }\n return undefined;\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 twoLetterIsoRegionName = tokenizedPaymentCard.Country;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n TwoLetterISORegionName: twoLetterIsoRegionName,\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 ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get address from expressAddress.\n * @param expressAddress -- The expressAddress.\n * @returns The address.\n */\n private readonly getExpressAddress = (expressAddress: Address): Address => {\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n ...expressAddress,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get three letter ISO region name from two letter ISO region name.\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\n * @returns The three letter ISO region name.\n */\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\n const countryRegion = this.countryRegions.find(country => {\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\n });\n\n return countryRegion?.CountryRegionId;\n };\n\n /**\n * Method to initialize all module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const checkoutState = this.props.data.checkout.result;\n\n if (this._canShip()) {\n let defaultAddress;\n const shippingCartLines: CartLine[] = this._getCartLinesforDelivery();\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (\n ArrayExtensions.hasElements(shippingCartLines) &&\n shippingCartLines[0].ShippingAddress !== undefined &&\n shippingCartLines[0].ShippingAddress.FullAddress !== ''\n ) {\n defaultAddress = shippingCartLines[0].ShippingAddress;\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\n } else if (this._getDefaultAddress()) {\n defaultAddress = this._getDefaultAddress();\n } else {\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\n }\n\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\n }\n }\n };\n\n /**\n * Method get called on submit address.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address submit for List operation.');\n this._onSelectAddress();\n break;\n case AddressOperation.Multiple:\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._onSelectMultiAddress();\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({ selectedShippingLines: resetSelectedShippingLines });\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n case AddressOperation.Multiple:\n this.props.telemetry.information('Shipping address cancel for Multiple operation.');\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n )\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode !== pickupDeliveryModeCode : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectMultiAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n if (this.props.config.multipleAddressShippingEnabled) {\n this._setCartLinesShippingAddress(this.addressListSelectedAddress);\n } else {\n this._setShippingAddress(this.addressListSelectedAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method get called on ship to multiple addresses.\n */\n private readonly _goToShipMultipleAddresses = () => {\n this._setDefaultCountryRegionId();\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._updateCurrentOperation(AddressOperation.Multiple);\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setCartLinesShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newCartLinesWithShippingAddress = this.state.shippingGroups.map(shippingGroup => shippingGroup.cartLine);\n this.props.data.checkout.result.updateCartLinesShippingAddress({ newCartLinesWithShippingAddress });\n this.props.data.checkout.result.checkoutCart\n .updateCartLineShippingAddress({ updatedCartLinesObject: newCartLinesWithShippingAddress })\n .catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n case AddressOperation.Multiple:\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\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 /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutShippingAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\nimport { IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.shipMultipleAddressesButton - Ship to multiple addresses button.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n shipMultipleAddressesButton,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n \n {addButton}\n {shipMultipleAddressesButton}\n \n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Ship Multiple Component.\n * @param param0 - Root param.\n * @param param0.ShipMultipleAddress - Ship multiple address form.\n * @param param0.shipSingleAddressButton - Ship single address button.\n * @param param0.clearSelectionButton - Clear selection button.\n * @param param0.addressDropdown - Address dropdown button.\n * @param param0.ProductsTable - Products table component.\n * @param param0.ProductsTableHeading - Products table heading component.\n * @param param0.ProductsTableRow - Products table row component.\n * @param param0.shipMultipleAddressLines - Ship multiple address lines.\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @returns Address ship multiple component node.\n */\nconst AddressShipMultiple: React.FC = ({\n ShipMultipleAddress,\n shipSingleAddressButton,\n clearSelectionButton,\n addressDropdown,\n ProductsTable,\n ProductsTableHeading,\n ProductsTableRow,\n shipMultipleAddressLines,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton,\n isMobile\n}) => {\n if (ShipMultipleAddress && isMobile !== undefined) {\n if (!isMobile) {\n return (\n \n {shipSingleAddressButton}\n \n {clearSelectionButton}\n\n {addressDropdown}\n \n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n } else {\n return (\n \n {shipSingleAddressButton}\n {addressDropdown}\n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n }\n } else {\n return null;\n }\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst _renderShipMultipleAddressLine = (\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewProps,\n isMobile: boolean,\n ProductsTableRow?: INodeProps\n): JSX.Element | null => {\n if (!shipMultipleAddressesLine) {\n return null;\n }\n\n const {\n selectLine,\n productImage,\n productNumber,\n productInfo,\n productPrice,\n productQuantity,\n productAddress\n } = shipMultipleAddressesLine;\n\n if (!isMobile) {\n return (\n \n {selectLine}\n \n
{productImage}
\n
{productNumber}
\n \n {productInfo}\n {productPrice}\n {productQuantity}\n {productAddress}\n
\n );\n } else {\n return (\n \n \n {selectLine}\n \n {productImage}\n {productInfo}\n {`QTY: ${productQuantity}`}\n \n {productPrice}\n \n \n {productAddress}\n \n \n );\n }\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n showShipMultipleAddresses,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {!viewState.isShowShipMultipleAddress && cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {viewState.isShowShipMultipleAddress && (\n \n )}\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.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 data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\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 { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\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 const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\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 private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\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 if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\n/**\n * The cartLine product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartLine interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId?: string;\n imageProps: IImageProps;\n deliveryMethodDesc?: string;\n requestDeliveryDate?: string;\n}\n\n/**\n * The checkout shipping cartLine props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutShippingCartLines: React.FC = ({ moduleClassName, cartLines }) => {\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n\n return (\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const className = `${moduleClassName}__group-images-lines-product`;\n return (\n
\n \n
{cartLine.deliveryMethodDesc}
\n
\n
{cartLine.requestDeliveryDate}
\n
\n );\n })}\n
\n
\n );\n};\n\n/**\n * The checkout shipping cartLine image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\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 { 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 SimpleProduct\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 getFallbackImageUrl,\n QueryResultSettingsProxy,\n StringExtensions,\n DeliveryOptionsCartLineAddress,\n ArrayExtensions,\n ObjectExtensions\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 { IImageProps, 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';\nimport {\n CheckoutShippingCartLines,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps,\n defaultImageSettings\n} from './components/checkout-shipping-cartlines-images';\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 readonly timeoutRetailCall: number;\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 this.timeoutRetailCall = this.props.config.timeoutToCallRetail !== undefined ? this.props.config.timeoutToCallRetail : 0;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n if (\n (this.props.data.checkout.result?.isExpressCheckoutApplied && this.canShip()) ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n await this.init();\n } else {\n // Wait for a specific time (e.g., 2000 milliseconds = 2 seconds)\n await new Promise(resolve => setTimeout(resolve, this.timeoutRetailCall));\n // Then call the init function\n await this.init();\n }\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 const cartLinesDisplay = this.getMultipleDeliveryOptionSelected();\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartLinesDisplay.filter(x => !ObjectExtensions.isNullOrUndefined(x))\n };\n\n const cartLineImages: React.ReactNode = ;\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 cartLineImages,\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 { checkout } = this.props.data;\n const { result } = checkout || {};\n const { shippingAddress, cartLinesWithShippingAddress, isPaymentVerificationRedirection, isExpressCheckoutApplied } = result || {};\n const { features } = this.props.context.actionContext.requestContext || {};\n\n if (!this.canShip() || !(shippingAddress || cartLinesWithShippingAddress)) {\n return;\n }\n\n const shouldSubmit = this.isSelectDefaultOptionEnabled || isExpressCheckoutApplied || this.isExpressPaymentAppliedInCartPage;\n\n if (features?.enable_checkout_race_condition_hot_fix) {\n if (isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n } else {\n if (!isPaymentVerificationRedirection || shouldSubmit) {\n await this.loadDeliveryOptionsBasedOnAddress(shippingAddress);\n }\n }\n } else {\n if (!isPaymentVerificationRedirection || shouldSubmit) {\n await this.loadDeliveryOptionsBasedOnAddress(shippingAddress);\n }\n\n if (isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n }\n\n if (shouldSubmit) {\n await this.onSubmit();\n }\n };\n\n private readonly loadDeliveryOptionsBasedOnAddress = async (shippingAddress?: Address): Promise => {\n if (this.isMultipleAddressShippingEnabled) {\n if (shippingAddress) {\n await this.getGroupDeliveryOptions(shippingAddress);\n } else {\n await this.getGroupDeliveryOptions();\n }\n } else if (shippingAddress) {\n await this.getDeliveryOptions(shippingAddress);\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 existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\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 && this.isMultipleAddressShippingEnabled === 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 const selectedDeliveryOption1 = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption =>\n cartLineSelectedDeliveryOption.cartLineId === cartLine1?.LineId\n )?.selectedDeliveryOption;\n return (\n \n );\n })}\n
\n
\n );\n } else {\n return null;\n }\n })}\n
\n );\n };\n\n private readonly getGroupDeliveryOptions = 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\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 const cart = cartState.cart;\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 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 let response: DeliveryOptionsCartLineAddress[] = [];\n if (shippingAddress !== undefined && shippingAddress.RecordId !== undefined) {\n const checkoutState = this.props.data.checkout.result;\n const cartLineIds = shippingCartLines.map(cartLine => (cartLine.LineId !== undefined ? cartLine.LineId : ''));\n await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cart.Id,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n ).then(async result => {\n if (result && result.length > 0) {\n response.push({ deliveryOptions: result, hasError: false, error: undefined, cartLineIds: cartLineIds });\n shippingCartLines?.forEach(cartLine => {\n cartLine.ShippingAddress = shippingAddress;\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: shippingCartLines });\n // console.log(updateLineDeliverySpecifications());\n } else {\n response.push({\n deliveryOptions: [],\n hasError: true,\n error: 'No delivery options available',\n cartLineIds: cartLineIds\n });\n }\n });\n } else {\n const inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n }\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 const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = selectedDeliveryOption;\n } else {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\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 private readonly getMultipleDeliveryOptionSelected = (): ICheckoutShippingCartLineInfo[] => {\n const products = this.props.data.products?.result;\n const cartLineImages: ICheckoutShippingCartLineInfo[] = [];\n\n this.cartLineSelectedDeliveryOptions.map(cartLineDeliveryOption => {\n const cartLine = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.find(\n (cartLine: CartLine) => cartLine.LineId === cartLineDeliveryOption.cartLineId\n );\n if (cartLine) {\n const product = products?.find((product: SimpleProduct) => product.RecordId === cartLine.ProductId);\n const imageProps: IImageProps = {\n requestContext: this.props.context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: product?.Name,\n src: product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n product?.ItemId,\n this.props.context.actionContext.requestContext.apiSettings,\n this.props.context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: this.props.config.imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n };\n let deliveryModeDesc = this.deliveryOptions.find(\n deliveryOption => deliveryOption.Code === cartLineDeliveryOption.selectedDeliveryOption\n )?.Description;\n if (StringExtensions.isNullOrEmpty(deliveryModeDesc)) {\n const group = this.groupDeliveryOptions.find(group => group.cartLineIds?.includes(cartLineDeliveryOption.cartLineId));\n const deliveryOption = group?.deliveryOptions.find(\n option => option.Code === cartLineDeliveryOption.selectedDeliveryOption\n );\n deliveryModeDesc = deliveryOption?.Description;\n }\n const cartLineDisplay = {\n lineId: cartLine.LineId,\n imageProps: imageProps,\n deliveryMethodDesc: deliveryModeDesc,\n requestDeliveryDate: cartLineDeliveryOption.requestDeliveryDate\n };\n cartLineImages.push(cartLineDisplay);\n }\n });\n\n return cartLineImages;\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 cartLineImages\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 && enableCheckoutCartLineDeliveryOptions && cartLineImages}\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 { DeliveryOptionsCartLineAddress } from '@msdyn365-commerce-modules/retail-actions';\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 groupDeliveryOption?: DeliveryOptionsCartLineAddress;\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 groupDeliveryOption,\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 (groupDeliveryOption !== undefined && cartLines !== undefined) {\n const cartLinesDate: CartLine[] = [];\n groupDeliveryOption?.cartLineIds?.map(cartLineId => {\n const tempCartLine = cartLines?.find(cartLine => cartLineId === cartLine?.LineId?.toString());\n if (tempCartLine !== undefined) {\n cartLinesDate.push(tempCartLine);\n }\n });\n\n if (cartLinesDate !== undefined) {\n onChange(event, cartLinesDate);\n }\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 groupName: string;\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 groupName,\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 { DeliveryOptionsCartLineAddress } from '@msdyn365-commerce-modules/retail-actions';\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 groupName: string; // Add groupName prop\n groupDeliveryOption?: DeliveryOptionsCartLineAddress;\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 groupName, // Destructure groupName prop\n context,\n cartLines,\n cartLineId,\n groupDeliveryOption,\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 const cartLinesRadio: CartLine[] = [];\n if (groupDeliveryOption !== undefined && cartLines !== undefined) {\n groupDeliveryOption?.cartLineIds?.map(cartLineId => {\n const tempCartLine = cartLines?.find(cartLine => cartLineId === cartLine?.LineId?.toString());\n if (tempCartLine !== undefined) {\n cartLinesRadio.push(tempCartLine);\n }\n });\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n if (cartLinesRadio !== undefined && cartLinesRadio.length > 0) {\n onChange(event, cartLinesRadio, undefined);\n } else {\n onChange(event, cartLines, cartLineId);\n }\n },\n [onChange, cartLinesRadio, 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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\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 moduleState?: IModuleStateManager;\n telemetryContent?: ITelemetryContent;\n checkoutGuidedFormHasError?: 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 moduleState,\n telemetryContent: this.telemetryContent,\n checkoutGuidedFormHasError: !!errorMessage\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 let electronicDeliveryInvoiceAddress: Address;\n\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\n\n if (hasShippingAddress && this.props.config.useShippingAddressAsElectronicDeliveryInvoiceAddress) {\n electronicDeliveryInvoiceAddress = this.props.data.checkout?.result?.shippingAddress as Address;\n }\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 DeliveryAddress: hasShippingAddress ? electronicDeliveryInvoiceAddress : undefined\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 { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../gift-card-balance-check.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 resources: {\n balanceCheckButton: 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.\n * @returns Apply gift card.\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.\n * @returns On gift card enter pin function result.\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 function.\n * @param onEnterGiftCardPin -On enter gift card pin.\n * @returns On enter gift card pin function result.\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 exp function.\n * @param onEnterGiftCardExp -On enter gift card.\n * @returns On enter gift card function result.\n */\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 resources: {\n balanceCheckButton,\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-gift-card-balance-check__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-gift-card-balance-check__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-gift-card-balance-check__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-gift-card-balance-check__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-gift-card-balance-check__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 {balanceCheckButton}\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 { GiftCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: GiftCard;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel }\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-gift-card-balance-check__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {` `}({giftCardAvailableBalanceLabel}\n {` `}\n {balance})\n \n );\n\n return {\n itemProps,\n id: giftCard && giftCard.Id,\n selectedGiftCard\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\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 { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { getForm, IForm } from './components/get-form';\nimport { getItem, IItem } from './components/get-item';\nimport { IGiftCardBalanceCheckProps } from './gift-card-balance-check.props.autogenerated';\n\ninterface IGiftCardBalanceCheckState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n giftCard?: GiftCard;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface IGiftCardBalanceCheckModuleProps extends IGiftCardBalanceCheckProps<{}> {}\n\nexport interface IGiftCardBalanceCheckViewProps extends IGiftCardBalanceCheckProps<{}>, IGiftCardBalanceCheckState {\n className?: string;\n\n form: IForm;\n item?: IItem;\n\n giftCardBalanceCheckProps: IModuleProps;\n\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardPin: string): void;\n enterGiftCardExp?(giftCardExp: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * GiftCardBalanceCheck component.\n * @extends {React.Component}\n */\nexport class GiftCardBalanceCheck extends React.Component {\n public state: IGiftCardBalanceCheckState = {\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 public shouldComponentUpdate(nextProps: IGiftCardBalanceCheckModuleProps, nextState: IGiftCardBalanceCheckState): 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: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this._isEnabled()) {\n this.props.context.telemetry.error('Gift card balance check is not supported, module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-gift-card-balance-check', className);\n\n const viewProps: IGiftCardBalanceCheckViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n giftCardBalanceCheckProps: { moduleProps: this.props, className: moduleClassName },\n\n enterGiftCardNumber: this._enterGiftCardNumber,\n enterGiftCardPin: this._enterGiftCardPin,\n enterGiftCardExp: this._enterGiftCardExp,\n applyGiftCard: this._applyGiftCard,\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 supportExternalGiftCard,\n additionalFields: showAdditionalFields,\n onEnterGiftCardNumber: this._enterGiftCardNumber,\n onEnterGiftCardPin: this._enterGiftCardPin,\n onEnterGiftCardExp: this._enterGiftCardExp,\n onApplyGiftCard: this._applyGiftCard\n }),\n item:\n this.state.giftCard &&\n getItem({\n giftCard: this.state.giftCard,\n getFormattedPrice: this._getFormattedPrice,\n resources\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\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 true;\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 _clearError = (): void => {\n this.setState({\n errorMessage: ''\n });\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.setState({\n errorMessage\n });\n };\n\n private readonly _applyGiftCard = async (): Promise => {\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const 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 (giftCard) {\n this._clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false,\n giftCard\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 giftCard: undefined\n });\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: { invalidCardTypeError, noBalanceError, invalidCardInfoError, 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\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 (!this.props.context.request.user.isAuthenticated && internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\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, invalidCodeError }\n } = this.props;\n\n if (!giftCardNumber) {\n this._setError(emptyInputError);\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 GiftCardBalanceCheck;\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 { IForm, IItem, IGiftCardBalanceCheckViewProps } from './index';\n\nexport const Form: 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 Item: React.FC = ({ itemProps, selectedGiftCard }) => {selectedGiftCard};\n\nconst GiftCardBalanceCheckView: React.FC = props => {\n const { giftCardBalanceCheckProps, form, item } = props;\n return (\n \n {form &&
}\n {item && }\n \n );\n};\n\nexport default GiftCardBalanceCheckView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderProps } from '../header.props.autogenerated';\n\n/**\n * The header preferred store component.\n */\n@observer\nexport class HeaderPreferredStore extends React.PureComponent> {\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\n\n /**\n * Handle click on the store selector.\n * @returns : Promise void.\n */\n public handleClick = () => {\n return this._findPreferredStoreOnClick(this.props);\n };\n\n public render(): JSX.Element | undefined {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n slots,\n resources\n } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\n const storeName =\n storeSelectorStateManager?.preferredStore && storeSelectorStateManager.preferredStore.StoreName\n ? storeSelectorStateManager.preferredStore.StoreName\n : resources.headerPreferredStoreText;\n\n return (\n
\n \n {storeName}\n \n {slots.storeSelector}\n
\n );\n }\n\n return undefined;\n }\n\n private async _findPreferredStoreOnClick(props: IHeaderProps): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n modules\n } = props;\n if (!storeSelectorStateManager) {\n return;\n }\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n await storeSelectorStateManager\n .openDialog({\n id: storeSelectorId,\n showMapViewLink: true,\n parentElementRef: this.modalCloseButtonRef,\n onLocationSelected: orgUnitLocation => {\n return Promise.resolve();\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to set preferred store');\n }\n });\n }\n}\n\nexport default HeaderPreferredStore;\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILogoProps {\n image: Msdyn365.IImageData;\n gridSettings?: Msdyn365.IGridSettings;\n link?: ILinkData;\n className?: string;\n telemetryContent?: ITelemetryContent;\n requestContext: Msdyn365.IRequestContext;\n typeName?: string;\n}\n\nexport interface ILinkData {\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n linkText?: string;\n}\n\n/**\n *\n * Logo component.\n * @extends {React.PureComponent}\n */\nexport class Logo extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: ILogoProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return
{this._renderLogo(this.props)}
;\n }\n\n private _renderLogo(config: ILogoProps): JSX.Element {\n if (config.link && config.link.linkUrl.destinationUrl) {\n return (\n \n {this._renderImage(config)}\n \n );\n }\n return this._renderImage(config);\n }\n\n private _renderImage(config: ILogoProps): JSX.Element {\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n}\n\nexport default Logo;\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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderResources } from '../header.props.autogenerated';\n\nexport interface INavIconProps {\n resources: IHeaderResources;\n isExpanded: boolean;\n targetId: string;\n telemetryContent?: ITelemetryContent;\n toggleNavBar(): void;\n}\n\n/**\n *\n * NavIcon component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class NavIcon extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: INavIconProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n KeyCodes,\n Modal,\n ModalBody,\n ModalHeader,\n onTelemetryClick,\n Popover,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\nimport { IHeaderData } from './header.data';\nimport { IHeaderProps, IHeaderResources, IMyAccountLinksData } from './header.props.autogenerated';\n\nexport interface IHeaderState {\n mobileMenuCollapsed: boolean;\n signinPopoverOpen: boolean;\n hasSigninerror?: boolean;\n}\n\nexport interface IHeaderViewProps extends IHeaderProps, IHeaderState {\n logo: React.ReactNode;\n wishListIconDesktop: React.ReactNode;\n wishListIconMobile: React.ReactNode;\n cartIcon: React.ReactNode;\n navIcon: React.ReactNode;\n className: string;\n menuBar: React.ReactNode[];\n search: React.ReactNode[];\n siteOptions: React.ReactNode[];\n HeaderTag: IModuleProps;\n HeaderContainer: INodeProps;\n MobileMenuContainer: INodeProps;\n MobileMenuHeader: React.ReactNode;\n MobileMenuBodyContainer: INodeProps;\n MobileMenuLinksContainer: INodeProps;\n HeaderTopBarContainer: INodeProps;\n Divider: INodeProps;\n\n AccountInfoDropdownParentContainer?: INodeProps;\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\n accountInfoDropdownButton?: React.ReactNode;\n\n signOutLink?: React.ReactNode;\n signInLink?: React.ReactNode;\n switchCustomerLink?: React.ReactNode;\n isOBORequest?: boolean;\n accountLinks?: React.ReactNode[];\n preferredStore?: React.ReactNode;\n currentDistributor?: React.ReactNode;\n}\n\n/**\n *\n * Header component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Header extends React.PureComponent, IHeaderState> {\n private readonly popOverRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private cart: ICartState | undefined;\n\n private isB2BSite: boolean = false;\n\n /**\n * The signed-in user name displayed in the header bar\n */\n @computed public get displayName(): Readonly {\n return (\n (MsDyn365.isOboRequest(this.props.context.request) ? this.workerName : this.customerName) ||\n this.props.context.request?.user?.name\n );\n }\n\n /**\n * OBO scenario. The name of worker who shops on behalf of customer.\n */\n @computed public get workerName(): Readonly {\n const worker = this.props.data.employee?.result;\n return worker?.Name;\n }\n\n @computed public get customerName(): Readonly {\n const customer = this.props.data.accountInformation?.result;\n if (MsDyn365.isOboRequest(this.props.context.request)) {\n // For OBO scenario, display full customer name because multiple customers may have the same first name.\n return customer ? customer.Name : undefined;\n } else {\n return customer ? customer.FirstName || customer.Name : undefined;\n }\n }\n\n public constructor(props: IHeaderProps) {\n super(props);\n this.popOverRef = React.createRef();\n this._toggleNavbar = this._toggleNavbar.bind(this);\n this._togglePopover = this._togglePopover.bind(this);\n this._keydown = this._keydown.bind(this);\n this.state = {\n mobileMenuCollapsed: true,\n signinPopoverOpen: false,\n hasSigninerror: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isB2BSite = isChannelTypeB2B(this.props.context.request);\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('keydown', this._keydown);\n }\n reaction(\n () => {\n this.props.data.cart.result;\n },\n () => {\n this.cart = this.props.data.cart.result;\n }\n );\n\n const {\n context: {\n request: { user }\n },\n resources: {\n signUpCustomerNotFoundTitle,\n signUpMultipleCustomerFoundTitle,\n signInCustomerNotAuthorizedTitle,\n closeNotificationLabel\n }\n } = this.props;\n\n const signinNotificationError = this._getSigninNotification(\n user,\n signUpMultipleCustomerFoundTitle,\n signUpCustomerNotFoundTitle,\n signInCustomerNotAuthorizedTitle\n );\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\n // For signup show simple error notification.\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('keydown', this._keydown, false);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n data: { accountInformation, wishlists },\n context: {\n request: { user }\n },\n context,\n resources: { cartLabel, cartQtyLabel }\n } = this.props;\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\n const navbarKey = 'header-nav-mobile';\n const customer = accountInformation && accountInformation.result;\n const cartIconSlot = this._getSlot('cartIcon');\n const menuBarSlot = this._getSlot('menuBar');\n const searchSlot = this._getSlot('search');\n let wishlistCount = 0;\n const siteOptionsSlot = this._getSlot('siteOptions');\n const preferredStoreSlot = this._getSlot('storeSelector');\n const currentDistributorSlot = this._getSlot('distributorSelector');\n if (wishlists !== undefined) {\n if (\n !wishlists.result ||\n !ArrayExtensions.hasElements(wishlists.result) ||\n !wishlists.result[0].CommerceListLines ||\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\n ) {\n wishlistCount = 0;\n } else {\n wishlistCount = wishlists.result[0].CommerceListLines.length;\n }\n }\n const viewProps: IHeaderViewProps = {\n ...(this.props as IHeaderProps),\n ...this.state,\n logo: (\n \n ),\n wishListIconDesktop: (\n \n ),\n wishListIconMobile: (\n \n ),\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\n cartIconSlot[0]\n ) : (\n \n ),\n navIcon: (\n \n ),\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\n className: headerClassName,\n HeaderTag: {\n moduleProps: this.props,\n className: classnames(headerClassName),\n 'aria-label': this.props.resources.headerAriaLabel,\n tag: 'header'\n },\n HeaderContainer: {\n className: classnames('ms-header__container')\n },\n HeaderTopBarContainer: {\n className: classnames('ms-header__topbar')\n },\n Divider: {\n className: classnames('ms-header__divider')\n },\n MobileMenuContainer: {\n tag: Modal,\n id: navbarKey,\n className: 'ms-header__mobile-hamburger',\n isOpen: !this.state.mobileMenuCollapsed,\n wrapClassName: 'ms-header__modal',\n toggle: this._toggleNavbar\n },\n MobileMenuHeader: ,\n MobileMenuBodyContainer: {\n tag: ModalBody,\n className: 'ms-header__mobile-hamburger-menu-body'\n },\n MobileMenuLinksContainer: {\n className: 'ms-header__mobile-hamburger-menu-links'\n },\n AccountInfoDropdownParentContainer: {\n className: 'ms-header__account-info'\n },\n AccountInfoDropdownPopoverConentContainer: this.displayName\n ? {\n tag: Popover,\n id: 'myprofilePopover',\n className: 'ms-header__account-info-content',\n placement: 'bottom',\n isOpen: this.state.signinPopoverOpen,\n target: this.popOverRef,\n toggle: this._togglePopover\n }\n : undefined,\n signInLink: this._getSigninButton(user, this.props.resources),\n signOutLink: this._getSignOutButton(user, this.props.resources),\n isOBORequest: MsDyn365.isOboRequest(this.props.context.request),\n switchCustomerLink: this._getSwitchCustomerButton(user, this.props.resources),\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(user, this.props.resources),\n accountLinks: this._getAccountLinks(customer),\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && ,\n currentDistributor: this.isB2BSite && ArrayExtensions.hasElements(currentDistributorSlot) ? currentDistributorSlot : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - Link Index.\n * @returns : Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.myAccountLinks?.[linkIndex]) {\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Get the slot.\n * @param slotName - Name of the slot.\n * @returns The slot.\n */\n private _getSlot(slotName: string): React.ReactNode[] | null {\n const { slots } = this.props;\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\n }\n\n /**\n * Renders the sign in button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSigninButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n !this.displayName && (\n \n \n {resources.signInLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSignOutButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n \n {resources.signOutLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSwitchCustomerButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SwitchCustomer);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const isOBOAccountSelected =\n MsDyn365.isOboRequest(this.props.context.request) && this.props.context.request.cookies.getAccountSelectionCookie();\n return (\n this.displayName &&\n isOBOAccountSelected && (\n this.props.context.request.cookies.removeAccountSelectionCookie()}\n {...attributes}\n >\n
\n
{format(resources.shoppingAsText, this.customerName)}
\n
{resources.switchCustomerLinkText}
\n
\n \n )\n );\n }\n\n private getBusinessPartnerSelectionUrl(): string | undefined {\n const route = MsDyn365.getUrlSync('businessPartnerSelection', this.props.context.actionContext);\n if (!route || !MsDyn365.msdyn365Commerce.isBrowser) {\n return undefined;\n }\n\n // MsDyn365.getUrlSync persists some params in the route and remove other params.\n // Among the persisted params, we need to remove catalogid.\n const persistedParamToRemove = ['catalogid'];\n const url = new URL(route, window.location.href);\n persistedParamToRemove.forEach(param => url.searchParams.delete(param));\n return url.href;\n }\n\n private _getSigninNotification(\n user: MsDyn365.IRequestContextUser | undefined,\n signUpMultipleCustomerFoundTitle: string,\n signUpCustomerNotFoundTitle: string,\n signInCustomerNotAuthorizedTitle: string\n ): string | undefined {\n if (!user?.retailServerErrorCode) {\n return undefined;\n }\n\n const { signUpCustomerNotFound, signUpMultipleCustomerFound, signInCustomerNotAuthorized } = this.props.config;\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\n const accountAuthorizationError = 'Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed';\n\n if (user?.retailServerErrorCode === notFoundError) {\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\n } else if (user?.retailServerErrorCode === multipleAccountError) {\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\n } else if (user?.retailServerErrorCode === accountAuthorizationError) {\n return signInCustomerNotAuthorized !== undefined ? signInCustomerNotAuthorized : signInCustomerNotAuthorizedTitle;\n }\n return user?.retailServerErrorMessage;\n }\n\n private _getAccountInfoDropdownButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n
\n
{this.displayName}
\n {MsDyn365.isOboRequest(this.props.context.request) && this.customerName && (\n
{format(resources.shoppingAsText, this.customerName)}
\n )}\n
\n \n )\n );\n }\n\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\n const { myAccountLinks } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n if (!this.displayName || !myAccountLinks || !ArrayExtensions.hasElements(myAccountLinks)) {\n return undefined;\n }\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\n payLoad.contentAction.etext = cta.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: cta.ariaLabel,\n className: 'ms-signin-info__account-link-button',\n linkText: cta.linkText,\n linkUrl: cta.linkUrl.destinationUrl,\n openInNewTab: cta.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n\n return (\n \n );\n });\n }\n\n private _toggleNavbar(): void {\n this.setState({\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\n });\n }\n\n private _togglePopover(): void {\n this.setState({\n signinPopoverOpen: !this.state.signinPopoverOpen\n });\n }\n\n private _keydown(event: KeyboardEvent): void {\n if (event.keyCode === KeyCodes.Escape) {\n this.setState({ mobileMenuCollapsed: true });\n }\n }\n}\n\nexport default Header;\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 { IHeaderViewProps } from './header';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {props.currentDistributor}\n {_renderDesktopAccountBlock(props)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n \n \n {props.MobileMenuHeader}\n {_renderReactFragment(props.menuBar)}\n \n {props.accountLinks ? props.accountLinks.map(link => link) : false}\n {props.siteOptions}\n {props.wishListIconMobile}\n {props.signInLink}\n {props.signOutLink}\n \n \n \n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map(link => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return {signInLink};\n }\n }\n props.context.telemetry.error('Header content is empty, module wont render.');\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
\n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
\n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
\n );\n })}\n
\n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
\n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
\n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
\n \n
\n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
{this.props.resources.productComparisonLoadingText}
;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n