{"version":3,"file":"static/js/15.c114dee95abee759f3c2.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-google-pay/custom-checkout-google-pay.tsx?fb70","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-google-pay/custom-checkout-google-pay.view.tsx?c19d","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/filtered-delivery-options.props.autogenerated.ts?9ca7","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.description.tsx?b6af","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-message.tsx?a76a","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-title.tsx?829f","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.radio-button.tsx?9751","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/filtered-delivery-options.tsx?9a97","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/filtered-delivery-options.view.tsx?6bae","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utilities/popup/Popup.tsx?8e42","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/components/previous__product.component.tsx?9d5a","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Msdyn365.Commerce.Online/./src/common/address-autosuggest.ts?f5a2","webpack://Msdyn365.Commerce.Online/./src/common/address-common.ts?cf4b","webpack://Msdyn365.Commerce.Online/./src/common/address-format.data.ts?6cbf","webpack://Msdyn365.Commerce.Online/./src/common/address-format.ts?4f04","webpack://Msdyn365.Commerce.Online/./src/common/address-meta-data.ts?c6e6","webpack://Msdyn365.Commerce.Online/./src/common/address-module.data.ts?697a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-checkbox.tsx?eb1a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-add.tsx?e6a6","webpack://Msdyn365.Commerce.Online/./src/common/components/address-alert.tsx?10d1","webpack://Msdyn365.Commerce.Online/./src/common/components/address-button.tsx?7f7b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-detail-item.tsx?5209","webpack://Msdyn365.Commerce.Online/./src/common/components/address-dropdown.tsx?f24b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-alert.tsx?bcde","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-message.tsx?89ad","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-title.tsx?3926","webpack://Msdyn365.Commerce.Online/./src/common/components/address-input.tsx?8073","webpack://Msdyn365.Commerce.Online/./src/common/components/address-label.tsx?6864","webpack://Msdyn365.Commerce.Online/./src/common/components/address-list.tsx?a628","webpack://Msdyn365.Commerce.Online/./src/common/components/address-select.tsx?c1df","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple-heading.tsx?5d65","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple-lines.tsx?ce68","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple.tsx?136d","webpack://Msdyn365.Commerce.Online/./src/common/components/address-show.tsx?3f60","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-checkbox.tsx?4008","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-heading.tsx?7bbd","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://Msdyn365.Commerce.Online/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/address-detail-item.tsx?d9a2","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-date.tsx?bd12","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-grp.tsx?3a15","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-radio.tsx?045f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/get-line-items.tsx?e389","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/address-format.data.ts?3c40","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/checkout.tsx?6737","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/checkout.view.tsx?e4cc","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/alert.tsx?cb1e","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-invoice-payment-summary.tsx?9549","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-line-items.tsx?92f8","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-order-summary.tsx?4a81","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/guided-card.tsx?58e0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/guided-form.tsx?f018","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/place-order-button.tsx?9b41","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/checkout.ts?7b6b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/place-order.ts?5aa0","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/components/get-form.tsx?e249","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/components/get-item.tsx?4862","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/gift-card-balance-check.tsx?d1f8","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?a0c9","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/logo.tsx?f27e","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/nav-icon.tsx?2475","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.tsx?e91a","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.view.tsx?cf0f","webpack://Msdyn365.Commerce.Online/./src/invoice-summary-lineitem.tsx?5f61","webpack://Msdyn365.Commerce.Online/./src/order-summary-lineitem.tsx?8a98","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-dimensions.tsx?15c5","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-item.tsx?d2da","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-status-message.tsx?cdb3","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.tsx?df8b","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.view.tsx?4d80","webpack://Msdyn365.Commerce.Online/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/header.view.tsx?9bd3"],"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 checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\r\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\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 this.onSubmit();\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","import { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IPopupProps } from './Popup.props';\r\n\r\nexport const Popup = (popupProps: IPopupProps) => {\r\n const {\r\n dialogStrings,\r\n className,\r\n imageSettings,\r\n gridSettings,\r\n data: { product },\r\n productQuantity,\r\n modalOpen,\r\n setModalOpen,\r\n context\r\n } = popupProps;\r\n\r\n if (!dialogStrings || !product) {\r\n return null;\r\n }\r\n const closeModal = () => {\r\n setModalOpen(false);\r\n };\r\n const fallbackImageUrl = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\r\n const quantity = productQuantity !== undefined ? productQuantity : 1;\r\n const itemsString =\r\n quantity === 1 ? dialogStrings.headerItemOneText : dialogStrings.headerItemFormatText.replace('{0}', quantity.toString());\r\n\r\n // console.log(product.AttributeValues?.slice());\r\n const tags = ['20Glutenfree', '18Vegan', '22Noaddedsugar'];\r\n const tagFriendlyNames = ['Gluten free', 'Vegan friendly', 'Light'];\r\n const specificationsList = ['25Productdescription(webs', '17Nutritionalvalues', '15Ingredients'];\r\n const specificationsListFiendly = ['Description', 'Nutritional values', 'Ingredients'];\r\n return (\r\n \r\n \r\n {itemsString}\r\n {dialogStrings.headerMessageText}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n

{product.Name}

\r\n
\r\n {context.cultureFormatter.formatCurrency(product.Price)}{' '}\r\n
\r\n
\r\n {// @ts-ignore\r\n product.AttributeValues?.slice()?.map((item, i) => {\r\n if (item.KeyName && tags.includes(item.KeyName) && item.TextValue !== 'No') {\r\n const tagFriendlyName = tagFriendlyNames[tags.indexOf(item.KeyName)];\r\n const tagId = tagFriendlyName.replace(/\\s+/g, '');\r\n return (\r\n <>\r\n {tagFriendlyName}\r\n \r\n );\r\n }\r\n })}\r\n
\r\n\r\n
\r\n {// @ts-ignore\r\n product.AttributeValues?.slice()?.map((item, i) => {\r\n if (item.KeyName && specificationsList.includes(item.KeyName) && item.TextValue !== 'No') {\r\n const specificationFriendlyName = specificationsListFiendly[specificationsList.indexOf(item.KeyName)];\r\n const specificationId = specificationFriendlyName.replace(/\\s+/g, '');\r\n return (\r\n
\r\n

{specificationFriendlyName}

\r\n
{item.TextValue}
\r\n
\r\n );\r\n }\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Popup;\r\n","import { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\n// import { RatingComponent } from '@msdyn365-commerce/components';\r\n// import { PriceComponent, RatingComponent } from '@msdyn365-commerce/components';\r\nimport { AddToCartBehavior, PriceComponent } from '@msdyn365-commerce/components';\r\nimport MsDyn365, {\r\n IComponent,\r\n IComponentProps,\r\n ICoreContext,\r\n IGridSettings,\r\n IImageData,\r\n IImageSettings,\r\n Image,\r\n IRequestContext,\r\n IImageProps,\r\n getCatalogId,\r\n getUrlSync\r\n} from '@msdyn365-commerce/core';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport {\r\n // ProductAvailableQuantity,\r\n ProductPrice,\r\n ProductSearchResult,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\n// import { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\n// import { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\r\n\r\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport * as React from 'react';\r\nimport { IPopupProps, Popup } from '../../utilities/popup';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n allowBack?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n dialogStrings?: {\r\n goToCartText: string;\r\n continueShoppingText: string;\r\n headerItemOneText: string;\r\n headerItemFormatText: string;\r\n headerMessageText: string;\r\n freePriceText: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n };\r\n}\r\n\r\nexport interface IProductComponent extends IComponent {}\r\n\r\nconst PREVIOUSProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText,\r\n ratingAriaLabel,\r\n allowBack,\r\n typeName,\r\n id,\r\n telemetryContent\r\n}) => {\r\n const product = data.product;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n let productUrl = product ? getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined) : '';\r\n if (allowBack && productUrl) {\r\n productUrl = updateProductUrl(productUrl, context, 'back=true');\r\n }\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\r\n\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n const valuemin = 0;\r\n const valuemax = 1000;\r\n\r\n // MODAL\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n\r\n const popupProps: IPopupProps = {\r\n context: context,\r\n className: 'msc-add-to-pmcart',\r\n id: id,\r\n typeName: typeName,\r\n data: { product: product, price: product.Price },\r\n // @ts-ignore\r\n dialogStrings: {},\r\n imageSettings: imageSettings,\r\n gridSettings: context.request.gridSettings,\r\n productQuantity: 1,\r\n navigationUrl: '',\r\n modalOpen: modalOpen,\r\n setModalOpen: setModalOpen\r\n };\r\n\r\n const renderModalPopup = ;\r\n\r\n const catPage = context.request.urlTokens.categories !== undefined ? context.request.urlTokens.categories[0] : '';\r\n\r\n const [available, setAvailable] = React.useState(true);\r\n const [loading, setLoading] = React.useState(true);\r\n const [availableLabel, setAvailableLabel] = React.useState('Available');\r\n const _isAvailable = async () => {\r\n await getEstimatedAvailabilityAsync(\r\n { callerContext: context.actionContext },\r\n { ProductIds: [product.RecordId], DefaultWarehouseOnly: true, QuantityUnitTypeValue: 2 }\r\n )\r\n .then(productAvailabilites => {\r\n if (\r\n productAvailabilites &&\r\n productAvailabilites.ProductWarehouseInventoryAvailabilities &&\r\n productAvailabilites.ProductWarehouseInventoryAvailabilities?.length > 0\r\n ) {\r\n if (product.ItemId !== '99991') {\r\n if (\r\n (productAvailabilites.ProductWarehouseInventoryAvailabilities[0].MaximumPurchasablePhysicalAvailableQuantity ||\r\n 0) <= 0\r\n ) {\r\n setAvailable(false);\r\n setLoading(false);\r\n setAvailableLabel(\r\n productAvailabilites.ProductWarehouseInventoryAvailabilities[0].PhysicalAvailableInventoryLevelLabel ||\r\n 'OUT OF STOCK'\r\n );\r\n } else if (\r\n (productAvailabilites.ProductWarehouseInventoryAvailabilities[0].MaximumPurchasablePhysicalAvailableQuantity ||\r\n 0) >= 1\r\n ) {\r\n setAvailable(true);\r\n setLoading(false);\r\n } else if (\r\n (productAvailabilites.ProductWarehouseInventoryAvailabilities[0].MaximumPurchasablePhysicalAvailableQuantity ||\r\n 0) > 0 &&\r\n (productAvailabilites.ProductWarehouseInventoryAvailabilities[0].MaximumPurchasablePhysicalAvailableQuantity ||\r\n 0) < 1\r\n ) {\r\n // To cover the scenario where Maximum[...]Quantity is 0.5 or so\r\n setAvailable(false);\r\n setLoading(false);\r\n // Without this it would say \"Available\", which it technically is but it also can't be bought\r\n switch (context.request.locale) {\r\n case 'it':\r\n setAvailableLabel('NON DISPONIBILE');\r\n break;\r\n case 'en-GB':\r\n setAvailableLabel('OUT OF STOCK');\r\n break;\r\n case 'en-US':\r\n setAvailableLabel('OUT OF STOCK');\r\n break;\r\n case 'de':\r\n setAvailableLabel('NICHT VERFÜGBAR');\r\n break;\r\n case 'fr':\r\n setAvailableLabel('NON DISPONIBLE');\r\n break;\r\n default:\r\n setAvailableLabel('OUT OF STOCK');\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n setAvailable(false);\r\n // Without this it would say \"Available\", which it technically is but it also can't be bought\r\n switch (context.request.locale) {\r\n case 'it':\r\n setAvailableLabel('NON DISPONIBILE');\r\n break;\r\n case 'en-GB':\r\n setAvailableLabel('OUT OF STOCK');\r\n break;\r\n case 'en-US':\r\n setAvailableLabel('OUT OF STOCK');\r\n break;\r\n case 'de':\r\n setAvailableLabel('NICHT VERFÜGBAR');\r\n break;\r\n case 'fr':\r\n setAvailableLabel('NON DISPONIBLE');\r\n break;\r\n default:\r\n setAvailableLabel('OUT OF STOCK');\r\n break;\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n });\r\n return;\r\n };\r\n\r\n React.useEffect(() => {\r\n void _isAvailable();\r\n }, [product]);\r\n\r\n /**\r\n * Gets the react component for product rating.\r\n * @param productCardimageSettings - Module image settings for product card.\r\n * @param gridSettings - Grid settings defined in theme.\r\n * @param imageUrl - Image url.\r\n * @param fallbackImageUrl - Fallback url for imge.\r\n * @param altText - Image Alt text.\r\n * @param requestContext - Request context using the component.\r\n * @returns React component for product image.\r\n */\r\n function renderProductPlacementImage(\r\n productCardimageSettings?: IImageSettings,\r\n gridSettings?: IGridSettings,\r\n imageUrl?: string,\r\n fallbackImageUrl?: string,\r\n altText?: string,\r\n requestContext?: IRequestContext\r\n ): JSX.Element | null {\r\n if (!imageUrl || !gridSettings || !productCardimageSettings) {\r\n return null;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\r\n const emptyPlaceHolderImage = context.app.config.placeholderImageName as string;\r\n let fallbackImageSource = fallbackImageUrl;\r\n if (emptyPlaceHolderImage && fallbackImageUrl) {\r\n fallbackImageSource = `${fallbackImageUrl},${emptyPlaceHolderImage}`;\r\n }\r\n const image: IImageData = {\r\n src: imageUrl,\r\n altText: altText ? altText : '',\r\n fallBackSrc: fallbackImageSource\r\n };\r\n const imageProps: IImageProps = { gridSettings };\r\n\r\n imageProps.gridSettings = gridSettings;\r\n imageProps.imageSettings = productCardimageSettings;\r\n imageProps.imageSettings.cropFocalRegion = true;\r\n return ;\r\n }\r\n\r\n if (catPage === 'pick-mix') {\r\n // @ts-ignore\r\n const searchContainerResaurces = context?.actionContext?.requestCache?.internalCache?.__MR['SEARCH-RESULT-CONTAINER']?.item;\r\n // @ts-ignore\r\n const pmProducts = context.pmProducts;\r\n const RecordId = product.RecordId;\r\n const initialQuntity = pmProducts && pmProducts[RecordId] && pmProducts[RecordId].Qty;\r\n const [add, setAdd] = React.useState(initialQuntity > 0 && initialQuntity !== undefined ? false : true);\r\n\r\n const [quantity, setQuantity] = React.useState(initialQuntity > 0 && initialQuntity !== undefined ? initialQuntity : 0);\r\n\r\n const removedFromCart = () => {\r\n const localPm = localStorage && localStorage.getItem('pm_products');\r\n const localPmProds = localPm && localPm !== null ? localPm : JSON.stringify({});\r\n const pmProductsList = JSON.parse(localPmProds);\r\n if (pmProductsList[product.RecordId] === undefined) {\r\n setQuantity(0);\r\n setAdd(true);\r\n }\r\n };\r\n const cookiePMset = typeof window !== 'undefined' ? localStorage.setItem('pm_products', JSON.stringify(pmProducts)) : undefined;\r\n React.useEffect(() => {\r\n const wrapper = document.getElementsByClassName('pm-cart--ctn')[0];\r\n\r\n // tslint:disable-next-line:typedef no-any\r\n function handleButtonClick(event: any) {\r\n const isButton = event.target.nodeName === 'BUTTON';\r\n\r\n if (!isButton) {\r\n return;\r\n }\r\n const timer = setTimeout(() => {\r\n removedFromCart();\r\n }, 100);\r\n return () => {\r\n clearTimeout(timer);\r\n };\r\n }\r\n\r\n wrapper.addEventListener('click', handleButtonClick);\r\n return () => wrapper.removeEventListener('click', handleButtonClick);\r\n });\r\n\r\n function plusOneProductToPmCart(pRecordId: number): void {\r\n // @ts-ignore\r\n const pmProductsList = context.pmProducts;\r\n const productQuantity = Number(pmProductsList[pRecordId]?.Qty) + 1;\r\n if (pmProductsList[pRecordId] !== undefined) {\r\n pmProductsList[pRecordId].Qty = productQuantity;\r\n cookiePMset;\r\n setQuantity(productQuantity);\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n function removeOneProductFromPmCart(pRecordId: number): void {\r\n // @ts-ignore\r\n const pmProductsList = context.pmProducts;\r\n const productQuantity = Number(pmProductsList[pRecordId]?.Qty) - 1;\r\n\r\n if (productQuantity >= 0) {\r\n pmProductsList[pRecordId].Qty = productQuantity;\r\n cookiePMset;\r\n setQuantity(productQuantity);\r\n }\r\n if (productQuantity === 0) {\r\n delete pmProductsList[pRecordId];\r\n cookiePMset;\r\n setAdd(true);\r\n }\r\n }\r\n\r\n function addProductToPmCart(\r\n pRecordId: number,\r\n Name: string | undefined,\r\n Description: string | undefined,\r\n PrimaryImageUrl: string | undefined,\r\n pQuantity: number,\r\n Price: number\r\n ): void {\r\n // @ts-ignore\r\n const pmProductsList = context.pmProducts;\r\n setAdd(false);\r\n pmProductsList[pRecordId] = {\r\n Id: pRecordId,\r\n Item: Name,\r\n Qty: pQuantity,\r\n UOM: '',\r\n Price: Price,\r\n Description: Description,\r\n DataAreaId: '',\r\n PrimaryImageUrl: PrimaryImageUrl\r\n };\r\n // @ts-ignore\r\n context.pmProducts = pmProductsList;\r\n cookiePMset;\r\n setQuantity(1);\r\n }\r\n\r\n // @ts-ignore\r\n const AddToCartButtons = ({ showadd }) => {\r\n if (showadd) {\r\n return (\r\n <>\r\n {/* tslint:disable-next-line:jsx-no-lambda react-this-binding-issue */}\r\n \r\n addProductToPmCart(\r\n product.RecordId,\r\n product.Name,\r\n product.ItemId,\r\n product.PrimaryImageUrl,\r\n 1,\r\n product.Price\r\n )\r\n }\r\n >\r\n {searchContainerResaurces.addText}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {/* tslint:disable-next-line:jsx-no-lambda react-this-binding-issue */}\r\n removeOneProductFromPmCart(product.RecordId)}\r\n title='Press to decrease the quantity by 1'\r\n className='decrement quantity__controls'\r\n aria-hidden='true'\r\n aria-label='Press to decrease the quantity by 1'\r\n color='secondary'\r\n />\r\n {/* tslint:disable-next-line:max-line-length */}\r\n \r\n {/* tslint:disable-next-line:jsx-no-lambda react-this-binding-issue max-line-length */}\r\n plusOneProductToPmCart(product.RecordId)}\r\n title='Press to increment quantity by 1'\r\n className='increment quantity__controls '\r\n aria-hidden='true'\r\n aria-label='Press to increment quantity by 1'\r\n color='secondary'\r\n />\r\n \r\n );\r\n };\r\n // @ts-ignore\r\n return (\r\n
\r\n
\r\n {renderProductPlacementImage(\r\n imageSettings,\r\n context.request.gridSettings,\r\n product.PrimaryImageUrl,\r\n product.PrimaryImageUrl,\r\n product.Name,\r\n context.actionContext.requestContext\r\n )}\r\n
\r\n
\r\n

{product.Name}

\r\n {renderModalPopup}\r\n {/* tslint:disable-next-line:max-line-length jsx-no-lambda react-this-binding-issue react-a11y-event-has-role */}\r\n {\r\n setModalOpen(true)}\r\n aria-label={renderLabel(\r\n product.Name,\r\n context.cultureFormatter.formatCurrency(product.Price),\r\n product.AverageRating,\r\n ratingAriaLabel\r\n )}\r\n className='hyperlink view_details '\r\n {...attribute}\r\n >\r\n {searchContainerResaurces.viewDetailsText}\r\n \r\n }\r\n

{product.Description}

\r\n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText)}\r\n\r\n
\r\n \r\n
\r\n
\r\n {product.RecordId}\r\n {product.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n const _onAddSelectionToBag = async (event: React.MouseEvent): Promise => {\r\n event?.stopPropagation();\r\n event?.preventDefault();\r\n\r\n // Also manage the removal from cart\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- read config file.\r\n const addToCartBehavior = context.app.config.addToCartBehavior;\r\n const navigationUrl: string | undefined = getUrlSync('cart', context.actionContext);\r\n\r\n const catalogId = getCatalogId(context.actionContext.requestContext);\r\n\r\n const quantity: number = 1;\r\n\r\n const cartState = await getCartState(context.actionContext);\r\n const addToCartResult = await cartState.addProductToCart({\r\n product: data.product as SimpleProduct,\r\n count: quantity,\r\n availableQuantity: undefined,\r\n additionalProperties: undefined,\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- read config file.\r\n enableStockCheck: context.app.config.enableStockCheck,\r\n isPriceKeyedIn: undefined,\r\n customPrice: undefined,\r\n isAddEmailDeliveryItemToCart: undefined,\r\n shouldSkipSiteSettings: undefined,\r\n catalogId: catalogId\r\n });\r\n\r\n if (addToCartResult.status === 'SUCCESS') {\r\n if (addToCartBehavior === AddToCartBehavior.showModal) {\r\n // setDisabled(false);\r\n } else if (addToCartBehavior === AddToCartBehavior.showNotification) {\r\n // setDisabled(false);\r\n // const notification = new ItemSuccessfullyAddedToCartNotification(\r\n // props.context,\r\n // props.dialogStrings,\r\n // props.imageSettings,\r\n // undefined,\r\n // product,\r\n // data?.product?.Price,\r\n // quantity,\r\n // props.navigationUrl,\r\n // undefined,\r\n // props.id,\r\n // props.typeName\r\n // );\r\n // NotificationsManager.instance().addNotification(notification);\r\n } else if (\r\n MsDyn365.isBrowser &&\r\n navigationUrl &&\r\n (addToCartBehavior === undefined || addToCartBehavior === AddToCartBehavior.goToCart)\r\n ) {\r\n window.location.assign(navigationUrl);\r\n } else {\r\n // setDisabled(false);\r\n }\r\n // propagateResult(props, addToCartResult);\r\n } else {\r\n // NotificationsManager.instance().addNotification(\r\n // new ErrorNotification(\r\n // addToCartResult.errorDetails?.LocalizedMessage ?? 'Add to cart failed',\r\n // props.dialogStrings?.closeNotificationLabel ?? ''\r\n // )\r\n // );\r\n // propagateError(props, { failureReason: 'CARTACTIONFAILED', cartActionResult: addToCartResult });\r\n // setDisabled(false);\r\n }\r\n };\r\n\r\n //TODO old\r\n // const currentCartState = await getCartState(context?.actionContext);\r\n // const cartLines = [\r\n // {\r\n // ItemId: product.ItemId,\r\n // ProductId: product.RecordId,\r\n // Quantity: 1,\r\n // TrackingId: ''\r\n // }\r\n // ];\r\n // return addCartLinesAsync(\r\n // { callerContext: context.actionContext },\r\n // currentCartState.cart.Id,\r\n // cartLines,\r\n // currentCartState.cart.Version!\r\n // ).then(async () => {\r\n // await currentCartState.refreshCart({});\r\n // });\r\n\r\n let cart_string = '';\r\n switch (context.request.locale) {\r\n case 'it':\r\n cart_string = 'Aggiungi';\r\n break;\r\n case 'en-GB':\r\n cart_string = 'Add';\r\n break;\r\n case 'en-US':\r\n cart_string = 'Add';\r\n break;\r\n case 'fr':\r\n cart_string = 'Ajouter';\r\n break;\r\n case 'de':\r\n cart_string = 'In den';\r\n break;\r\n default:\r\n cart_string = 'Add';\r\n break;\r\n }\r\n\r\n let percent_discount = '';\r\n let discount_string = '';\r\n\r\n if (product.Price && product.BasePrice && product.BasePrice !== product.Price) {\r\n percent_discount = (100 - (product.Price / product.BasePrice) * 100).toFixed(0);\r\n discount_string = `-${percent_discount}%`;\r\n }\r\n\r\n const custom_basePrice = context.cultureFormatter.formatCurrency(product.BasePrice!.toFixed(2));\r\n const custom_adjustedPrice = context.cultureFormatter.formatCurrency(product.Price.toFixed(2));\r\n const omnibus_price = data.product?.AttributeValues?.filter(attribute => attribute.Name?.includes('Minimum Price Last 30 Days'));\r\n let omnibus_price_currency = '';\r\n if (omnibus_price !== undefined && omnibus_price?.length !== 0 && omnibus_price[0] !== undefined) {\r\n omnibus_price_currency = context.cultureFormatter.formatCurrency(omnibus_price[0].CurrencyValue!, omnibus_price[0].CurrencyCode);\r\n }\r\n\r\n let omnibus_string: React.ReactNode;\r\n switch (context.request.locale) {\r\n case 'it':\r\n omnibus_string = 'Prezzo più basso recente:';\r\n break;\r\n case 'en-GB':\r\n omnibus_string = 'Lowest recent price:';\r\n break;\r\n case 'en-us':\r\n omnibus_string = 'Lowest recent price:';\r\n break;\r\n case 'fr':\r\n omnibus_string = 'Prix le plus bas récemment:';\r\n break;\r\n case 'de':\r\n omnibus_string = 'niedrigster aktueller Preis:';\r\n break;\r\n default:\r\n omnibus_string = 'Lowest recent price:';\r\n break;\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n onTelemetryClick(telemetryContent!, payLoad, product.Name!);\r\n }}\r\n aria-label={renderLabel(\r\n product.Name,\r\n context.cultureFormatter.formatCurrency(product.Price),\r\n product.AverageRating,\r\n ratingAriaLabel\r\n )}\r\n className={`msc-product status_${available ? 'AVAL' : 'OOS'}`}\r\n {...attribute}\r\n >\r\n
\r\n
\r\n {renderProductPlacementImage(\r\n imageSettings,\r\n context.request.gridSettings,\r\n product.PrimaryImageUrl,\r\n product.PrimaryImageUrl,\r\n product.Name,\r\n context.actionContext.requestContext\r\n )}\r\n
\r\n
\r\n
\r\n

{product.Name}

\r\n
\r\n
\r\n

{product.Description}

\r\n
\r\n
\r\n {/*\r\n //TODO restore way of saving list attribute\r\n {card_guid}\r\n */}\r\n {product.RecordId}\r\n {product.ItemId}\r\n
\r\n {/* {!context.app.config.hideRating && (\r\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)\r\n )} */}\r\n {product.BasePrice !== product.Price && (\r\n \r\n \r\n {custom_basePrice}\r\n {discount_string}\r\n \r\n \r\n )}\r\n
\r\n
\r\n {product.BasePrice !== 0 ? (\r\n
\r\n {product.BasePrice === product.Price ? (\r\n <>\r\n \r\n {custom_basePrice}\r\n \r\n\r\n {/* THE FOLLOWING IS SHOWN FOR SPACING REASONS */}\r\n  \r\n {/* DO NOT REMOVE THIS */}\r\n \r\n ) : (\r\n <>\r\n \r\n {custom_adjustedPrice}\r\n \r\n \r\n {omnibus_price_currency ? (\r\n <>\r\n {omnibus_string} \r\n {omnibus_price_currency}\r\n \r\n ) : (\r\n <> \r\n )}\r\n \r\n \r\n )}\r\n {/*
*/}\r\n
\r\n {available ? (\r\n \r\n {cart_string}\r\n \r\n ) : (\r\n {availableLabel}\r\n )}\r\n
\r\n {/*
*/}\r\n
\r\n ) : null}\r\n \r\n \r\n );\r\n};\r\n\r\nfunction renderLabel(name?: string, price?: string, rating?: number, ratingAriaLabel?: string): string {\r\n name = name || '';\r\n price = price || '';\r\n return `${name} ${price} ${getRatingAriaLabel(rating, ratingAriaLabel)}`;\r\n}\r\n\r\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\r\n if (rating && ratingAriaLabel) {\r\n const roundedRating = rating.toFixed(2);\r\n return format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * Updates the product url link to product details page.\r\n * @param productDetailsPageUrl - Product page url.\r\n * @param coreContext - Context of the module using the component.\r\n * @param queryString - Querystring to be added to the URL.\r\n * @returns The update product page url.\r\n */\r\nfunction updateProductUrl(productDetailsPageUrl: string, coreContext: ICoreContext, queryString: string): string {\r\n const sourceUrl = new URL(productDetailsPageUrl, coreContext.request.apiSettings.baseUrl);\r\n if (sourceUrl.search) {\r\n sourceUrl.search += `&${queryString}`;\r\n } else {\r\n sourceUrl.search += queryString;\r\n }\r\n\r\n const updatedUrl = new URL(sourceUrl.href);\r\n return updatedUrl.pathname + sourceUrl.search;\r\n}\r\n\r\n// function renderRating(\r\n// context: ICoreContext,\r\n// typeName: string,\r\n// id: string,\r\n// avgRating?: number,\r\n// totalRatings?: number,\r\n// ariaLabel?: string\r\n// ): JSX.Element | null {\r\n// if (!avgRating) {\r\n// return null;\r\n// }\r\n\r\n// const numRatings = (totalRatings && totalRatings.toString()) || undefined;\r\n// const ratingAriaLabel = getRatingAriaLabel(avgRating, ariaLabel);\r\n\r\n// return (\r\n// \r\n// );\r\n// }\r\n\r\nfunction renderPrice(\r\n context: ICoreContext,\r\n typeName: string,\r\n id: string,\r\n basePrice?: number,\r\n adjustedPrice?: number,\r\n savingsText?: string,\r\n freePriceText?: string,\r\n originalPriceText?: string\r\n // currentPriceText?: string\r\n): JSX.Element | null {\r\n const price: ProductPrice = {\r\n BasePrice: basePrice,\r\n AdjustedPrice: adjustedPrice,\r\n CustomerContextualPrice: adjustedPrice\r\n };\r\n return (\r\n <>\r\n
\r\n \r\n {/* {percent_discount !== '' ? (\r\n {discount_string}\r\n ) : null} */}\r\n
\r\n \r\n );\r\n}\r\n\r\n// @ts-ignore\r\nexport default PREVIOUSProductCard;\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._onSelectAddress();\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 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 { PriceComponent } from '@msdyn365-commerce/components';\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n CartLine,\n DeliveryOption,\n DeliveryPreferenceType,\n LineDeliverySpecification\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n GetDeliveryOptionsForCartLineAddressInput,\n getDeliveryOptionsForCartLineAddress,\n QueryResultSettingsProxy,\n StringExtensions,\n DeliveryOptionsCartLineAddress,\n ArrayExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport groupBy from 'lodash/groupBy';\n\nimport { IImageSettings } from '@msdyn365-commerce/core';\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { AddressDetailItemFunctionComponent } from './components/address-detail-item';\nimport CheckoutCartLineDeliveryDate from './components/checkout-cartLine-delivery-date';\nimport CheckoutCartLineDeliveryOptionsRadio from './components/checkout-cartLine-delivery-options-radio';\nimport { GetLineItems } from './components/get-line-items';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICartLineSelectedDeliveryOption {\n cartLineId: string;\n selectedDeliveryOption: string;\n requestDeliveryDate?: string;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n checkoutCartLineGroupDeliveryOptions?: React.ReactNode;\n enableCheckoutCartLineDeliveryOptions?: boolean;\n cartLineImages?: React.ReactNode;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @observable private groupDeliveryOptions: DeliveryOptionsCartLineAddress[] = [];\n\n @observable private cartLineSelectedDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n private readonly isMultipleAddressShippingEnabled?: boolean;\n\n private 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\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCartLineGroupDeliveryOptions: this.getCheckoutCartLineGroupDeliveryOptions(),\n enableCheckoutCartLineDeliveryOptions: this.isMultipleAddressShippingEnabled,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n if (this.isMultipleAddressShippingEnabled) {\n this.getCartLinesSavedDeliveryOption();\n }\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n const channelConfig = this.props.context.request.channel;\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n const channelConfig = this.props.context.request.channel;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n const getAriaLabelWithPrice = get(deliveryOption, 'ShippingChargeAmount', 0);\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.clearError();\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n if (this.isMultipleAddressShippingEnabled) {\n this.updateCartLinesDeliverySpecification();\n } else {\n await this.updateCartDeliverySpecification(this.selectedItemId);\n }\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly getCartLinesSavedDeliveryOption = (): void => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n cartLinesForShipping.forEach(cartLine => {\n const deliveryMode = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n if (!cartLine.LineId || StringExtensions.isNullOrEmpty(deliveryMode)) {\n return;\n }\n const cartLineId = cartLine?.LineId;\n const existingCartLineSelectedDeliveryOption = this.cartLinesDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryMode;\n } else {\n if (cartLineId !== undefined) {\n this.cartLinesDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryMode });\n }\n }\n });\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n @action\n private readonly updateCartLinesDeliverySpecification = async (): Promise => {\n if (!this.cartLineSelectedDeliveryOptions || !this.cartLineSelectedDeliveryOptions.length) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n const checkoutCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n\n this.cartLineSelectedDeliveryOptions.forEach(group => {\n const address = checkoutCartLines?.find(cartLine => cartLine.LineId === group.cartLineId)?.ShippingAddress;\n const lineSpec = {\n LineId: group.cartLineId,\n DeliverySpecification: {\n DeliveryModeId: group.selectedDeliveryOption,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ShipToAddress,\n DeliveryAddress: address\n }\n };\n lineSpecs.push(lineSpec);\n });\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinesDeliverySpecification({\n lineDeliverySpecifications: lineSpecs\n });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n const cartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n if (cartLines !== undefined && cartLines.length > 0) {\n cartLines?.forEach(cartLine => {\n const cartLineId = cartLine.LineId?.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n cartLine.RequestedDeliveryDate = existingCartLineSelectedDeliveryOption.requestDeliveryDate\n ? new Date(existingCartLineSelectedDeliveryOption.requestDeliveryDate)\n : undefined;\n }\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: cartLines });\n }\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\n const cartLinesForShipping = this.props.data.checkout.result?.cartLinesWithShippingAddress;\n const requestContext = this.props.context.actionContext.requestContext;\n if (requestContext.features && requestContext.features.enable_checkout_race_condition_hot_fix) {\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n } else {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n }\n } else {\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onCartLineDeliveryOptionChange = (\n event: React.ChangeEvent,\n cartLines: CartLine[],\n cartLineId?: string\n ) => {\n const deliveryModeId = event.currentTarget.value;\n if (cartLineId !== undefined) {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n console.log('existingCartLineSelectedDeliveryOption');\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n console.log('cartLineSelectedDeliveryOptions object if existing');\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n console.log('cartLineSelectedDeliveryOptions object new line id');\n }\n return;\n }\n\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n });\n };\n\n private readonly onCartLineRequestDeliveryDateChange = (event: React.ChangeEvent, cartLines: CartLine[]) => {\n const deliveryDate = event.currentTarget.value;\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.requestDeliveryDate = deliveryDate;\n } else {\n const deliveryModeId = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption: deliveryModeId,\n requestDeliveryDate: deliveryDate\n });\n }\n });\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n\n private readonly getCheckoutCartLineGroupDeliveryOptions = (): React.ReactNode => {\n const { resources, config } = this.props;\n const shippingCartLines = this.getCartLinesForShipping();\n if (!ArrayExtensions.hasElements(shippingCartLines) || !ArrayExtensions.hasElements(this.groupDeliveryOptions)) {\n return null;\n }\n const imageSettings = this.getImageSettings(config.imageSettings);\n const requestDeliveryDateEnabled = config.enableRequestDeliveryDate === true && 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 (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const cartLinesForShipping: CartLine[] = [];\n if (ArrayExtensions.hasElements(shippingCartLines)) {\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.ShippingAddress?.RecordId);\n cartLinesForShipping.push(getGroupByDelivery(shippingCartLines));\n console.log('running delivery option for all lines');\n }\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n const response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n if (response && response.length > 0) {\n this.groupDeliveryOptions = response;\n console.log('groupDeliveryOptions');\n }\n if (this.groupDeliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartLinesDeliveryOptions.length !== 0) {\n this.cartLineSelectedDeliveryOptions = this.cartLinesDeliveryOptions;\n this.cartLinesDeliveryOptions = [];\n this.onReady();\n } else {\n this.onUpdating();\n this.groupDeliveryOptions.forEach(group => {\n const selectedDeliveryOption =\n group.deliveryOptions.length > 0 && group.deliveryOptions[0].Code !== undefined\n ? group.deliveryOptions[0].Code\n : '';\n group.cartLineIds?.forEach(cartLineId => {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\n });\n });\n }\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n }\n this.isLoading = false;\n };\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n enableCheckoutCartLineDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton,\n checkoutCartLineGroupDeliveryOptions\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && !enableCheckoutCartLineDeliveryOptions && (\n \n )}\n {viewState.isShowList && enableCheckoutCartLineDeliveryOptions && checkoutCartLineGroupDeliveryOptions}\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { labelText, value } = props;\n\n const className = `ms-checkout-delivery-options__cart-line-grp__item__header__address`;\n return (\n \n {labelText}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport React, { useState } from 'react';\n\nexport interface ICheckoutCartLineDeliveryDateProps {\n className?: string;\n isDisabled?: boolean;\n minRangeValue?: string;\n maxRangeValue?: string;\n validationErrorForRange?: string;\n fallbackPattern?: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n disclaimerText?: string;\n heading?: string;\n checkBoxLabel?: string;\n onChangeMinValue?: void;\n id?: string;\n cartLines?: CartLine[];\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n}\n\nconst CheckoutCartLineDeliveryDate: React.FC = ({\n className,\n isDisabled,\n fallbackPattern,\n ariaLabel,\n telemetryContent,\n onChangeMinValue,\n checkBoxLabel,\n disclaimerText,\n heading,\n cartLines,\n onChange\n}) => {\n const [selectedDate, setSelectedDate] = useState('');\n const [isDateEnabled, setIsDateEnabled] = useState(false);\n // State to store today's date\n const [minDate, setMinDate] = useState('');\n\n // Update minDate state with today's date on component mount\n useState(() => {\n const today = new Date().toISOString().split('T')[0];\n setMinDate(today);\n });\n\n const handleDateChange = (event: React.FocusEvent) => {\n const selectedValue = event.target.value;\n // Check if the selected date is allowed\n if (selectedValue >= minDate) {\n setSelectedDate(selectedValue);\n console.log('Selected date is allowed.', selectedValue);\n } else {\n console.log('Selected date is not allowed.');\n }\n\n if (cartLines !== undefined) {\n onChange(event, cartLines);\n }\n };\n\n const handleCheckboxChange = () => {\n setIsDateEnabled(!isDateEnabled);\n };\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n \n {checkBoxLabel}\n
\n {disclaimerText}\n
\n {heading}\n \n
\n
\n );\n};\n\nexport default CheckoutCartLineDeliveryDate;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsGrpRadioButtonProps {\n className: string;\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n 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 { 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 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 onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n console.log(attributes);\n const channelConfig = context.actionContext.requestContext.channel;\n const count = deliveryOptions.length;\n if (count === 0) {\n return null;\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n onChange(event, cartLines, cartLineId);\n },\n [onChange, cartLines, cartLineId]\n );\n // const selectedDeliveryOptionItem = deliveryOptions.length > 0 ? deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n const deliveryClassName = `${className}__radio-btn-grp`;\n const optionClassName = `${deliveryClassName}-opt`;\n const response = deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => (\n
\n \n \n \n
\n ));\n\n return
{response}
;\n};\n\nexport default CheckoutCartLineDeliveryOptionsRadio;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n className?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description, className }) => {\n if (!description) {\n return null;\n }\n\n const descClassName = StringExtensions.isNullOrEmpty(className) ? 'ms-checkout-delivery-options__description' : className;\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

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

{title}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { CartLine, DeliveryOption, ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\nimport CheckoutCartLineDeliveryOptionsRadio from './checkout-cartLine-delivery-options-radio';\n\nexport interface ICheckoutDeliveryOptionsLineItemsProps {\n className?: string;\n moduleId: string;\n selectedItemId: string;\n context: Msdyn365.ICoreContext;\n typeName: string;\n cartLines: CartLine[];\n imageSettings: Msdyn365.IImageSettings;\n showShippingChargesForLineItems: boolean;\n resources: ICheckoutDeliveryOptionsLineItemsResources;\n deliveryOptions: DeliveryOption[];\n ariaSetSize: number;\n ariaPosInSet: number;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n currencyCode?: string;\n products?: SimpleProduct[];\n catalogs?: ProductCatalog[];\n gridSettings?: Msdyn365.IGridSettings;\n cartLineId?: string;\n key?: string;\n}\n\nexport interface ICheckoutDeliveryOptionsLineItemsResources {\n quantityDisplayStringLabel: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n productDimensionTypeAmount: string;\n configString: string;\n discountStringText: string;\n shippingChargesText: string;\n priceFree: string;\n ariaLabel: string;\n changeButtonText?: string;\n deliveryMethodLabel?: string;\n}\n\nconst _getLineItemComponent = (\n context: Msdyn365.ICoreContext,\n cartLine: CartLine,\n product: SimpleProduct,\n moduleId: string,\n typeName: string,\n showShippingChargesForLineItems: boolean,\n imageSettings: Msdyn365.IImageSettings,\n resources: ICheckoutDeliveryOptionsLineItemsResources,\n currencyCode: string,\n catalogs?: ProductCatalog[],\n gridSettings?: Msdyn365.IGridSettings,\n cartLineId?: string\n): JSX.Element | undefined => {\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return (\n \n );\n};\n\nconst _getProduct = (productId: number, products: SimpleProduct[]): SimpleProduct | undefined => {\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n};\n\nexport const GetLineItems: React.FC = (props: ICheckoutDeliveryOptionsLineItemsProps) => {\n const products = props.products;\n const lineClassName = props.className;\n const lineItemClassName = `${lineClassName}-item`;\n const currencyCode = props.currencyCode;\n const changeText = props.resources.changeButtonText;\n const [showDeliveryOption, setShowDeliveryOption] = useState(false);\n\n const handleClick = () => {\n setShowDeliveryOption(!showDeliveryOption);\n };\n if (!props.cartLines || props.cartLines.length === 0 || !products || products.length === 0 || currencyCode === undefined) {\n return null;\n }\n const deliveryCode = props.deliveryOptions.find(option => option.Code === props.selectedItemId);\n const payload = getPayloadObject(TelemetryEvent.UpdateInCart, props.telemetryContent!, changeText !== undefined ? changeText : '', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\n const response = props.cartLines.map(cartLine => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId, products);\n if (!product) {\n return null;\n }\n return (\n
\n {_getLineItemComponent(\n props.context,\n cartLine,\n product,\n props.moduleId,\n props.typeName,\n props.showShippingChargesForLineItems,\n props.imageSettings,\n props.resources,\n currencyCode,\n props.catalogs,\n props.gridSettings\n )}\n
{props.resources.deliveryMethodLabel}
\n
\n {deliveryCode?.Description}\n \n
\n {showDeliveryOption ? (\n \n ) : null}\n
\n );\n });\n\n return
{response}
;\n};\nexport default GetLineItems;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. 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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { ICheckoutGiftCardData } from './checkout-gift-card.data';\nimport { ICheckoutGiftCardProps } from './checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICheckoutGiftCardProps, IModuleStateProps {}\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n checkoutErrorRef?: React.RefObject;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGiftCard && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGiftCard) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps, nextState: ICheckoutGiftCardState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.GiftCard === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout gift card module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n checkoutErrorRef: this.checkoutErrorRef,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady\n ? {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined,\n addGiftCard: !isReady\n ? {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart?.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section gift card onEdit is called.');\n\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Payment section gift card onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.props.telemetry.information('Payment section gift card onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n this.props.telemetry.information('Payment section gift card remove is called.');\n\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n this.props.telemetry.information('Payment section gift card apply is called.');\n\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({\n giftCard,\n additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId }\n });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n this.props.telemetry.information('Payment section fetching gift card is failed.');\n };\n\n private readonly findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './checkout-gift-card';\n\nexport const From: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, checkoutErrorRef, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: {\n applyGiftCardButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {` `}\n {balance}\n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard =>\n getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ;\n\nexport default GiftCardTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { 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