{"version":3,"file":"static/js/15.1c46b273483a4587e880.chunk.js","mappings":"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","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-google-pay/custom-checkout-google-pay.tsx?fb70","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-google-pay/custom-checkout-google-pay.view.tsx?c19d","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/filtered-delivery-options.props.autogenerated.ts?9ca7","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.description.tsx?b6af","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-message.tsx?a76a","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-title.tsx?829f","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/components/filtered-delivery-options.radio-button.tsx?9751","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/filtered-delivery-options.tsx?9a97","webpack://venchi-ecommerce-msdyn365/./src/modules/filtered-delivery-options/filtered-delivery-options.view.tsx?6bae","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/utilities/popup/Popup.tsx?8e42","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/components/previous__product.component.tsx?9d5a","webpack://venchi-ecommerce-msdyn365/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://venchi-ecommerce-msdyn365/./src/common/address-autosuggest.ts?f5a2","webpack://venchi-ecommerce-msdyn365/./src/common/address-common.ts?cf4b","webpack://venchi-ecommerce-msdyn365/./src/common/address-format.data.ts?6cbf","webpack://venchi-ecommerce-msdyn365/./src/common/address-format.ts?4f04","webpack://venchi-ecommerce-msdyn365/./src/common/address-meta-data.ts?c6e6","webpack://venchi-ecommerce-msdyn365/./src/common/address-module.data.ts?697a","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-checkbox.tsx?eb1a","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-add.tsx?e6a6","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-alert.tsx?10d1","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-button.tsx?7f7b","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-detail-item.tsx?5209","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-dropdown.tsx?f24b","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-error-alert.tsx?bcde","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-error-message.tsx?89ad","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-error-title.tsx?3926","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-input.tsx?8073","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-label.tsx?6864","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-list.tsx?a628","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-select.tsx?c1df","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-ship-multiple-heading.tsx?5d65","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-ship-multiple-lines.tsx?ce68","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-ship-multiple.tsx?136d","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-show.tsx?3f60","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-billing-checkbox.tsx?4008","webpack://venchi-ecommerce-msdyn365/./src/common/components/address-billing-heading.tsx?7bbd","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://venchi-ecommerce-msdyn365/./src/validate-cart.ts?cd50","webpack://venchi-ecommerce-msdyn365/./src/Common/get-product.ts?0a21","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://venchi-ecommerce-msdyn365/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-shipping-cartlines-images.tsx?ab7c","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/address-detail-item.tsx?d9a2","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-date.tsx?bd12","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-grp.tsx?3a15","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-radio.tsx?045f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/get-line-items.tsx?e389","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-delivery-options/components/address-format.data.ts?3c40","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/checkout.tsx?6737","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/checkout.view.tsx?e4cc","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/alert.tsx?cb1e","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/get-invoice-payment-summary.tsx?9549","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/get-line-items.tsx?92f8","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/get-order-summary.tsx?4a81","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/guided-card.tsx?58e0","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/guided-form.tsx?f018","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/components/place-order-button.tsx?9b41","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/methods/checkout.ts?7b6b","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout/methods/place-order.ts?5aa0","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/components/get-form.tsx?e249","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/components/get-item.tsx?4862","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/gift-card-balance-check.tsx?d1f8","webpack://venchi-ecommerce-msdyn365/./src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?a0c9","webpack://venchi-ecommerce-msdyn365/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://venchi-ecommerce-msdyn365/./src/modules/header/components/logo.tsx?f27e","webpack://venchi-ecommerce-msdyn365/./src/modules/header/components/nav-icon.tsx?2475","webpack://venchi-ecommerce-msdyn365/./src/modules/header/header.tsx?e91a","webpack://venchi-ecommerce-msdyn365/./src/modules/header/header.view.tsx?cf0f","webpack://venchi-ecommerce-msdyn365/./src/invoice-summary-lineitem.tsx?5f61","webpack://venchi-ecommerce-msdyn365/./src/order-summary-lineitem.tsx?8a98","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://venchi-ecommerce-msdyn365/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://venchi-ecommerce-msdyn365/./src/modules/wishlist-items/components/wishlist-items-dimensions.tsx?15c5","webpack://venchi-ecommerce-msdyn365/./src/modules/wishlist-items/components/wishlist-item.tsx?d2da","webpack://venchi-ecommerce-msdyn365/./src/modules/wishlist-items/components/wishlist-items-status-message.tsx?cdb3","webpack://venchi-ecommerce-msdyn365/./src/modules/wishlist-items/wishlist-items.tsx?df8b","webpack://venchi-ecommerce-msdyn365/./src/modules/wishlist-items/wishlist-items.view.tsx?4d80","webpack://venchi-ecommerce-msdyn365/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://venchi-ecommerce-msdyn365/./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._onSelectMultiAddress();\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({ selectedShippingLines: resetSelectedShippingLines });\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n case AddressOperation.Multiple:\n this.props.telemetry.information('Shipping address cancel for Multiple operation.');\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n )\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode !== pickupDeliveryModeCode : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectMultiAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n if (this.props.config.multipleAddressShippingEnabled) {\n this._setCartLinesShippingAddress(this.addressListSelectedAddress);\n } else {\n this._setShippingAddress(this.addressListSelectedAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method get called on ship to multiple addresses.\n */\n private readonly _goToShipMultipleAddresses = () => {\n this._setDefaultCountryRegionId();\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._updateCurrentOperation(AddressOperation.Multiple);\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setCartLinesShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newCartLinesWithShippingAddress = this.state.shippingGroups.map(shippingGroup => shippingGroup.cartLine);\n this.props.data.checkout.result.updateCartLinesShippingAddress({ newCartLinesWithShippingAddress });\n this.props.data.checkout.result.checkoutCart\n .updateCartLineShippingAddress({ updatedCartLinesObject: newCartLinesWithShippingAddress })\n .catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n case AddressOperation.Multiple:\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutShippingAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\nimport { IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.shipMultipleAddressesButton - Ship to multiple addresses button.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n shipMultipleAddressesButton,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n \n {addButton}\n {shipMultipleAddressesButton}\n \n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Ship Multiple Component.\n * @param param0 - Root param.\n * @param param0.ShipMultipleAddress - Ship multiple address form.\n * @param param0.shipSingleAddressButton - Ship single address button.\n * @param param0.clearSelectionButton - Clear selection button.\n * @param param0.addressDropdown - Address dropdown button.\n * @param param0.ProductsTable - Products table component.\n * @param param0.ProductsTableHeading - Products table heading component.\n * @param param0.ProductsTableRow - Products table row component.\n * @param param0.shipMultipleAddressLines - Ship multiple address lines.\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @returns Address ship multiple component node.\n */\nconst AddressShipMultiple: React.FC = ({\n ShipMultipleAddress,\n shipSingleAddressButton,\n clearSelectionButton,\n addressDropdown,\n ProductsTable,\n ProductsTableHeading,\n ProductsTableRow,\n shipMultipleAddressLines,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton,\n isMobile\n}) => {\n if (ShipMultipleAddress && isMobile !== undefined) {\n if (!isMobile) {\n return (\n \n {shipSingleAddressButton}\n \n {clearSelectionButton}\n\n {addressDropdown}\n \n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n } else {\n return (\n \n {shipSingleAddressButton}\n {addressDropdown}\n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n }\n } else {\n return null;\n }\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst _renderShipMultipleAddressLine = (\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewProps,\n isMobile: boolean,\n ProductsTableRow?: INodeProps\n): JSX.Element | null => {\n if (!shipMultipleAddressesLine) {\n return null;\n }\n\n const {\n selectLine,\n productImage,\n productNumber,\n productInfo,\n productPrice,\n productQuantity,\n productAddress\n } = shipMultipleAddressesLine;\n\n if (!isMobile) {\n return (\n \n {selectLine}\n \n
{productImage}
\n
{productNumber}
\n \n {productInfo}\n {productPrice}\n {productQuantity}\n {productAddress}\n
\n );\n } else {\n return (\n \n \n {selectLine}\n \n {productImage}\n {productInfo}\n {`QTY: ${productQuantity}`}\n \n {productPrice}\n \n \n {productAddress}\n \n \n );\n }\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n showShipMultipleAddresses,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {!viewState.isShowShipMultipleAddress && cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {viewState.isShowShipMultipleAddress && (\n \n )}\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\n/**\n * The cartLine product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartLine interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId?: string;\n imageProps: IImageProps;\n deliveryMethodDesc?: string;\n requestDeliveryDate?: string;\n}\n\n/**\n * The checkout shipping cartLine props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutShippingCartLines: React.FC = ({ moduleClassName, cartLines }) => {\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n\n return (\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const className = `${moduleClassName}__group-images-lines-product`;\n return (\n
\n \n
{cartLine.deliveryMethodDesc}
\n
\n
{cartLine.requestDeliveryDate}
\n
\n );\n })}\n
\n
\n );\n};\n\n/**\n * The checkout shipping cartLine image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n CartLine,\n DeliveryOption,\n DeliveryPreferenceType,\n LineDeliverySpecification,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n GetDeliveryOptionsForCartLineAddressInput,\n getDeliveryOptionsForCartLineAddress,\n getFallbackImageUrl,\n QueryResultSettingsProxy,\n StringExtensions,\n DeliveryOptionsCartLineAddress,\n ArrayExtensions,\n ObjectExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport groupBy from 'lodash/groupBy';\n\nimport { IImageProps, IImageSettings } from '@msdyn365-commerce/core';\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { AddressDetailItemFunctionComponent } from './components/address-detail-item';\nimport CheckoutCartLineDeliveryDate from './components/checkout-cartLine-delivery-date';\nimport CheckoutCartLineDeliveryOptionsRadio from './components/checkout-cartLine-delivery-options-radio';\nimport { GetLineItems } from './components/get-line-items';\nimport {\n CheckoutShippingCartLines,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps,\n defaultImageSettings\n} from './components/checkout-shipping-cartlines-images';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICartLineSelectedDeliveryOption {\n cartLineId: string;\n selectedDeliveryOption: string;\n requestDeliveryDate?: string;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n checkoutCartLineGroupDeliveryOptions?: React.ReactNode;\n enableCheckoutCartLineDeliveryOptions?: boolean;\n cartLineImages?: React.ReactNode;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @observable private groupDeliveryOptions: DeliveryOptionsCartLineAddress[] = [];\n\n @observable private cartLineSelectedDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n private readonly isMultipleAddressShippingEnabled?: boolean;\n\n private readonly timeoutRetailCall: number;\n\n private cartLinesDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isSelectDefaultOptionEnabled =\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\n this.isMultipleAddressShippingEnabled = this.props.config.multipleAddressShippingEnabled;\n this.timeoutRetailCall = this.props.config.timeoutToCallRetail !== undefined ? this.props.config.timeoutToCallRetail : 0;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n if (\n (this.props.data.checkout.result?.isExpressCheckoutApplied && this.canShip()) ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n await this.init();\n } else {\n // Wait for a specific time (e.g., 2000 milliseconds = 2 seconds)\n await new Promise(resolve => setTimeout(resolve, this.timeoutRetailCall));\n // Then call the init function\n await this.init();\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.cartLinesWithShippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (!this.canShip()) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const {\n moduleState: { isReady, isUpdating, hasError }\n } = this.props;\n const isError = !this.isLoading && hasError;\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\n const cartLinesDisplay = this.getMultipleDeliveryOptionSelected();\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartLinesDisplay.filter(x => !ObjectExtensions.isNullOrUndefined(x))\n };\n\n const cartLineImages: React.ReactNode = ;\n\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCartLineGroupDeliveryOptions: this.getCheckoutCartLineGroupDeliveryOptions(),\n enableCheckoutCartLineDeliveryOptions: this.isMultipleAddressShippingEnabled,\n cartLineImages,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n if (this.isMultipleAddressShippingEnabled) {\n this.getCartLinesSavedDeliveryOption();\n }\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n const channelConfig = this.props.context.request.channel;\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n const channelConfig = this.props.context.request.channel;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n const getAriaLabelWithPrice = get(deliveryOption, 'ShippingChargeAmount', 0);\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.clearError();\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n if (this.isMultipleAddressShippingEnabled) {\n this.updateCartLinesDeliverySpecification();\n } else {\n await this.updateCartDeliverySpecification(this.selectedItemId);\n }\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly getCartLinesSavedDeliveryOption = (): void => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n cartLinesForShipping.forEach(cartLine => {\n const deliveryMode = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n if (!cartLine.LineId || StringExtensions.isNullOrEmpty(deliveryMode)) {\n return;\n }\n const cartLineId = cartLine?.LineId;\n const existingCartLineSelectedDeliveryOption = this.cartLinesDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryMode;\n } else {\n if (cartLineId !== undefined) {\n this.cartLinesDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryMode });\n }\n }\n });\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n @action\n private readonly updateCartLinesDeliverySpecification = async (): Promise => {\n if (!this.cartLineSelectedDeliveryOptions || !this.cartLineSelectedDeliveryOptions.length) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n const checkoutCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n\n this.cartLineSelectedDeliveryOptions.forEach(group => {\n const address = checkoutCartLines?.find(cartLine => cartLine.LineId === group.cartLineId)?.ShippingAddress;\n const lineSpec = {\n LineId: group.cartLineId,\n DeliverySpecification: {\n DeliveryModeId: group.selectedDeliveryOption,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ShipToAddress,\n DeliveryAddress: address\n }\n };\n lineSpecs.push(lineSpec);\n });\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinesDeliverySpecification({\n lineDeliverySpecifications: lineSpecs\n });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n const cartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n if (cartLines !== undefined && cartLines.length > 0) {\n cartLines?.forEach(cartLine => {\n const cartLineId = cartLine.LineId?.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n cartLine.RequestedDeliveryDate = existingCartLineSelectedDeliveryOption.requestDeliveryDate\n ? new Date(existingCartLineSelectedDeliveryOption.requestDeliveryDate)\n : undefined;\n }\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: cartLines });\n }\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const 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 ? shippingAddress !== undefined\n ? await this.getGroupDeliveryOptions(shippingAddress)\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 existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n return;\n }\n\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n });\n };\n\n private readonly onCartLineRequestDeliveryDateChange = (event: React.ChangeEvent, cartLines: CartLine[]) => {\n const deliveryDate = event.currentTarget.value;\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.requestDeliveryDate = deliveryDate;\n } else {\n const deliveryModeId = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption: deliveryModeId,\n requestDeliveryDate: deliveryDate\n });\n }\n });\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n\n private readonly getCheckoutCartLineGroupDeliveryOptions = (): React.ReactNode => {\n const { resources, config } = this.props;\n const shippingCartLines = this.getCartLinesForShipping();\n if (!ArrayExtensions.hasElements(shippingCartLines) || !ArrayExtensions.hasElements(this.groupDeliveryOptions)) {\n return null;\n }\n const imageSettings = this.getImageSettings(config.imageSettings);\n const requestDeliveryDateEnabled = config.enableRequestDeliveryDate === true && this.isMultipleAddressShippingEnabled === true;\n return (\n
\n {this.groupDeliveryOptions.map((groupDeliveryOption: DeliveryOptionsCartLineAddress, index) => {\n const cartLineId = groupDeliveryOption.cartLineIds !== undefined ? groupDeliveryOption.cartLineIds[0] : '';\n const cartLine1 = shippingCartLines.find(cartLine => cartLineId === cartLine?.LineId?.toString() ?? '');\n const cartLine = shippingCartLines.filter(\n cartLine => groupDeliveryOption && (cartLineId === cartLine?.LineId?.toString() ?? '')\n );\n if (groupDeliveryOption !== undefined) {\n const selectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLine[0].LineId\n )?.selectedDeliveryOption;\n return (\n
\n
\n \n
\n
\n
\n \n {resources.cartLineGroupDeliveryOptionsLabel}\n \n \n {resources.cartLineGroupDeliveryOptionsText}\n \n {requestDeliveryDateEnabled ? (\n \n ) : null}\n \n
\n {groupDeliveryOption.cartLineIds?.map(cartLineId => {\n const cartLine1 = shippingCartLines.find(\n cartLine => cartLineId === cartLine?.LineId?.toString() ?? ''\n );\n const selectedDeliveryOption1 = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption =>\n cartLineSelectedDeliveryOption.cartLineId === cartLine1?.LineId\n )?.selectedDeliveryOption;\n return (\n \n );\n })}\n
\n
\n );\n } else {\n return null;\n }\n })}\n
\n );\n };\n\n private readonly getGroupDeliveryOptions = async (shippingAddress?: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const cartLinesForShipping: CartLine[] = [];\n if (ArrayExtensions.hasElements(shippingCartLines)) {\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.ShippingAddress?.RecordId);\n cartLinesForShipping.push(getGroupByDelivery(shippingCartLines));\n console.log('running delivery option for all lines');\n }\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n const cart = cartState.cart;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n let response: DeliveryOptionsCartLineAddress[] = [];\n if (shippingAddress !== undefined && shippingAddress.RecordId !== undefined) {\n const checkoutState = this.props.data.checkout.result;\n const cartLineIds = shippingCartLines.map(cartLine => (cartLine.LineId !== undefined ? cartLine.LineId : ''));\n await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cart.Id,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n ).then(async result => {\n if (result && result.length > 0) {\n response.push({ deliveryOptions: result, hasError: false, error: undefined, cartLineIds: cartLineIds });\n shippingCartLines?.forEach(cartLine => {\n cartLine.ShippingAddress = shippingAddress;\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: shippingCartLines });\n // console.log(updateLineDeliverySpecifications());\n } else {\n response.push({\n deliveryOptions: [],\n hasError: true,\n error: 'No delivery options available',\n cartLineIds: cartLineIds\n });\n }\n });\n } else {\n const inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n }\n if (response && response.length > 0) {\n this.groupDeliveryOptions = response;\n console.log('groupDeliveryOptions');\n }\n if (this.groupDeliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartLinesDeliveryOptions.length !== 0) {\n this.cartLineSelectedDeliveryOptions = this.cartLinesDeliveryOptions;\n this.cartLinesDeliveryOptions = [];\n this.onReady();\n } else {\n this.onUpdating();\n this.groupDeliveryOptions.forEach(group => {\n const selectedDeliveryOption =\n group.deliveryOptions.length > 0 && group.deliveryOptions[0].Code !== undefined\n ? group.deliveryOptions[0].Code\n : '';\n group.cartLineIds?.forEach(cartLineId => {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = selectedDeliveryOption;\n } else {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\n }\n });\n });\n }\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n }\n this.isLoading = false;\n };\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly getMultipleDeliveryOptionSelected = (): ICheckoutShippingCartLineInfo[] => {\n const products = this.props.data.products?.result;\n const cartLineImages: ICheckoutShippingCartLineInfo[] = [];\n\n this.cartLineSelectedDeliveryOptions.map(cartLineDeliveryOption => {\n const cartLine = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.find(\n (cartLine: CartLine) => cartLine.LineId === cartLineDeliveryOption.cartLineId\n );\n if (cartLine) {\n const product = products?.find((product: SimpleProduct) => product.RecordId === cartLine.ProductId);\n const imageProps: IImageProps = {\n requestContext: this.props.context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: product?.Name,\n src: product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n product?.ItemId,\n this.props.context.actionContext.requestContext.apiSettings,\n this.props.context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: this.props.config.imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n };\n let deliveryModeDesc = this.deliveryOptions.find(\n deliveryOption => deliveryOption.Code === cartLineDeliveryOption.selectedDeliveryOption\n )?.Description;\n if (StringExtensions.isNullOrEmpty(deliveryModeDesc)) {\n const group = this.groupDeliveryOptions.find(group => group.cartLineIds?.includes(cartLineDeliveryOption.cartLineId));\n const deliveryOption = group?.deliveryOptions.find(\n option => option.Code === cartLineDeliveryOption.selectedDeliveryOption\n );\n deliveryModeDesc = deliveryOption?.Description;\n }\n const cartLineDisplay = {\n lineId: cartLine.LineId,\n imageProps: imageProps,\n deliveryMethodDesc: deliveryModeDesc,\n requestDeliveryDate: cartLineDeliveryOption.requestDeliveryDate\n };\n cartLineImages.push(cartLineDisplay);\n }\n });\n\n return cartLineImages;\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n enableCheckoutCartLineDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton,\n checkoutCartLineGroupDeliveryOptions,\n cartLineImages\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && !enableCheckoutCartLineDeliveryOptions && (\n \n )}\n {viewState.isShowList && enableCheckoutCartLineDeliveryOptions && checkoutCartLineGroupDeliveryOptions}\n {viewState.isShowSelected && enableCheckoutCartLineDeliveryOptions && cartLineImages}\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { labelText, value } = props;\n\n const className = `ms-checkout-delivery-options__cart-line-grp__item__header__address`;\n return (\n \n {labelText}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOptionsCartLineAddress } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport React, { useState } from 'react';\n\nexport interface ICheckoutCartLineDeliveryDateProps {\n className?: string;\n isDisabled?: boolean;\n minRangeValue?: string;\n maxRangeValue?: string;\n validationErrorForRange?: string;\n fallbackPattern?: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n disclaimerText?: string;\n heading?: string;\n checkBoxLabel?: string;\n onChangeMinValue?: void;\n id?: string;\n cartLines?: CartLine[];\n groupDeliveryOption?: DeliveryOptionsCartLineAddress;\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n}\n\nconst CheckoutCartLineDeliveryDate: React.FC = ({\n className,\n isDisabled,\n fallbackPattern,\n ariaLabel,\n telemetryContent,\n onChangeMinValue,\n checkBoxLabel,\n disclaimerText,\n heading,\n cartLines,\n groupDeliveryOption,\n onChange\n}) => {\n const [selectedDate, setSelectedDate] = useState('');\n const [isDateEnabled, setIsDateEnabled] = useState(false);\n // State to store today's date\n const [minDate, setMinDate] = useState('');\n\n // Update minDate state with today's date on component mount\n useState(() => {\n const today = new Date().toISOString().split('T')[0];\n setMinDate(today);\n });\n\n const handleDateChange = (event: React.FocusEvent) => {\n const selectedValue = event.target.value;\n // Check if the selected date is allowed\n if (selectedValue >= minDate) {\n setSelectedDate(selectedValue);\n console.log('Selected date is allowed.', selectedValue);\n } else {\n console.log('Selected date is not allowed.');\n }\n\n if (groupDeliveryOption !== undefined && cartLines !== undefined) {\n const cartLinesDate: CartLine[] = [];\n groupDeliveryOption?.cartLineIds?.map(cartLineId => {\n const tempCartLine = cartLines?.find(cartLine => cartLineId === cartLine?.LineId?.toString());\n if (tempCartLine !== undefined) {\n cartLinesDate.push(tempCartLine);\n }\n });\n\n if (cartLinesDate !== undefined) {\n onChange(event, cartLinesDate);\n }\n }\n };\n\n const handleCheckboxChange = () => {\n setIsDateEnabled(!isDateEnabled);\n };\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n \n {checkBoxLabel}\n
\n {disclaimerText}\n
\n {heading}\n \n
\n
\n );\n};\n\nexport default CheckoutCartLineDeliveryDate;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsGrpRadioButtonProps {\n className: string;\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n groupName: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsGrpRadioButton: React.FC = ({\n className,\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n groupName,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionRef: React.RefObject = React.createRef();\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsGrpRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOptionsCartLineAddress } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport DescriptionComponent from './checkout-delivery-options.description';\nimport RadioButtonComponent from './checkout-cartLine-delivery-options-grp';\n\nexport interface ICheckoutCartLineDeliveryOptionsRadioButtonProps {\n className: string;\n moduleId: string;\n ariaSetSize: number;\n priceFree: string;\n ariaPosInSet: number;\n selectedItemId: string;\n cartLines: CartLine[];\n deliveryOptions: DeliveryOption[];\n typeName: string;\n context: ICoreContext>;\n groupName: string; // Add groupName prop\n groupDeliveryOption?: DeliveryOptionsCartLineAddress;\n ariaLabel?: string;\n value?: string;\n cartLineId?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[], cartLineId?: string): void;\n}\n\n/**\n * Represents a radio button component for checkout cart line delivery options.\n * @param {Object} props - The component props.\n * @param {boolean} props.isChecked - Indicates whether the radio button is checked.\n * @param {string} props.value - The value of the radio button.\n * @param {number} props.ariaSetSize - The total number of radio buttons in the set.\n * @param {number} props.ariaPosInSet - The position of the radio button in the set.\n * @param {string} props.ariaLabel - The ARIA label for the radio button.\n * @param {string} props.telemetryContent - The telemetry content for the radio button.\n * @param {Function} props.onChange - The event handler for when the radio button is changed.\n * @returns {JSX.Element} The rendered radio button component.\n */\nconst CheckoutCartLineDeliveryOptionsRadio: React.FC = ({\n className,\n moduleId,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n deliveryOptions,\n priceFree,\n selectedItemId,\n typeName,\n groupName, // Destructure groupName prop\n context,\n cartLines,\n cartLineId,\n groupDeliveryOption,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n console.log(attributes);\n const channelConfig = context.actionContext.requestContext.channel;\n const count = deliveryOptions.length;\n if (count === 0) {\n return null;\n }\n const cartLinesRadio: CartLine[] = [];\n if (groupDeliveryOption !== undefined && cartLines !== undefined) {\n groupDeliveryOption?.cartLineIds?.map(cartLineId => {\n const tempCartLine = cartLines?.find(cartLine => cartLineId === cartLine?.LineId?.toString());\n if (tempCartLine !== undefined) {\n cartLinesRadio.push(tempCartLine);\n }\n });\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n if (cartLinesRadio !== undefined && cartLinesRadio.length > 0) {\n onChange(event, cartLinesRadio, undefined);\n } else {\n onChange(event, cartLines, cartLineId);\n }\n },\n [onChange, cartLinesRadio, cartLineId]\n );\n // const selectedDeliveryOptionItem = deliveryOptions.length > 0 ? deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n const deliveryClassName = `${className}__radio-btn-grp`;\n const optionClassName = `${deliveryClassName}-opt`;\n const response = deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => (\n
\n \n \n \n
\n ));\n\n return
{response}
;\n};\n\nexport default CheckoutCartLineDeliveryOptionsRadio;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n className?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description, className }) => {\n if (!description) {\n return null;\n }\n\n const descClassName = StringExtensions.isNullOrEmpty(className) ? 'ms-checkout-delivery-options__description' : className;\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

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

{title}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { CartLine, DeliveryOption, ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\nimport CheckoutCartLineDeliveryOptionsRadio from './checkout-cartLine-delivery-options-radio';\n\nexport interface ICheckoutDeliveryOptionsLineItemsProps {\n className?: string;\n moduleId: string;\n selectedItemId: string;\n context: Msdyn365.ICoreContext;\n typeName: string;\n cartLines: CartLine[];\n imageSettings: Msdyn365.IImageSettings;\n showShippingChargesForLineItems: boolean;\n resources: ICheckoutDeliveryOptionsLineItemsResources;\n deliveryOptions: DeliveryOption[];\n ariaSetSize: number;\n ariaPosInSet: number;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n currencyCode?: string;\n products?: SimpleProduct[];\n catalogs?: ProductCatalog[];\n gridSettings?: Msdyn365.IGridSettings;\n cartLineId?: string;\n key?: string;\n}\n\nexport interface ICheckoutDeliveryOptionsLineItemsResources {\n quantityDisplayStringLabel: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n productDimensionTypeAmount: string;\n configString: string;\n discountStringText: string;\n shippingChargesText: string;\n priceFree: string;\n ariaLabel: string;\n changeButtonText?: string;\n deliveryMethodLabel?: string;\n}\n\nconst _getLineItemComponent = (\n context: Msdyn365.ICoreContext,\n cartLine: CartLine,\n product: SimpleProduct,\n moduleId: string,\n typeName: string,\n showShippingChargesForLineItems: boolean,\n imageSettings: Msdyn365.IImageSettings,\n resources: ICheckoutDeliveryOptionsLineItemsResources,\n currencyCode: string,\n catalogs?: ProductCatalog[],\n gridSettings?: Msdyn365.IGridSettings,\n cartLineId?: string\n): JSX.Element | undefined => {\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return (\n \n );\n};\n\nconst _getProduct = (productId: number, products: SimpleProduct[]): SimpleProduct | undefined => {\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n};\n\nexport const GetLineItems: React.FC = (props: ICheckoutDeliveryOptionsLineItemsProps) => {\n const products = props.products;\n const lineClassName = props.className;\n const lineItemClassName = `${lineClassName}-item`;\n const currencyCode = props.currencyCode;\n const changeText = props.resources.changeButtonText;\n const [showDeliveryOption, setShowDeliveryOption] = useState(false);\n\n const handleClick = () => {\n setShowDeliveryOption(!showDeliveryOption);\n };\n if (!props.cartLines || props.cartLines.length === 0 || !products || products.length === 0 || currencyCode === undefined) {\n return null;\n }\n const deliveryCode = props.deliveryOptions.find(option => option.Code === props.selectedItemId);\n const payload = getPayloadObject(TelemetryEvent.UpdateInCart, props.telemetryContent!, changeText !== undefined ? changeText : '', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\n const response = props.cartLines.map(cartLine => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId, products);\n if (!product) {\n return null;\n }\n return (\n
\n {_getLineItemComponent(\n props.context,\n cartLine,\n product,\n props.moduleId,\n props.typeName,\n props.showShippingChargesForLineItems,\n props.imageSettings,\n props.resources,\n currencyCode,\n props.catalogs,\n props.gridSettings\n )}\n
{props.resources.deliveryMethodLabel}
\n
\n {deliveryCode?.Description}\n \n
\n {showDeliveryOption ? (\n \n ) : null}\n
\n );\n });\n\n return
{response}
;\n};\nexport default GetLineItems;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { ICheckoutGiftCardData } from './checkout-gift-card.data';\nimport { ICheckoutGiftCardProps } from './checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICheckoutGiftCardProps, IModuleStateProps {}\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n checkoutErrorRef?: React.RefObject;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGiftCard && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGiftCard) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps, nextState: ICheckoutGiftCardState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.GiftCard === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout gift card module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n checkoutErrorRef: this.checkoutErrorRef,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady\n ? {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined,\n addGiftCard: !isReady\n ? {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart?.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section gift card onEdit is called.');\n\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Payment section gift card onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.props.telemetry.information('Payment section gift card onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n this.props.telemetry.information('Payment section gift card remove is called.');\n\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n this.props.telemetry.information('Payment section gift card apply is called.');\n\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({\n giftCard,\n additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId }\n });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n this.props.telemetry.information('Payment section fetching gift card is failed.');\n };\n\n private readonly findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './checkout-gift-card';\n\nexport const From: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, checkoutErrorRef, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: {\n applyGiftCardButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {` `}\n {balance}\n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard =>\n getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ;\n\nexport default GiftCardTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { callActionOrExecute } from '@msdyn365-commerce/retail-proxy';\nimport { createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { LoyaltyPointRedemptionEstimate, LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { GetLoyaltyTransactionEstimationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Drawer, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyData } from './checkout-loyalty.data';\nimport { ICheckoutLoyaltyProps } from './checkout-loyalty.props.autogenerated';\nimport InputComponent from './components/checkout-loyalty-input';\nimport LabelComponent from './components/checkout-loyalty-label';\nimport TextComponent from './components/checkout-loyalty-text';\nimport { ErrorComponent } from '../../common/error';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutLoyaltyState {\n dollarsApplied: number;\n isFetchingLoyaltyCard: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutLoyaltyModuleProps extends ICheckoutLoyaltyProps, IModuleStateProps {}\n\nexport interface ICheckoutLoyaltyViewState {\n isShowLoyalty: boolean;\n isShowAddLoyalty: boolean;\n}\n\nexport interface ICheckoutLoyaltyShow {\n heading: React.ReactNode;\n coveredAmountText: React.ReactNode;\n amount: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyRewardPoint {\n checkoutLoyaltyRewardPoint: INodeProps;\n key: string;\n title: React.ReactNode;\n availablePointsText: React.ReactNode;\n activePoints: React.ReactNode;\n expiringPointsText: React.ReactNode;\n expiringPoints: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyAdd {\n heading: React.ReactNode;\n cardNumber: React.ReactNode;\n drawer: INodeProps;\n rewardPoints: ICheckoutLoyaltyRewardPoint[];\n loyaltyAmountContainer: INodeProps;\n appliedLoyaltyAmountContainer: INodeProps;\n loyaltyAmountLabel: React.ReactNode;\n loyaltyAmountInput: React.ReactNode;\n loyaltyAmountApplyButton: React.ReactNode;\n showAppliedAmount: boolean;\n loyaltyAmountAppliedText: React.ReactNode;\n loyaltyAmountAppliedPrice: React.ReactNode;\n loyaltyAmountRemoveButton: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyViewProps extends ICheckoutLoyaltyModuleProps {\n checkoutLoyalty: IModuleProps;\n viewState: ICheckoutLoyaltyViewState;\n showLoyalty: ICheckoutLoyaltyShow;\n addLoyalty: ICheckoutLoyaltyAdd;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutLoyalty component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n\n@withModuleState\n@observer\nclass CheckoutLoyalty extends React.Component {\n private readonly _dialogToggleRef: React.RefObject | undefined;\n\n private readonly moduleClassName: string = 'ms-checkout-loyalty';\n\n private readonly _defaultLoyaltyPoints: number = 0;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n constructor(props: ICheckoutLoyaltyModuleProps) {\n super(props);\n this._dialogToggleRef = React.createRef();\n this._applyLoyaltyPoints = this._applyLoyaltyPoints.bind(this);\n this._removeLoyaltyPoints = this._removeLoyaltyPoints.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this.state = { dollarsApplied: this.maxDollars, isFetchingLoyaltyCard: false };\n }\n\n @computed get shouldPayLoyalty(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use loyalty when cart is not full of free items\n const amountDue = cart.TotalAmount || 0;\n return amountDue > 0;\n }\n\n @computed get isDataReady(): boolean {\n return (\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\n (this.props.data.loyaltyCard && this.props.data.loyaltyCard.status) !== 'LOADING' &&\n (this.props.data.loyaltyTransactionEstimation && this.props.data.loyaltyTransactionEstimation.status) !== 'LOADING'\n );\n }\n\n @computed get maxDollars(): number {\n return this.props.data.loyaltyTransactionEstimation.result &&\n this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n ? this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n : 0;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart,\n async () => {\n this._updateEstimate();\n }\n );\n\n reaction(\n () => this.props.data.loyaltyCard.result,\n async () => {\n this._updateLoyalty();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutLoyalty && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutLoyalty) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutLoyaltyModuleProps, nextState: ICheckoutLoyaltyState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config,\n resources,\n renderView,\n moduleState: { hasError, isReady }\n } = this.props;\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.Loyalty === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout loyalty module wont render');\n return null;\n }\n\n if (\n this.props.data.loyaltyCard &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n ) {\n const loyaltyCard = this.props.data.loyaltyCard.result;\n const checkoutState = this.props.data.checkout.result;\n let isShowLoyalty = false;\n const errorMessage = this.state.errorMessage;\n\n if (isReady) {\n if (!checkoutState || checkoutState.loyaltyAmount === 0) {\n return null;\n }\n isShowLoyalty = true;\n }\n const channelConfig = this.props.context.request.channel;\n const viewProps = {\n ...this.props,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isShowLoyalty,\n isShowAddLoyalty: !isReady && !config.disableAddLoyaltyComponent\n },\n alert: hasError && errorMessage && ,\n checkoutLoyalty: {\n moduleProps: this.props,\n className: classnames(\n this.moduleClassName,\n { [`${this.moduleClassName}__applied`]: isShowLoyalty },\n this.props.config.className\n )\n },\n showLoyalty: {\n heading: ,\n coveredAmountText: (\n \n ),\n amount: (\n \n )\n },\n addLoyalty: {\n heading: ,\n drawer: {\n tag: Drawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: this._drawerHeader(),\n openGlyph: `${this.moduleClassName}__drawer-open`,\n closeGlyph: `${this.moduleClassName}__drawer-close`,\n glyphPlacement: 'end'\n },\n cardNumber: ,\n rewardPoints:\n loyaltyCard.RewardPoints &&\n loyaltyCard.RewardPoints.map((points, index) => {\n return this._renderPointSection(points, resources.availablePointsLabel, resources.expiringLoyaltyPointsLabel);\n }),\n loyaltyAmountContainer: {\n className: `${this.moduleClassName}__amount`\n },\n appliedLoyaltyAmountContainer: {\n className: `${this.moduleClassName}__applied-amount`\n },\n loyaltyAmountLabel: (\n \n ),\n loyaltyAmountInput: (\n \n ),\n loyaltyAmountApplyButton: (\n this.maxDollars ||\n this.state.dollarsApplied <= 0 ||\n isNaN(this.state.dollarsApplied) ||\n this.state.isFetchingLoyaltyCard\n }\n >\n {this.props.resources.applyCheckoutLoyaltyPaymentText}\n \n ),\n showAppliedAmount: checkoutState && checkoutState.loyaltyAmount > 0,\n loyaltyAmountAppliedText: (\n \n ),\n loyaltyAmountAppliedPrice: (\n \n ),\n loyaltyAmountRemoveButton: (\n \n {this.props.resources.removeCheckoutLoyaltyPaymentText}\n \n )\n }\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n this.props.context.telemetry.error('Checkout loyalty content is empty, module wont render');\n return null;\n }\n\n private _drawerHeader(): JSX.Element {\n const channelConfig = this.props.context.request.channel;\n return (\n <>\n

{this.props.resources.loyaltyCoveredAmountText}

\n \n \n );\n }\n\n private _renderPointSection(\n point: LoyaltyRewardPoint,\n loyaltyCoveredAmountText: string,\n expiringLoyaltyPointsLabel: string\n ): ICheckoutLoyaltyRewardPoint {\n return {\n key: point.RewardPointId || '',\n checkoutLoyaltyRewardPoint: {\n className: `${this.moduleClassName}__program`\n },\n title: ,\n availablePointsText: ,\n activePoints: (\n \n ),\n expiringPointsText: ,\n expiringPoints: (\n \n )\n };\n }\n\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const savedLoyaltyAmount = this.props.data.checkout.result?.loyaltyAmount;\n if (savedLoyaltyAmount) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n } else if (\n this.props.data.loyaltyCard.result &&\n this.props.data.checkout.result &&\n this.props.data.loyaltyCard.result.CardNumber !== this.props.data.checkout.result.checkoutCart.cart.LoyaltyCardId\n ) {\n this.props.data.checkout.result.checkoutCart\n .updateLoyaltyCardId({ loyaltyCardNumber: this.props.data.loyaltyCard.result.CardNumber })\n .catch(error => {\n if (this.context.telemetry) {\n this.context.telemetry.warning(error);\n this.context.telemetry.debug('Unable to update the loyalty card');\n }\n });\n }\n };\n\n private readonly onEdit = () => {\n this.props.telemetry.information('Payment section loyalty onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = () => {\n this.props.telemetry.information('Payment section loyalty onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = () => {\n this.props.telemetry.information('Payment section loyalty onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n const checkoutState = this.props.data.checkout.result;\n if (checkoutState && checkoutState.loyaltyAmount > 0) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly isEnabled = () => {\n return (\n this.props.context.request.user.isAuthenticated &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n );\n };\n\n private async _applyLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty apply button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: Number.parseFloat(this.state.dollarsApplied.toString()) });\n this.setState({\n isFetchingLoyaltyCard: true\n });\n }\n\n private async _removeLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty remove button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: 0 });\n this.setState({\n dollarsApplied: 0\n });\n }\n\n private _onInputChange(event: React.ChangeEvent): void {\n const value = event.currentTarget.value;\n this.setState({ dollarsApplied: value.length > 0 ? Number(value) : Number.parseFloat(value), isFetchingLoyaltyCard: false });\n }\n\n private _onBlur(event: React.FocusEvent): void {\n const num = Number.parseFloat(event.currentTarget.value).toFixed(2);\n const element = document.getElementById(`${this.props.id}-label`) as HTMLInputElement;\n if (element && num) {\n element.value = num;\n this.setState({ dollarsApplied: Number.parseFloat(num) });\n }\n }\n\n private _updateLoyalty(): void {\n if (this.props.moduleState.isDisabled && this.isEnabled()) {\n this._updateEstimate();\n this.props.moduleState.onUpdating();\n }\n }\n\n private _updateEstimate(): void {\n const card = this.props.data.loyaltyCard.result;\n const checkout = this.props.data.checkout.result;\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n const channelConfig = this.props.context.request.channel;\n if (card && card.CardNumber && cart && channelConfig) {\n const currencyCode = channelConfig.Currency || '';\n const loyalPointsRequest = createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput(cart.Id, card.CardNumber, currencyCode);\n\n // @ts-expect-error\n // Due to bug 23214358, this is getting improperly cached. Need to turn on cache bypass for now to work around issue\n loyalPointsRequest._query.options.bypassCache = 'get';\n\n callActionOrExecute(loyalPointsRequest, this.props.context.actionContext)\n .then(async points => {\n this.props.context.actionContext.update(\n new GetLoyaltyTransactionEstimationInput(this.props.context.request.apiSettings),\n points\n );\n const newMaxPoints = points.MaxCurrencyValueOfLoyaltyPoints ?? this._defaultLoyaltyPoints;\n\n // If points are already applied, ensure you don't apply more points than max\n if (checkout && checkout.loyaltyAmount > newMaxPoints) {\n await checkout.updateLoyaltyAmount({ newAmount: newMaxPoints });\n }\n\n this.setState({ dollarsApplied: newMaxPoints, isFetchingLoyaltyCard: false });\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n this.props.context.actionContext.telemetry.debug('Error getting Loyalty Point Redemption Estimate');\n });\n }\n }\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutLoyalty;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow, ICheckoutLoyaltyViewProps } from './checkout-loyalty';\n\nconst AddCheckoutLoyalty: React.FC = ({\n heading,\n cardNumber,\n drawer,\n rewardPoints,\n loyaltyAmountContainer,\n appliedLoyaltyAmountContainer,\n loyaltyAmountLabel,\n loyaltyAmountInput,\n loyaltyAmountApplyButton,\n showAppliedAmount,\n loyaltyAmountAppliedText,\n loyaltyAmountAppliedPrice,\n loyaltyAmountRemoveButton\n}) => {\n return (\n <>\n {heading}\n {cardNumber}\n \n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\n return (\n \n {rewardPoint.title}\n {rewardPoint.availablePointsText}\n {rewardPoint.activePoints}\n {rewardPoint.expiringPointsText}\n {rewardPoint.expiringPoints}\n \n );\n })}\n \n \n {loyaltyAmountLabel}\n {loyaltyAmountInput}\n {loyaltyAmountApplyButton}\n {showAppliedAmount && (\n \n {loyaltyAmountAppliedText}\n {loyaltyAmountAppliedPrice}\n {loyaltyAmountRemoveButton}\n \n )}\n \n \n );\n};\n\nconst ShowCheckoutLoyalty: React.FC = ({ heading, coveredAmountText, amount }) => {\n return (\n <>\n {heading}\n {coveredAmountText}\n {amount}\n \n );\n};\n\nconst CheckoutLoyaltyView: React.FC = props => {\n const { checkoutLoyalty, checkoutErrorRef, alert, viewState, showLoyalty, addLoyalty } = props;\n\n return (\n \n {alert}\n {viewState.isShowLoyalty && }\n {viewState.isShowAddLoyalty && }\n \n );\n};\n\nexport default CheckoutLoyaltyView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyInput {\n className: string;\n type: string;\n value: string | number;\n min: number;\n max: number;\n ariaValueMax: number;\n ariaValueMin: number;\n ariaValueNow: number;\n id: string;\n step: string;\n onChange(event: React.ChangeEvent): void;\n onBlur(event: React.FocusEvent): void;\n}\n\nconst AdressInput: React.FC = ({\n className,\n type,\n value,\n min,\n max,\n step,\n ariaValueMax,\n ariaValueMin,\n ariaValueNow,\n onChange,\n onBlur,\n id\n}) => (\n \n);\n\nexport default AdressInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyLabelProps {\n className: string;\n text: string;\n htmlFor: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @param root0.htmlFor\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyLabel: React.FC = ({ className, text, htmlFor }) => {\n return (\n \n );\n};\n\nexport default CheckoutLoyaltyLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyTextProps {\n className: string;\n text?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyText: React.FC = ({ className, text }) => {\n if (!text) {\n return null;\n }\n\n return {text};\n};\n\nexport default CheckoutLoyaltyText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { AsyncResultStatus, Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\nimport {\n updateLineDeliverySpecificationsAsync,\n validateForCheckoutAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n DeliveryPreferenceType,\n LineDeliverySpecification,\n SimpleProduct,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getAvailabilitiesForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n validateCartLinesInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n Waiting\n} from '@msdyn365-commerce-modules/utilities';\nimport { ErrorCode, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport { action, computed, get, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutData } from './checkout.data';\nimport { ICheckoutHeadingData, ICheckoutProps } from './checkout.props.autogenerated';\nimport AlertComponent from './components/alert';\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\nimport { getLineItems, ILineItems } from './components/get-line-items';\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\nimport GuidedFormComponent from './components/guided-form';\nimport PlaceOrderButtonComponent from './components/place-order-button';\nimport placeOrder from './methods/place-order';\nimport { focusOnCheckoutError, setCheckoutErrors } from '../../checkout-errors';\nimport { AsyncResultStatusCode, IExpressPaymentDetails } from '../../common';\n\nexport * from './components/get-line-items';\nexport * from './components/get-order-summary';\n\n/**\n * Device type.\n */\ntype DeviceType = 'Mobile';\n\n/**\n * The Checkout state.\n */\ninterface ICheckoutState {\n errorMessage: string;\n isValidationPassed: boolean;\n isPlaceOrderLoading?: boolean;\n isPlaceOrderClicked?: boolean;\n}\n\n/**\n * Known action error failure states\n */\nexport const enum ActionErrorStatus {\n Timeout = 'Timeout',\n HookTimeout = 'Hook Timeout',\n ServiceUnavailable = 'Service Unavailable'\n}\n\n/**\n * The Checkout view props.\n * @extends ICheckoutProps\n */\nexport interface ICheckoutViewProps extends ICheckoutProps {\n className: string;\n canShow?: boolean;\n isEmptyCart?: boolean;\n isConsentGiven?: boolean;\n hasError?: boolean;\n isPaymentVerificationRedirection?: boolean;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n cartStatus?: string;\n isMobile?: boolean;\n isEditorialMode?: boolean;\n backToShoppingUrl?: string;\n editCartLink?: string;\n hasSalesOrder: boolean;\n hasInvoiceLine?: boolean;\n\n moduleState?: IModuleStateManager;\n telemetryContent?: ITelemetryContent;\n checkoutGuidedFormHasError?: boolean;\n\n checkoutProps: IModuleProps;\n headerProps: INodeProps;\n bodyProps: INodeProps;\n mainProps: INodeProps;\n mainControlProps: INodeProps;\n sideProps: INodeProps;\n sideControlFirstProps: INodeProps;\n sideControlSecondProps: INodeProps;\n termsAndConditionsProps: INodeProps;\n\n guidedForm?: React.ReactNode;\n title?: React.ReactNode;\n loading?: React.ReactNode;\n alert?: React.ReactNode;\n orderSummary?: IOrderSummary;\n invoicePaymentSummary?: IInvoicePaymentSummary;\n lineItems?: ILineItems;\n placeOrderButton?: React.ReactNode;\n termsAndConditions?: React.ReactNode;\n keepShoppingButton?: React.ReactNode;\n orderConfirmation?: React.ReactNode;\n\n checkoutExpressPaymentContainer?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n * The checkout module props interface.\n */\nexport interface ICheckoutModuleProps extends ICheckoutProps, IModuleStateProps {}\n\nconst expressPaymentSectionClassName = 'msc-express-payment-container';\n\n/**\n *\n * CheckoutContainer component.\n * @extends {React.Component}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass Checkout extends React.PureComponent {\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\n return this.props.data.checkout?.status;\n }\n\n @computed get isEmptyCart(): boolean {\n if (this.isEditorialMode) {\n // Editorial mode: Ignore empty cart\n return false;\n }\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\n }\n\n @computed get hasError(): boolean {\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\n }\n\n @computed get isEditorialMode(): boolean {\n return this.props.context.request.params.isEditor;\n }\n\n @computed get canPlaceOrder(): boolean {\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\n\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n const disableForOBO = Msdyn365.isOboRequest(this.props.context.request) && !this.isPaidOffByCustomerAccount;\n\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\n return (\n this.props.moduleState.isReady &&\n (isTermsAndConditionAccepted === undefined || isTermsAndConditionAccepted || shouldEnableSinglePaymentAuthorizationCheckout) &&\n (this.state.errorMessage === '' ||\n shouldEnableSinglePaymentAuthorizationCheckout ||\n (this.props.data.checkout.result?.isPaymentVerificationRedirection ?? false)) &&\n !(shouldEnableSinglePaymentAuthorizationCheckout && disableForOBO)\n );\n }\n\n @computed get isPaidOffByCustomerAccount(): boolean {\n const amountDue = this.props.data.checkout.result?.checkoutCart.cart.TotalAmount ?? 0;\n const customerAccountAmount = this.props.data.checkout.result?.customerAccountAmount ?? 0;\n\n return customerAccountAmount === amountDue;\n }\n\n @computed get isCartReady(): boolean {\n return (\n !!this.props.data.checkout.result?.checkoutCart?.cart &&\n this.props.data.customerInformation.status !== 'LOADING' &&\n this.props.data.featureState.status !== 'LOADING'\n );\n }\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n const properties =\n this.props.data.checkout?.result?.checkoutCart?.cart?.ExtensionProperties?.find(\n property => property.Key === 'expressPaymentDetails'\n )?.Value?.StringValue ?? '';\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n public state: ICheckoutState = {\n errorMessage: '',\n isValidationPassed: false,\n isPlaceOrderLoading: false,\n isPlaceOrderClicked: false\n };\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public componentDidMount(): void {\n const {\n resources: { genericErrorMessage }\n } = this.props;\n\n when(\n () => this.asyncResultStatus !== AsyncResultStatusCode.LOADING,\n async () => {\n if (this.expressPaymentDetailsFromCartPage) {\n const {\n email,\n tenderLine,\n tokenizedPaymentCard,\n paymentTenderType: paymentTenderTypeFromCartPage,\n isExpressCheckoutAppliedInCartPage,\n isExpressAddressAppliedInCartPage,\n cardPaymentAcceptResult,\n address\n } = this.expressPaymentDetailsFromCartPage;\n\n this.props.data.checkout.result?.updateExpressCheckoutDetails({\n newEmailAddressFromExpressCheckout: email ?? '',\n newTenderLine: tenderLine,\n newTokenizedPaymentCard: tokenizedPaymentCard,\n newPaymentTenderType: paymentTenderTypeFromCartPage,\n newIsExpressCheckoutApplied: isExpressCheckoutAppliedInCartPage,\n newIsExpressAddressApplied: isExpressAddressAppliedInCartPage,\n newCardPaymentAcceptResult: cardPaymentAcceptResult\n });\n\n if (isExpressAddressAppliedInCartPage && address) {\n this.props.data.checkout.result?.updateBillingAddressFromExpressCheckout({\n newBillingAddressFromExpressCheckout: address\n });\n this.props.data.checkout.result?.updateShippingAddressFromExpressCheckout({\n newShippingAddressFromExpressCheckout: address\n });\n } else {\n void this._saveShippingAndBillingAddress(tokenizedPaymentCard);\n }\n\n this.props.data.checkout.result?.checkoutCart.updateExtensionProperties({\n newExtensionProperties: [\n {\n Key: 'expressPaymentDetails',\n Value: { StringValue: '' }\n }\n ]\n });\n }\n }\n );\n\n when(\n () => this.hasError,\n () => {\n this.setState({\n errorMessage: genericErrorMessage\n });\n this.props.context.telemetry.error('Failed to get cart');\n }\n );\n\n when(\n () => {\n return this.isEmptyCart;\n },\n () => {\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\n }\n );\n\n when(\n () => this.isCartReady,\n () => {\n this.validateForCheckout();\n }\n );\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\n async isReady => {\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isReady &&\n !this.props.data.checkout.result?.redirectAdditionalContext &&\n (!this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.props.data.checkout.result?.isPaymentVerificationRedirection)\n ) {\n if (!this.state.isPlaceOrderLoading) {\n this.setState({ isPlaceOrderLoading: true });\n }\n\n this.props.telemetry.information(\n 'Call onPlaceOrder as reaction when isPaymentSectionContainerReady is updated for single auth payment.'\n );\n\n await this.onPlaceOrder();\n\n // If 3D authentication redirection, don't update isPlaceOrderLoading\n if (!this.props.data.checkout.result.isPaymentVerificationRequired) {\n this.setState({ isPlaceOrderLoading: false });\n }\n }\n }\n );\n\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isPaymentSectionContainerHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isPaymentSectionContainerHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isBillingAddressHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.data.checkout.result?.updateIsBillingAddressHasError({ newIsBillingAddressHasError: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isBillingAddressHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isBillingAddressHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n // Reaction to enable place order button when redirection is true for new checkout flow.\n reaction(\n () => this.canPlaceOrder,\n async () => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\n newIsPlaceOrderEnabledInRedirection: true\n });\n\n this.props.telemetry.information(\n 'Set isPaymentVerificationRedirection to true as reaction when canPlaceOrder is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when canPlaceOrder is updated to true but isPaymentVerificationRedirection is false for single auth payment.'\n );\n this.props.telemetry.information(\n `isOBORequest is ${Msdyn365.isOboRequest(this.props.context.request)} and canPlaceOrder is ${\n this.canPlaceOrder\n }.`\n );\n }\n } else {\n this.props.telemetry.information('No reaction when canPlaceOrder is updated to false or not single auth payment.');\n }\n }\n );\n\n // Reaction to update the error message when there is a checkout error.\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n const checkoutErrorLocation: boolean = checkoutError?.errorLocation === ErrorLocation.Checkout;\n // If there is an Error in CheckoutPaymentInstrument module, checkout error location will be updated.\n const checkoutPaymentErrorLocation: boolean =\n checkoutError?.errorCode === ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment\n ? checkoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument\n : checkoutErrorLocation;\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n checkoutError &&\n checkoutError.errorMessage &&\n (checkoutErrorLocation ? checkoutErrorLocation : checkoutPaymentErrorLocation)\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n this.props.data.checkout.result?.shouldFocusOnCheckoutError &&\n this.state.errorMessage\n ) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n\n // eslint-disable-next-line complexity -- ignore the complexity.\n public render(): JSX.Element {\n const {\n moduleState,\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\n resources,\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const { errorMessage } = this.state;\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\n const checkoutClass = classnames('ms-checkout', className);\n const allCheckoutInformation = this.getSlotItems('checkoutInformation');\n\n // @ts-expect-error - check the key of slot\n const checkoutInformation = allCheckoutInformation?.filter(info => !info?.key.includes('express-payment'));\n\n // @ts-expect-error - check the key of slot\n const checkoutExpressPaymentContainer = allCheckoutInformation?.find(info => info?.key.includes('express-payment'));\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n const isMobile =\n this.props.context.request &&\n this.props.context.request.device &&\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\n\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n\n const termsAndConditions =\n this.props.slots.termsAndConditions && this.props.slots.termsAndConditions.length > 0 && this.props.slots.termsAndConditions[0];\n\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout?.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isExpressCheckoutApplied = this.props.data.checkout?.result?.isExpressCheckoutApplied ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasCartDeliveryMode = this.props.data.checkout?.result?.hasCartDeliveryMode;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasGuestCheckoutEmail = this.props.data.checkout?.result?.hasGuestCheckoutEmail;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isTermsAndConditionAccepted = this.props.data.checkout?.result?.isTermsAndConditionAccepted;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isPaymentVerificationRedirection = this.props.data.checkout?.result?.isPaymentVerificationRedirection ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldEnableCheckoutErrorDisplayMessaging =\n this.props.data.checkout?.result?.shouldEnableCheckoutErrorDisplayMessaging ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldFocusOnCheckoutError = this.props.data.checkout?.result?.shouldFocusOnCheckoutError;\n\n let hasExpressPaymentContainer = false;\n\n if (\n typeof window !== 'undefined' &&\n (document?.getElementsByClassName(expressPaymentSectionClassName) as HTMLCollectionOf)[0]?.style.display === ''\n ) {\n hasExpressPaymentContainer = true;\n }\n\n let viewProps: ICheckoutViewProps = {\n ...this.props,\n className: checkoutClass,\n checkoutErrorRef: this.checkoutErrorRef,\n isEmptyCart: this.isEmptyCart,\n isConsentGiven,\n hasError: this.hasError,\n isPaymentVerificationRedirection: this.props.data.checkout?.result?.isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n hasSalesOrder:\n this.props.data.checkout &&\n this.props.data.checkout.result !== undefined &&\n this.props.data.checkout.result.salesOrder !== undefined,\n hasInvoiceLine,\n cartStatus: this.cartStatus,\n isMobile,\n backToShoppingUrl,\n editCartLink,\n isEditorialMode: this.isEditorialMode,\n orderConfirmation:\n this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0\n ? this.props.slots.orderConfirmation[0]\n : undefined,\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\n headerProps: { className: 'ms-checkout__head' },\n bodyProps: { className: 'ms-checkout__body' },\n mainProps: { className: 'ms-checkout__main' },\n mainControlProps: { className: 'ms-checkout__main-control' },\n sideProps: { className: hasExpressPaymentContainer ? 'ms-checkout__has-express-side' : 'ms-checkout__side' },\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\n title: checkoutHeading && this.renderMsdyn365Text(checkoutHeading),\n checkoutExpressPaymentContainer\n };\n\n if (!isConsentGiven && isAuthenticated) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else if (this.isLoading()) {\n viewProps = {\n ...viewProps,\n loading: \n };\n } else if (this.hasError) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else {\n viewProps = {\n ...viewProps,\n alert: errorMessage && ,\n canShow: true,\n guidedForm: checkoutInformation ? (\n \n ) : (\n undefined\n ),\n orderSummary: getOrderSummary(this.props),\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\n placeOrderButton: (\n \n ),\n termsAndConditions,\n keepShoppingButton: backToShoppingUrl && (\n \n {backToShopping}\n \n ),\n moduleState,\n telemetryContent: this.telemetryContent,\n checkoutGuidedFormHasError: !!errorMessage\n };\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @computed public get asyncResultStatus(): AsyncResultStatus | undefined {\n const isLoading = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.LOADING);\n if (isLoading) {\n return AsyncResultStatusCode.LOADING;\n }\n\n const isSuccess = Object.values(this.props.data).every(data => get(data, 'status') === AsyncResultStatusCode.SUCCESS);\n if (isSuccess) {\n return AsyncResultStatusCode.SUCCESS;\n }\n\n const isFailed = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.FAILED);\n if (isFailed) {\n return AsyncResultStatusCode.FAILED;\n }\n\n return undefined;\n }\n\n /**\n * Renders heading.\n * @param checkoutHeading - The checkout heading.\n * @returns React node.\n */\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutHeading!.text = event.target.value);\n\n /**\n * Checks if cart is loading.\n * @returns True if is loading, false otherwise.\n */\n private readonly isLoading = (): boolean => {\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\n };\n\n /**\n * Get slot items.\n * @param key - The slot key.\n * @returns React node or undefined.\n */\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\n const { slots } = this.props;\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\n };\n\n /**\n * Trigger the payment section container submit when placing order.\n */\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\n this.setState({ isPlaceOrderLoading: true });\n\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder({\n newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder\n });\n };\n\n /**\n * On place order.\n * @returns Void promise.\n */\n private readonly onPlaceOrder = async (): Promise => {\n const {\n resources: { checkoutOutOfStockErrorMessage },\n context: {\n actionContext,\n app: {\n config: { enableStockCheck = false }\n }\n },\n slots: { orderConfirmation },\n data: { checkout, products }\n } = this.props;\n\n this.props.telemetry.information('Checkout onPlaceOrder is called.');\n this.setState({ isPlaceOrderClicked: true });\n\n // If hasInvoiceLine is true, no inventory check\n if (\n !this.props.data.checkout.result?.checkoutCart.hasInvoiceLine &&\n enableStockCheck &&\n (await this.isOverMaxQuantity((await checkout).checkoutCart.cart, await products))\n ) {\n this.setState({\n errorMessage: checkoutOutOfStockErrorMessage\n });\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\n } else {\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\n\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\n\n await placeOrder(\n actionContext,\n this.props.data.checkout.result,\n this.props.data.products.result,\n !hasOrderConfirmation,\n updatedCartVersion,\n this.props.data.checkout.result?.isPaymentVerificationRedirection\n ).catch(error => {\n this.handleCheckoutError(error);\n });\n\n await checkout.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: false });\n }\n };\n\n /**\n * Update receipt email address for electronic cart line.\n * @param newGuestCheckoutEmail - The guest checkout email.\n * @returns The updated cart version.\n */\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n let electronicDeliveryInvoiceAddress: Address;\n\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\n\n if (hasShippingAddress && this.props.config.useShippingAddressAsElectronicDeliveryInvoiceAddress) {\n electronicDeliveryInvoiceAddress = this.props.data.checkout?.result?.shippingAddress as Address;\n }\n\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\n cartLine => cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode\n );\n\n let updatedCartVersion: number | undefined;\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\n return {\n LineId: line.LineId,\n DeliverySpecification: {\n DeliveryModeId: emailDeliveryModeCode,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail,\n DeliveryAddress: hasShippingAddress ? electronicDeliveryInvoiceAddress : undefined\n }\n };\n });\n\n await updateLineDeliverySpecificationsAsync(\n { callerContext: this.props.context.actionContext },\n (await this.props.data.checkout).checkoutCart.cart.Id,\n lineDeliverySpecifications\n )\n .then(updatedCart => {\n updatedCartVersion = updatedCart.Version;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\n });\n }\n\n return updatedCartVersion;\n };\n\n /**\n * Return true if any product in the cart is over its max quantity.\n * @param cart -- The checkout cart.\n * @param products -- The checkout products.\n * @returns - Is any product in the cart is over max quantity.\n */\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\n let isOverMaxQuantity = false;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n await getAvailabilitiesForCartLineItems(\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\n this.props.context.actionContext\n )\n .then(productInventoryInformation => {\n const productsThatShouldValidateInventory: IProductInventoryInformation[] = [];\n\n cart.CartLines?.map(cartline => {\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\n\n // If product is non-stocked or cartline is electronic delivery, then no inventory check\n const isStockedItem = cartlineProduct?.Behavior?.IsStockedProduct;\n const isEmailDelivery =\n cartline.DeliveryMode && cartline.DeliveryMode !== '' ? cartline.DeliveryMode === emailDeliveryModeCode : false;\n const shouldSkipInventoryCheck = !isStockedItem || isEmailDelivery;\n if (!shouldSkipInventoryCheck && ArrayExtensions.hasElements(productInventoryInformation)) {\n const foundProductAvailability = productInventoryInformation.find(productInventory => {\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n if (foundProductAvailability) {\n productsThatShouldValidateInventory.push(foundProductAvailability);\n }\n }\n });\n\n const cartLinesInventoryValidation = validateCartLinesInventory(\n cart.CartLines ?? [],\n productsThatShouldValidateInventory,\n this.props.context.actionContext,\n products,\n emailDeliveryModeCode\n );\n\n // If is invalid then exceeds the available quantity\n isOverMaxQuantity = !cartLinesInventoryValidation.isValid;\n return isOverMaxQuantity;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\n });\n\n return isOverMaxQuantity;\n };\n\n /**\n * Gets active child in module state.\n * @returns - The module state manager collection.\n */\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n /**\n * On container ready.\n */\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Checkout onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n\n /**\n * Redirects to cart page.\n * @param notFoundEditCartLinkMessage - Not found edit cart link message.\n */\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n if (window && editCartLink) {\n window.location.assign(editCartLink);\n } else {\n this.setState({\n errorMessage: this.props.resources.genericErrorMessage\n });\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\n }\n };\n\n /**\n * Validates for checkout.\n * @param retry - Retry flag.\n */\n private readonly validateForCheckout = (retry: boolean = true): void => {\n const notFoundEditCartLinkMessage = \"Cart doesn't pass validation, but no editCartLink found\";\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\n const { Id, Version } = cart;\n if (this._shouldValidateQuantityLimits()) {\n if (Version && Id) {\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\n .then((result: CartLineValidationResults) => {\n if (result.ValidationFailuresByCartLines?.length !== 0) {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n } else {\n this.setState({ isValidationPassed: true });\n }\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to validate Cart');\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n const cartState = this.props.data.checkout.result?.checkoutCart;\n cartState\n ?.refreshCart({})\n .then(() => {\n this.validateForCheckout(false);\n })\n .catch((refreshError: Error) => {\n this.props.telemetry.warning(refreshError.message);\n this.props.telemetry.debug('Unable to refresh Cart');\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n } else {\n this.setState({ isValidationPassed: true });\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _shouldValidateQuantityLimits = (): boolean => {\n const featureStatuses = this.props.data.featureState.result;\n const isECommerceQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n\n if (isECommerceQuantityLimitsFeatureEnabledInHq) {\n return true;\n }\n\n const isOrderQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature')\n ?.IsEnabled || false;\n\n if (!isOrderQuantityLimitsFeatureEnabledInHq) {\n return false;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n const customerInfo = this.props.data.customerInformation.result;\n const isB2BSite = isChannelTypeB2B(this.props.context.actionContext.requestContext);\n\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings =\n defaultOrderQuantityLimitsFeatureConfig === 'all' ||\n (customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && isB2BSite) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !isB2BSite)));\n\n return isOrderQuantityLimitsFeatureEnabledInSiteSettings ?? false;\n } else {\n const cartConfiguration = this.props.data.cartConfiguration?.result;\n return !(cartConfiguration?.IgnoreOrderSettings ?? false);\n }\n };\n\n /**\n * Save the address as Shipping and Billing address.\n * @param tokenizedPaymentCard - Tokenized payment card.\n */\n private readonly _saveShippingAndBillingAddress = async (tokenizedPaymentCard?: TokenizedPaymentCard): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n // For Paypal, the address returned in TokenizedPaymentCard will be used as both shipping and billing address.\n if (checkoutState && tokenizedPaymentCard && tokenizedPaymentCard.Zip) {\n const address: Address = this._getAddressFromTokenizedPaymentCard(tokenizedPaymentCard);\n\n await checkoutState.updateBillingAddressFromExpressCheckout({ newBillingAddressFromExpressCheckout: address });\n await checkoutState.updateShippingAddressFromExpressCheckout({ newShippingAddressFromExpressCheckout: address });\n }\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly _getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const address: Address = {\n TwoLetterISORegionName: tokenizedPaymentCard.Country,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone\n };\n\n return address;\n };\n\n /**\n * Handle checkout errors.\n * @param error -- The error on checkout api failure.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly handleCheckoutError = (error: any) => {\n // Here checkout failure message will be shown if there is any error in checkout api except data validation.\n const {\n resources: {\n genericErrorMessage,\n invalidCartVersionErrorMessage,\n missingRequiredCartTenderLinesErrorMessage,\n checkoutApiFailureErrorMessage,\n invoiceCheckoutApiFailureErrorMessage\n },\n context: { actionContext }\n } = this.props;\n const checkoutResult = this.props.data.checkout.result;\n const apiError = error && error.message;\n if (error?.statusCode === 500) {\n const errorMessage = checkoutApiFailureErrorMessage;\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n this.setState({ isPlaceOrderLoading: false });\n return;\n }\n if (checkoutResult && checkoutResult.shouldEnableCheckoutErrorDisplayMessaging) {\n const errorCode = error && error.name ? error.name : '';\n // apiError message will be used if errorcode resource/enums is unavailable\n setCheckoutErrors(errorCode, this.props.resources, !!checkoutResult.isExpressCheckoutApplied, actionContext, apiError);\n } else {\n let errorMessage = genericErrorMessage;\n this.setState({ isPlaceOrderClicked: false });\n\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n errorMessage = invalidCartVersionErrorMessage;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines') {\n errorMessage = missingRequiredCartTenderLinesErrorMessage;\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_ExclusiveCouponCannotBeAppliedWithOtherCoupons') {\n // If api error is not available show generic message\n errorMessage = apiError || genericErrorMessage;\n } else {\n if (error.status === ActionErrorStatus.Timeout || error.status === ActionErrorStatus.ServiceUnavailable) {\n errorMessage = checkoutResult?.checkoutCart.hasInvoiceLine\n ? invoiceCheckoutApiFailureErrorMessage\n : checkoutApiFailureErrorMessage;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n error.data?.AdditionalContext &&\n !this.props.data.checkout.result?.isPaymentVerificationRedirection\n ) {\n return;\n }\n\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n }\n };\n}\n\nexport default Checkout;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutViewProps,\n ILineItem,\n ILineItemDeliveryGroup,\n ILineItems,\n IOrderSummary,\n IPickUpAtStore,\n IEmailDelivery,\n IInvoicePaymentSummary\n} from './index';\n\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => {label};\n\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {pickUpAtStore && }\n {emailDelivery && }\n \n);\n\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\n \n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({\n LineItemDeliveryGroup,\n LineItemList,\n heading,\n lineItems,\n lineItemWraper,\n lineItemWraperIcon\n}) => (\n \n {lineItemWraperIcon}\n {lineItemWraper}\n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {emailDelivery && }\n \n);\n\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const LineItemsComponent: React.FC = ({\n LineItems,\n Header,\n heading,\n editLink,\n itemsForPickup,\n itemsForShip,\n itemsForEmail,\n itemsGroupWithMulitplePickupMode\n}) => (\n \n \n {heading}\n {editLink}\n \n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\n {itemsGroupWithMulitplePickupMode !== undefined\n ? itemsGroupWithMulitplePickupMode.map((item, index) => {\n return ;\n })\n : null}\n \n);\n\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\n
\n {heading}\n
\n {lines && (\n <>\n {lines.subtotal}\n {lines.shipping}\n {lines.otherCharge}\n {lines.tax}\n {lines.totalDiscounts}\n {lines.loyalty}\n {lines.customerAccount}\n {lines.giftCard}\n {lines.orderTotal}\n \n )}\n
\n
\n);\n\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\n
\n {heading}\n
\n {lines && (\n <>\n {lines.invoices}\n {lines.giftCard}\n {lines.loyalty}\n {lines.orderTotal}\n \n )}\n
\n
\n);\n\nconst CheckoutView: React.FC = props => {\n const {\n isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n canShow,\n checkoutProps,\n headerProps,\n hasSalesOrder,\n hasInvoiceLine,\n bodyProps,\n mainProps,\n mainControlProps,\n sideProps,\n sideControlFirstProps,\n sideControlSecondProps,\n termsAndConditionsProps,\n orderConfirmation,\n loading,\n alert,\n title,\n guidedForm,\n orderSummary,\n invoicePaymentSummary,\n lineItems,\n placeOrderButton,\n termsAndConditions,\n keepShoppingButton,\n checkoutExpressPaymentContainer,\n checkoutErrorRef\n } = props;\n\n return (\n \n {!hasSalesOrder && !checkoutExpressPaymentContainer && {title}}\n {!hasSalesOrder && isPaymentVerificationRedirection && shouldEnableSinglePaymentAuthorizationCheckout && !alert && !loading && (\n \n )}\n {!hasSalesOrder && (\n \n {loading}\n {alert}\n {canShow && (\n <>\n \n {checkoutExpressPaymentContainer}\n {checkoutExpressPaymentContainer && {title}}\n {guidedForm}\n {termsAndConditions}\n \n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n {!hasInvoiceLine\n ? orderSummary && \n : invoicePaymentSummary && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n {lineItems && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n )}\n \n )}\n {hasSalesOrder && orderConfirmation}\n \n );\n};\n\nexport default CheckoutView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAlertProps {\n message: string;\n}\n\nconst CheckoutAlert: React.FC = ({ message }) => (\n

\n {message}\n

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

{invoiceSummaryTitle}

,\n lines: checkoutCart?.hasInvoiceLine\n ? InvoiceSummary({\n orderTotalLabel: totalAmountLabel,\n invoiceLabel,\n cart,\n context,\n typeName,\n telemetry,\n id,\n checkoutState: checkout.result\n })\n : undefined\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\ntype deliveryType = 'pickup' | 'ship' | 'email';\n\nexport interface IPickUpAtStore {\n PickUpAtStore: INodeProps;\n label: React.ReactNode;\n location: React.ReactNode;\n}\n\nexport interface IEmailDelivery {\n EmailDelivery: INodeProps;\n label: React.ReactNode;\n}\n\nexport interface ILineItem {\n LineId: string;\n LineItem: INodeProps;\n item?: React.ReactNode;\n pickUpAtStore?: IPickUpAtStore;\n emailDelivery?: IEmailDelivery;\n}\n\nexport interface ILineItemDeliveryGroup {\n LineItemDeliveryGroup: INodeProps;\n LineItemList: INodeProps;\n heading: React.ReactNode;\n lineItemWraper?: React.ReactNode;\n lineItemWraperIcon?: React.ReactNode;\n lineItems: ILineItem[];\n}\n\nexport interface ILineItems {\n LineItems: INodeProps;\n Header: INodeProps;\n heading: React.ReactNode;\n editLink: React.ReactNode;\n itemsForPickup?: ILineItemDeliveryGroup;\n itemsForShip?: ILineItemDeliveryGroup;\n itemsForEmail?: ILineItemDeliveryGroup;\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\n}\n\nexport const getLineItems = (input: ICheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = input.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const _getDeliveryLocation = (cartLine: CartLine): string => {\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\n return '';\n }\n\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\n });\n\n return locationMatch && locationMatch.OrgUnitName;\n };\n\n const _getProduct = (productId: number): SimpleProduct | undefined => {\n const products = get(input, 'data.products.result') || [];\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n };\n\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\n const {\n id,\n typeName,\n context,\n config: { imageSettings, showShippingChargesForLineItems },\n resources: {\n quantityDisplayString,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n productDimensionTypeAmount,\n configString,\n inputQuantityAriaLabel,\n discountStringText,\n shippingCharges\n },\n context: {\n request: { gridSettings }\n }\n } = input;\n const catalogs = input.data.catalogs?.result;\n if (!product) {\n return;\n }\n\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n const currencyCode = get(input, 'context.request.channel.Currency');\n return (\n \n );\n };\n\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\n const {\n resources: { pickUpAtStoreWithLocationText }\n } = input;\n\n return {\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\n label: {pickUpAtStoreWithLocationText},\n location:
{pickupDeliveryLocation}
\n };\n };\n\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\n const {\n resources: { emailDeliveryText }\n } = input;\n\n return {\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\n label: {emailDeliveryText}\n };\n };\n\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\n return items.map(cartLine => {\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const isPickUp = _getCartPickDeliveryMode(cartLine);\n const isEmailDelivery =\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\n return {\n LineId: cartLine.LineId || '',\n LineItem: { className: 'ms-checkout__line-item' },\n item: _getLineItemComponent(cartLine),\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\n };\n });\n };\n\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode ===\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode === pickupDeliveryModeCode\n : false;\n };\n\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode !==\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode !== pickupDeliveryModeCode\n : false;\n };\n\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\n const {\n resources: { itemLabel, itemsLabel, inStorePickUpLabel, shippingCountCheckoutLineItem }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? shippingCountCheckoutLineItem\n : type === 'pickup'\n ? inStorePickUpLabel\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _countItems = (items: CartLine[]): number => {\n return items.reduce((count, item) => {\n return count + (item.Quantity || 0);\n }, 0);\n };\n\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n if (type === 'ship') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? _getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n } else if (type === 'pickup') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? _getCartPickDeliveryMode(cartLine) : null\n );\n }\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\n };\n\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\n return;\n }\n\n const items = _filterItemsByDiliveryType(type);\n\n if (items.length === 0) {\n return undefined;\n }\n\n const count = _countItems(items);\n const title = _getGroupTitleComponent(count, type);\n\n return {\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n heading:
{title}
,\n lineItems: _getLineItemsComponents(items)\n };\n };\n\n const _getLineItems = (): ILineItems | undefined => {\n const {\n context,\n config: { lineItemsHeading },\n data: { products },\n resources: { editCartText }\n } = input;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\n return undefined;\n }\n\n return {\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\n Header: { className: 'ms-checkout__line-items-header' },\n heading: lineItemsHeading && lineItemsHeading.text && (\n \n ),\n editLink: (\n \n {editCartText}\n \n ),\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\n itemsForShip: _getLineItemsByDeliveryType('ship'),\n itemsForEmail: _getLineItemsByDeliveryType('email'),\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled\n ? _getLineItemsByDeliveryTypeWithMulitplePickupMode()\n : undefined\n };\n };\n\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n const {\n config: { lineItemsHeading }\n } = input;\n if (lineItemsHeading) {\n lineItemsHeading.text = event.target.value;\n }\n };\n\n const _getGroupTitleComponentWithMultiplePickUp = (\n count: number,\n type: deliveryType,\n deliveryMode?: string,\n fulFillmentStoreId?: string\n ): string => {\n const {\n resources: { itemLabel, itemsLabel }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n let pickupDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n pickupDeliveryModeDesc = pickupDeliveryModeDesc\n ? pickupDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\n });\n\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? `(${count} ${suffix})`\n : type === 'pickup'\n ? `${pickupTitle} (${count} ${suffix})`\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\n const groupDelivery = getGroupByDelivery(cart.CartLines);\n const cartLinesGroup: CartLine[] = [];\n const cartLinesGrp: CartLine[][] = [];\n\n // 1) Group by store and pick up mode\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\n // @ts-expect-error\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\n });\n\n Object.keys(cartLinesGroup).forEach(key => {\n const cartLines = cartLinesGroup[key];\n Object.keys(cartLines).forEach(index => {\n const cartLine = cartLines[index];\n cartLinesGrp.push(cartLine);\n });\n });\n\n return cartLinesGrp;\n };\n\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\n return;\n }\n\n const {\n resources: { multiplePickUpLabel, shippingLable }\n } = input;\n\n const items = _filterItemsByMultiplePickupMode();\n\n if (items.length === 0) {\n return undefined;\n }\n\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\n items.map(item => {\n const count = _countItems(item);\n const cartLine = item[0];\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const type: deliveryType =\n cartLine.FulfillmentStoreId && cartLine.DeliveryMode\n ? 'pickup'\n : cartLine.FulfillmentStoreId === '' &&\n cartLine.DeliveryMode === emailDeliveryModeCode &&\n !StringExtensions.isNullOrEmpty(emailDeliveryModeCode)\n ? 'email'\n : 'ship';\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : type === 'ship' ? shippingLable : 'email';\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\n lineItemDeliveryGroup.push({\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n lineItemWraperIcon:
,\n lineItemWraper:
{groupTitle}
,\n heading:
{title}
,\n lineItems: _getLineItemsComponents(item)\n });\n });\n\n return lineItemDeliveryGroup;\n };\n\n return _getLineItems();\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\nexport interface IOrderSummary {\n orderSummaryProps: INodeProps;\n heading?: React.ReactNode;\n lines?: IOrderSummaryLines;\n}\nexport const getOrderSummary = (input: ICheckoutProps): IOrderSummary => {\n const {\n config: { orderSummaryHeading },\n data: { checkout },\n resources: {\n subTotalLabel,\n shippingLabel,\n taxLabel,\n orderTotalLabel,\n loyaltyLabel,\n giftcardLabel,\n totalDiscountsLabel,\n freeText,\n toBeCalculatedText,\n otherCharges,\n customerAccountLabel\n },\n context,\n typeName,\n id,\n telemetry\n } = input;\n\n const checkoutState = get(checkout, 'result');\n const cart = get(checkout, 'result.checkoutCart.cart');\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\n const channelConfiguration = context.request.channel!;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = input.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const isShowOrHideTaxEnabled = context.request.app.config.isEnableShowOrHideSalesTaxECommerceEnabled === true;\n\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n const {\n config: { orderSummaryHeading }\n } = input;\n if (orderSummaryHeading) {\n orderSummaryHeading.text = event.target.value;\n }\n };\n\n return {\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\n heading: orderSummaryHeading && orderSummaryHeading.text && (\n \n ),\n lines: showLineItems\n ? OrderSummary({\n checkoutState,\n cart,\n subTotalLabel,\n shippingLabel,\n taxLabel,\n orderTotalLabel,\n loyaltyLabel,\n giftcardLabel,\n totalDiscountsLabel,\n freeText,\n toBeCalculatedText,\n context,\n typeName,\n id,\n channelConfiguration,\n telemetry,\n otherChargeLabel: otherCharges,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- existing property.\n isTaxIncludedInPrice: cart.IsTaxIncludedInPrice,\n isShowTaxBreakup: isShowOrHideTaxEnabled,\n customerAccountLabel\n })\n : undefined\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Heading as HeadingType } from '@msdyn365-commerce-modules/data-types';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport * as React from 'react';\nimport { focusOnCheckoutError, setCheckoutErrorFocus } from '../../../checkout-errors';\n\nexport interface ICheckoutGuidedCardProps {\n id?: string;\n step: number;\n title?: HeadingType;\n disabled?: boolean; // Module is not available\n isActive?: boolean; // Step === currentStep\n isVisted?: boolean; // Step < currentStep\n isExpanded?: boolean;\n isReady?: boolean;\n isPending?: boolean;\n isUpdating?: boolean;\n isSubmitting?: boolean;\n isCancelAllowed?: boolean;\n isMobile?: boolean;\n hasInitialized?: boolean;\n hasControlGroup?: boolean;\n shouldFocus?: boolean;\n children: React.ReactNode;\n moduleState?: IModuleStateManager;\n actionContext?: IActionContext;\n resource: {\n checkoutStepTitleFormat: string;\n saveBtnLabel: string;\n changeBtnLabel: string;\n cancelBtnLabel: string;\n saveAndContinueBtnLabel: string;\n };\n telemetryContent?: ITelemetryContent;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n onNext(): void;\n}\n\n/**\n *\n * CheckoutGuidedCard component.\n * @extends {React.Component}\n */\nclass CheckoutGuidedCard extends React.PureComponent {\n private readonly editButtonRef: React.RefObject = React.createRef();\n\n private readonly formCardRef: React.RefObject = React.createRef();\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: ICheckoutGuidedCardProps) {\n super(props);\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\n }\n\n public componentDidUpdate(prevProps: ICheckoutGuidedCardProps): void {\n /**\n * Move to next step when current step is ready.\n */\n const { isActive, isReady, onNext, isVisted, onEdit, shouldFocus, children, moduleState, actionContext } = this.props;\n\n // Move to next step after completing the current step\n if (isActive && isReady) {\n onNext();\n }\n\n // Set the focus to Edit button once edit button appear\n // (It happens when current step switch to isReady status)\n const prevCanEdit = prevProps.isReady && prevProps.isVisted && !!prevProps.onEdit;\n const canEdit = isReady && isVisted && !!onEdit;\n if (!prevCanEdit && canEdit) {\n this.focusOnEditButton();\n this.scrollToTitle();\n }\n\n // Set the focus to the first focusable element\n // (It happens when current step switch to isUpdating status)\n if (prevProps.isReady && !isReady) {\n this.focusOnFirstFocusableElement();\n }\n\n // Set the focus for the checkout error\n if (shouldFocus && actionContext) {\n const childrenModules = this._getModules(children);\n\n // Set the focus for the module within the checkout section container\n if (childrenModules.length > 0) {\n for (const childModule of childrenModules) {\n const childId = this._getId(childModule);\n const childState = moduleState?.getModule(childId);\n\n if (childState?.hasError) {\n setCheckoutErrorFocus(childId, actionContext);\n return;\n }\n }\n } else {\n focusOnCheckoutError(this.formCardRef, actionContext);\n }\n }\n }\n\n public render(): JSX.Element | null {\n const {\n title,\n disabled,\n isExpanded,\n isActive,\n isVisted,\n children,\n isReady,\n isPending,\n isUpdating,\n hasInitialized,\n hasControlGroup,\n onEdit,\n resource\n } = this.props;\n const { changeBtnLabel } = resource;\n\n this.payLoad.contentAction.etext = TelemetryConstant.CheckoutChange;\n const changeBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n const canEdit = hasControlGroup && isReady && isVisted && onEdit;\n\n return (\n \n
\n {this.getTitle()}\n\n {canEdit && (\n \n {changeBtnLabel}\n \n )}\n
\n\n \n
{children}
\n\n {this.renderFooder()}\n
\n \n );\n }\n\n private readonly renderFooder = (): JSX.Element | null => {\n const { isVisted, isReady, isSubmitting, isCancelAllowed, hasControlGroup, onCancel, onSubmit, resource } = this.props;\n const { saveBtnLabel, cancelBtnLabel, saveAndContinueBtnLabel } = resource;\n\n const canSubmit = !isReady && onSubmit;\n const canCancel = !isReady && isVisted && isCancelAllowed && onCancel;\n\n if (!hasControlGroup || (!canSubmit && !canCancel)) {\n return null;\n }\n\n this.payLoad.contentAction.etext = isVisted ? TelemetryConstant.Save : TelemetryConstant.SaveContinue;\n const saveBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.Cancel;\n const cancelBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n {canSubmit && (\n \n {isVisted && isCancelAllowed ? saveBtnLabel : saveAndContinueBtnLabel}\n \n )}\n {canCancel && (\n \n {cancelBtnLabel}\n \n )}\n
\n );\n };\n\n private readonly focusOnFirstFocusableElement = (): void => {\n const node = this.formCardRef.current as HTMLElement;\n const focussableElements = `\n a:not([disabled]),\n button:not([disabled]),\n input[type=submit]:not([disabled]),\n input[type=checkbox]:not([disabled]),\n input[type=text]:not([disabled]),\n input[type=radio]:not([disabled]),\n input[type=password]:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n [tabindex]:not([disabled]):not([tabindex=\"-1\"])\n `;\n\n const child = node && node.querySelector && (node.querySelector(focussableElements) as HTMLElement);\n child && child.focus && child.focus();\n };\n\n private readonly focusOnEditButton = (): void => {\n // Focus on edit button\n const editButton =\n this.editButtonRef &&\n this.editButtonRef.current &&\n this.editButtonRef.current.focus &&\n (this.editButtonRef.current as HTMLElement);\n editButton && editButton.focus();\n };\n\n private readonly scrollToTitle = (): void => {\n // Scroll window to the title of the step that was just completed only in mobile viewport\n const formCard = this.props.isMobile && this.formCardRef && this.formCardRef.current && (this.formCardRef.current as HTMLElement);\n formCard && formCard.scrollIntoView();\n };\n\n private readonly getTitle = (): JSX.Element => {\n const { step, title } = this.props;\n const { headingTag: Tag = 'h2', text = '' } = title || {};\n return (\n \n \n {step + 1}. {` `}\n \n {text && {text}}\n \n );\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _getModules = (item: React.ReactNode): any[] => {\n return get(item, 'props.modules.primary') || [];\n };\n\n private readonly _getId = (item: React.ReactNode): string => {\n return get(item, 'id') || '';\n };\n}\n\nexport default CheckoutGuidedCard;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport get from 'lodash/get';\nimport { computed } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport GuidedCard from './guided-card';\n\nexport interface ICheckoutGuidedFormProps {\n items: React.ReactNode[];\n moduleState: IModuleStateManager;\n disableGuidedCheckoutFlow?: boolean;\n isMobile?: boolean;\n isEditor?: boolean;\n resource: {\n checkoutStepTitleFormat: string;\n saveBtnLabel: string;\n changeBtnLabel: string;\n cancelBtnLabel: string;\n saveAndContinueBtnLabel: string;\n };\n requestContext?: ICoreContext;\n telemetryContent?: ITelemetryContent;\n isPaymentVerificationRedirection?: boolean;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n hasError?: boolean;\n hasShippingAddress?: boolean | undefined;\n hasCartDeliveryMode?: boolean | undefined;\n hasGuestCheckoutEmail?: boolean | undefined;\n isTermsAndConditionAccepted?: boolean | undefined;\n shouldEnableCheckoutErrorDisplayMessaging?: boolean;\n shouldFocusOnCheckoutError?: boolean | undefined;\n}\n\ninterface ICheckoutGuidedFormState {\n currentStep: number;\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\n/**\n *\n * CheckoutGuidedForm component.\n * @extends {React.Component}\n */\n@observer\nclass CheckoutGuidedForm extends React.PureComponent {\n @computed public get hasMissingInfo(): boolean {\n if (\n this.props.hasShippingAddress === false ||\n this.props.hasCartDeliveryMode === false ||\n this.props.hasGuestCheckoutEmail === false ||\n this.props.isTermsAndConditionAccepted === false\n ) {\n return true;\n }\n\n return false;\n }\n\n @computed public get hasOrderError(): boolean {\n for (const item of this.props.items) {\n const childId = this.getId(item);\n const state = this.props.moduleState.getModule(childId);\n\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n state.childIds?.filter(currentId => currentId?.includes(paymentInstrumentModuleId))\n );\n\n if (!isPaymentSectionContainer && !state.isDisabled && state.hasError) {\n return true;\n }\n }\n\n return false;\n }\n\n public state: ICheckoutGuidedFormState = {\n currentStep: 0\n };\n\n public componentDidMount(): void {\n /**\n * Append child modules.\n */\n const childIds = this.props.items.map((item: React.ReactNode) => get(item, 'props.id'));\n this.props.moduleState.init({ childIds });\n }\n\n public render(): JSX.Element | null {\n const { moduleState, items, resource } = this.props;\n if (!items || !moduleState) {\n return null;\n }\n\n const shouldCollapseAfterRedirect =\n this.props.isPaymentVerificationRedirection &&\n this.props.shouldEnableSinglePaymentAuthorizationCheckout &&\n !this.props.hasError &&\n !this.hasMissingInfo &&\n !this.hasOrderError;\n\n let previousModuleHasError = false;\n const childModule = this._enableAfterModule();\n return (\n
\n {items.map((item: React.ReactNode) => {\n const childId = this.getId(item);\n const step = this.getStep(childId);\n const title = this.getHeading(item);\n const state = this.props.moduleState.getModule(childId);\n const {\n isReady,\n isPending,\n isUpdating,\n isDisabled,\n isCancelAllowed,\n onEdit,\n onCancel,\n onSubmit,\n hasModuleState,\n hasInitialized,\n hasError\n } = state || ({} as IModuleStateManager);\n\n let shouldFocus =\n !!this.props.shouldEnableCheckoutErrorDisplayMessaging &&\n !!this.props.shouldFocusOnCheckoutError &&\n !previousModuleHasError &&\n hasError;\n previousModuleHasError = previousModuleHasError || shouldFocus;\n\n return (\n \n {React.cloneElement(item as React.ReactElement, { enableControl: true })}\n \n );\n })}\n
\n );\n }\n\n private readonly getEnabledModules = (): string[] => {\n const {\n moduleState: { childIds, getModule }\n } = this.props;\n return childIds.filter((childId: string) => {\n const state = getModule(childId);\n return !!state && !state.isDisabled;\n });\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _enableAfterModule = (): string => {\n const childIds: string[] = this.props.items.map((item: React.ReactNode) => get(item, 'props.id')).filter(Boolean);\n let id: string = '';\n for (let i = 0; i < childIds.length - 1; i++) {\n const childId = childIds[i];\n const nextChildId = childIds[i + 1];\n if (this._isPaymentSectionContainer(childId) && nextChildId) {\n id = nextChildId;\n }\n }\n return id;\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n const sectionState = this.props.moduleState.getModule(moduleId);\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n sectionState.childIds?.filter(currentId => currentId?.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer) {\n return true;\n }\n return false;\n };\n\n private readonly getStep = (id: string): number => {\n return this.getEnabledModules().indexOf(id);\n };\n\n private readonly getId = (item: React.ReactNode): string => {\n return get(item, 'props.id') || '';\n };\n\n private readonly getHeading = (item: React.ReactNode): Heading => {\n return get(item, 'props.config.heading') || '';\n };\n\n private readonly isExpanded = (step: number, moduleChildId: string, childId: string): boolean => {\n if (this.props.isEditor) {\n // Editorial mode: Expand all the drawers\n return true;\n }\n if (this.props.shouldEnableSinglePaymentAuthorizationCheckout && moduleChildId === childId) {\n return true;\n }\n return step > -1 && step <= this.state.currentStep;\n };\n\n private readonly isActive = (step: number): boolean => {\n return step === this.state.currentStep;\n };\n\n private readonly isVisted = (step: number): boolean => {\n return step > -1 && step < this.state.currentStep;\n };\n\n private readonly onNext = (): void => {\n this.setState({\n currentStep: this.state.currentStep + 1\n });\n };\n}\n\nexport default CheckoutGuidedForm;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\ninterface ICheckoutPlaceOrderButtonProps {\n canPlaceOrder: boolean;\n checkoutBtnText: string;\n telemetryContent?: ITelemetryContent;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n isPlaceOrderLoading?: boolean;\n isExpressCheckoutApplied?: boolean;\n isPaymentVerificationRedirection?: boolean;\n placeOrder(): Promise;\n}\n\nconst buttonsStates: React.Dispatch>[] = [];\n\n/**\n * On place order function.\n * @param isBusy -Check is busy.\n * @param canPlaceOrder -Check can place order.\n * @param placeOrder -Place order function.\n * @returns Set state of button.\n */\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\n if (isBusy || !canPlaceOrder) {\n return;\n }\n buttonsStates.map(buttonSetState => {\n buttonSetState(true);\n return true;\n });\n await placeOrder();\n};\n\nconst CheckoutPlaceOrderButton: React.FC = ({\n checkoutBtnText,\n canPlaceOrder,\n placeOrder,\n telemetryContent,\n shouldEnableSinglePaymentAuthorizationCheckout,\n isPlaceOrderLoading,\n isExpressCheckoutApplied,\n isPaymentVerificationRedirection\n}) => {\n const [isBusy, setIsBusy] = useState(false);\n buttonsStates.push(setIsBusy);\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && (!isExpressCheckoutApplied || isPaymentVerificationRedirection)) {\n return (\n \n {checkoutBtnText}\n \n );\n }\n\n return (\n \n {checkoutBtnText}\n \n );\n};\n\nexport default CheckoutPlaceOrderButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { CartCheckout } from '../../../common/checkout';\n\nexport const OPERATIONS = {\n PayCard: 201,\n PayGiftCertificate: 214,\n PayLoyalty: 207,\n PayCustomerAccount: 202\n};\n\nexport default async (\n ctx: IActionContext,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n): Promise => {\n return CartCheckout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { PlaceOrder } from '../../../common/place-order';\n\nexport default async (\n ctx: IActionContext,\n checkoutState: ICheckoutState | undefined,\n orderedProducts: SimpleProduct[] | undefined,\n redirect: boolean,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n) => {\n return PlaceOrder(ctx, checkoutState, orderedProducts, redirect, updatedCartVersion, isPaymentVerificationRedirection);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../gift-card-balance-check.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n resources: {\n balanceCheckButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On apply function.\n * @param onApplyGiftCard -On apply gift card.\n * @returns Apply gift card.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number function.\n * @param onEnterGiftCardNumber -On enter gift card number.\n * @returns On gift card enter pin function result.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On change pin function.\n * @param onEnterGiftCardPin -On enter gift card pin.\n * @returns On enter gift card pin function result.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On change exp function.\n * @param onEnterGiftCardExp -On enter gift card.\n * @returns On enter gift card function result.\n */\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n resources: {\n balanceCheckButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-gift-card-balance-check__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-gift-card-balance-check__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-gift-card-balance-check__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-gift-card-balance-check__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-gift-card-balance-check__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {balanceCheckButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { GiftCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: GiftCard;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-gift-card-balance-check__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {` `}({giftCardAvailableBalanceLabel}\n {` `}\n {balance})\n \n );\n\n return {\n itemProps,\n id: giftCard && giftCard.Id,\n selectedGiftCard\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { getForm, IForm } from './components/get-form';\nimport { getItem, IItem } from './components/get-item';\nimport { IGiftCardBalanceCheckProps } from './gift-card-balance-check.props.autogenerated';\n\ninterface IGiftCardBalanceCheckState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n giftCard?: GiftCard;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface IGiftCardBalanceCheckModuleProps extends IGiftCardBalanceCheckProps<{}> {}\n\nexport interface IGiftCardBalanceCheckViewProps extends IGiftCardBalanceCheckProps<{}>, IGiftCardBalanceCheckState {\n className?: string;\n\n form: IForm;\n item?: IItem;\n\n giftCardBalanceCheckProps: IModuleProps;\n\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardPin: string): void;\n enterGiftCardExp?(giftCardExp: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * GiftCardBalanceCheck component.\n * @extends {React.Component}\n */\nexport class GiftCardBalanceCheck extends React.Component {\n public state: IGiftCardBalanceCheckState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n public shouldComponentUpdate(nextProps: IGiftCardBalanceCheckModuleProps, nextState: IGiftCardBalanceCheckState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this._isEnabled()) {\n this.props.context.telemetry.error('Gift card balance check is not supported, module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-gift-card-balance-check', className);\n\n const viewProps: IGiftCardBalanceCheckViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n giftCardBalanceCheckProps: { moduleProps: this.props, className: moduleClassName },\n\n enterGiftCardNumber: this._enterGiftCardNumber,\n enterGiftCardPin: this._enterGiftCardPin,\n enterGiftCardExp: this._enterGiftCardExp,\n applyGiftCard: this._applyGiftCard,\n\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n supportExternalGiftCard,\n additionalFields: showAdditionalFields,\n onEnterGiftCardNumber: this._enterGiftCardNumber,\n onEnterGiftCardPin: this._enterGiftCardPin,\n onEnterGiftCardExp: this._enterGiftCardExp,\n onApplyGiftCard: this._applyGiftCard\n }),\n item:\n this.state.giftCard &&\n getItem({\n giftCard: this.state.giftCard,\n getFormattedPrice: this._getFormattedPrice,\n resources\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return true;\n };\n\n private readonly _getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly _enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this._clearError();\n };\n\n private readonly _enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this._clearError();\n };\n\n private readonly _enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this._clearError();\n };\n\n private readonly _clearError = (): void => {\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly _setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.setState({\n errorMessage\n });\n };\n\n private readonly _applyGiftCard = async (): Promise => {\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this._getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this._getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (giftCard) {\n this._clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false,\n giftCard\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false,\n giftCard: undefined\n });\n };\n\n private readonly _findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly _getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { invalidCardTypeError, noBalanceError, invalidCardInfoError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n\n const internalGiftcardTenderTypes = this._findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this._findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (!this.props.context.request.user.isAuthenticated && internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n\n if (isPinRequired && giftCardPin === '') {\n this._setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this._setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this._setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this._setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly _getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, invalidCodeError }\n } = this.props;\n\n if (!giftCardNumber) {\n this._setError(emptyInputError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this._setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this._setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default GiftCardBalanceCheck;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IForm, IItem, IGiftCardBalanceCheckViewProps } from './index';\n\nexport const Form: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const Item: React.FC = ({ itemProps, selectedGiftCard }) => {selectedGiftCard};\n\nconst GiftCardBalanceCheckView: React.FC = props => {\n const { giftCardBalanceCheckProps, form, item } = props;\n return (\n \n {form &&
}\n {item && }\n \n );\n};\n\nexport default GiftCardBalanceCheckView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderProps } from '../header.props.autogenerated';\n\n/**\n * The header preferred store component.\n */\n@observer\nexport class HeaderPreferredStore extends React.PureComponent> {\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\n\n /**\n * Handle click on the store selector.\n * @returns : Promise void.\n */\n public handleClick = () => {\n return this._findPreferredStoreOnClick(this.props);\n };\n\n public render(): JSX.Element | undefined {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n slots,\n resources\n } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\n const storeName =\n storeSelectorStateManager?.preferredStore && storeSelectorStateManager.preferredStore.StoreName\n ? storeSelectorStateManager.preferredStore.StoreName\n : resources.headerPreferredStoreText;\n\n return (\n
\n \n {storeName}\n \n {slots.storeSelector}\n
\n );\n }\n\n return undefined;\n }\n\n private async _findPreferredStoreOnClick(props: IHeaderProps): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n modules\n } = props;\n if (!storeSelectorStateManager) {\n return;\n }\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n await storeSelectorStateManager\n .openDialog({\n id: storeSelectorId,\n showMapViewLink: true,\n parentElementRef: this.modalCloseButtonRef,\n onLocationSelected: orgUnitLocation => {\n return Promise.resolve();\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to set preferred store');\n }\n });\n }\n}\n\nexport default HeaderPreferredStore;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILogoProps {\n image: Msdyn365.IImageData;\n gridSettings?: Msdyn365.IGridSettings;\n link?: ILinkData;\n className?: string;\n telemetryContent?: ITelemetryContent;\n requestContext: Msdyn365.IRequestContext;\n typeName?: string;\n}\n\nexport interface ILinkData {\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n linkText?: string;\n}\n\n/**\n *\n * Logo component.\n * @extends {React.PureComponent}\n */\nexport class Logo extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: ILogoProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return
{this._renderLogo(this.props)}
;\n }\n\n private _renderLogo(config: ILogoProps): JSX.Element {\n if (config.link && config.link.linkUrl.destinationUrl) {\n return (\n \n {this._renderImage(config)}\n \n );\n }\n return this._renderImage(config);\n }\n\n private _renderImage(config: ILogoProps): JSX.Element {\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n}\n\nexport default Logo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderResources } from '../header.props.autogenerated';\n\nexport interface INavIconProps {\n resources: IHeaderResources;\n isExpanded: boolean;\n targetId: string;\n telemetryContent?: ITelemetryContent;\n toggleNavBar(): void;\n}\n\n/**\n *\n * NavIcon component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class NavIcon extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: INavIconProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n KeyCodes,\n Modal,\n ModalBody,\n ModalHeader,\n onTelemetryClick,\n Popover,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\nimport { IHeaderData } from './header.data';\nimport { IHeaderProps, IHeaderResources, IMyAccountLinksData } from './header.props.autogenerated';\n\nexport interface IHeaderState {\n mobileMenuCollapsed: boolean;\n signinPopoverOpen: boolean;\n hasSigninerror?: boolean;\n}\n\nexport interface IHeaderViewProps extends IHeaderProps, IHeaderState {\n logo: React.ReactNode;\n wishListIconDesktop: React.ReactNode;\n wishListIconMobile: React.ReactNode;\n cartIcon: React.ReactNode;\n navIcon: React.ReactNode;\n className: string;\n menuBar: React.ReactNode[];\n search: React.ReactNode[];\n siteOptions: React.ReactNode[];\n HeaderTag: IModuleProps;\n HeaderContainer: INodeProps;\n MobileMenuContainer: INodeProps;\n MobileMenuHeader: React.ReactNode;\n MobileMenuBodyContainer: INodeProps;\n MobileMenuLinksContainer: INodeProps;\n HeaderTopBarContainer: INodeProps;\n Divider: INodeProps;\n\n AccountInfoDropdownParentContainer?: INodeProps;\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\n accountInfoDropdownButton?: React.ReactNode;\n\n signOutLink?: React.ReactNode;\n signInLink?: React.ReactNode;\n switchCustomerLink?: React.ReactNode;\n isOBORequest?: boolean;\n accountLinks?: React.ReactNode[];\n preferredStore?: React.ReactNode;\n currentDistributor?: React.ReactNode;\n}\n\n/**\n *\n * Header component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Header extends React.PureComponent, IHeaderState> {\n private readonly popOverRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private cart: ICartState | undefined;\n\n private isB2BSite: boolean = false;\n\n /**\n * The signed-in user name displayed in the header bar\n */\n @computed public get displayName(): Readonly {\n return (\n (MsDyn365.isOboRequest(this.props.context.request) ? this.workerName : this.customerName) ||\n this.props.context.request?.user?.name\n );\n }\n\n /**\n * OBO scenario. The name of worker who shops on behalf of customer.\n */\n @computed public get workerName(): Readonly {\n const worker = this.props.data.employee?.result;\n return worker?.Name;\n }\n\n @computed public get customerName(): Readonly {\n const customer = this.props.data.accountInformation?.result;\n if (MsDyn365.isOboRequest(this.props.context.request)) {\n // For OBO scenario, display full customer name because multiple customers may have the same first name.\n return customer ? customer.Name : undefined;\n } else {\n return customer ? customer.FirstName || customer.Name : undefined;\n }\n }\n\n public constructor(props: IHeaderProps) {\n super(props);\n this.popOverRef = React.createRef();\n this._toggleNavbar = this._toggleNavbar.bind(this);\n this._togglePopover = this._togglePopover.bind(this);\n this._keydown = this._keydown.bind(this);\n this.state = {\n mobileMenuCollapsed: true,\n signinPopoverOpen: false,\n hasSigninerror: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isB2BSite = isChannelTypeB2B(this.props.context.request);\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('keydown', this._keydown);\n }\n reaction(\n () => {\n this.props.data.cart.result;\n },\n () => {\n this.cart = this.props.data.cart.result;\n }\n );\n\n const {\n context: {\n request: { user }\n },\n resources: {\n signUpCustomerNotFoundTitle,\n signUpMultipleCustomerFoundTitle,\n signInCustomerNotAuthorizedTitle,\n closeNotificationLabel\n }\n } = this.props;\n\n const signinNotificationError = this._getSigninNotification(\n user,\n signUpMultipleCustomerFoundTitle,\n signUpCustomerNotFoundTitle,\n signInCustomerNotAuthorizedTitle\n );\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\n // For signup show simple error notification.\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('keydown', this._keydown, false);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n data: { accountInformation, wishlists },\n context: {\n request: { user }\n },\n context,\n resources: { cartLabel, cartQtyLabel }\n } = this.props;\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\n const navbarKey = 'header-nav-mobile';\n const customer = accountInformation && accountInformation.result;\n const cartIconSlot = this._getSlot('cartIcon');\n const menuBarSlot = this._getSlot('menuBar');\n const searchSlot = this._getSlot('search');\n let wishlistCount = 0;\n const siteOptionsSlot = this._getSlot('siteOptions');\n const preferredStoreSlot = this._getSlot('storeSelector');\n const currentDistributorSlot = this._getSlot('distributorSelector');\n if (wishlists !== undefined) {\n if (\n !wishlists.result ||\n !ArrayExtensions.hasElements(wishlists.result) ||\n !wishlists.result[0].CommerceListLines ||\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\n ) {\n wishlistCount = 0;\n } else {\n wishlistCount = wishlists.result[0].CommerceListLines.length;\n }\n }\n const viewProps: IHeaderViewProps = {\n ...(this.props as IHeaderProps),\n ...this.state,\n logo: (\n \n ),\n wishListIconDesktop: (\n \n ),\n wishListIconMobile: (\n \n ),\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\n cartIconSlot[0]\n ) : (\n \n ),\n navIcon: (\n \n ),\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\n className: headerClassName,\n HeaderTag: {\n moduleProps: this.props,\n className: classnames(headerClassName),\n 'aria-label': this.props.resources.headerAriaLabel,\n tag: 'header'\n },\n HeaderContainer: {\n className: classnames('ms-header__container')\n },\n HeaderTopBarContainer: {\n className: classnames('ms-header__topbar')\n },\n Divider: {\n className: classnames('ms-header__divider')\n },\n MobileMenuContainer: {\n tag: Modal,\n id: navbarKey,\n className: 'ms-header__mobile-hamburger',\n isOpen: !this.state.mobileMenuCollapsed,\n wrapClassName: 'ms-header__modal',\n toggle: this._toggleNavbar\n },\n MobileMenuHeader: ,\n MobileMenuBodyContainer: {\n tag: ModalBody,\n className: 'ms-header__mobile-hamburger-menu-body'\n },\n MobileMenuLinksContainer: {\n className: 'ms-header__mobile-hamburger-menu-links'\n },\n AccountInfoDropdownParentContainer: {\n className: 'ms-header__account-info'\n },\n AccountInfoDropdownPopoverConentContainer: this.displayName\n ? {\n tag: Popover,\n id: 'myprofilePopover',\n className: 'ms-header__account-info-content',\n placement: 'bottom',\n isOpen: this.state.signinPopoverOpen,\n target: this.popOverRef,\n toggle: this._togglePopover\n }\n : undefined,\n signInLink: this._getSigninButton(user, this.props.resources),\n signOutLink: this._getSignOutButton(user, this.props.resources),\n isOBORequest: MsDyn365.isOboRequest(this.props.context.request),\n switchCustomerLink: this._getSwitchCustomerButton(user, this.props.resources),\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(user, this.props.resources),\n accountLinks: this._getAccountLinks(customer),\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && ,\n currentDistributor: this.isB2BSite && ArrayExtensions.hasElements(currentDistributorSlot) ? currentDistributorSlot : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - Link Index.\n * @returns : Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.myAccountLinks?.[linkIndex]) {\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Get the slot.\n * @param slotName - Name of the slot.\n * @returns The slot.\n */\n private _getSlot(slotName: string): React.ReactNode[] | null {\n const { slots } = this.props;\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\n }\n\n /**\n * Renders the sign in button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSigninButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n !this.displayName && (\n \n \n {resources.signInLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSignOutButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n \n {resources.signOutLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSwitchCustomerButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SwitchCustomer);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const isOBOAccountSelected =\n MsDyn365.isOboRequest(this.props.context.request) && this.props.context.request.cookies.getAccountSelectionCookie();\n return (\n this.displayName &&\n isOBOAccountSelected && (\n this.props.context.request.cookies.removeAccountSelectionCookie()}\n {...attributes}\n >\n
\n
{format(resources.shoppingAsText, this.customerName)}
\n
{resources.switchCustomerLinkText}
\n
\n \n )\n );\n }\n\n private getBusinessPartnerSelectionUrl(): string | undefined {\n const route = MsDyn365.getUrlSync('businessPartnerSelection', this.props.context.actionContext);\n if (!route || !MsDyn365.msdyn365Commerce.isBrowser) {\n return undefined;\n }\n\n // MsDyn365.getUrlSync persists some params in the route and remove other params.\n // Among the persisted params, we need to remove catalogid.\n const persistedParamToRemove = ['catalogid'];\n const url = new URL(route, window.location.href);\n persistedParamToRemove.forEach(param => url.searchParams.delete(param));\n return url.href;\n }\n\n private _getSigninNotification(\n user: MsDyn365.IRequestContextUser | undefined,\n signUpMultipleCustomerFoundTitle: string,\n signUpCustomerNotFoundTitle: string,\n signInCustomerNotAuthorizedTitle: string\n ): string | undefined {\n if (!user?.retailServerErrorCode) {\n return undefined;\n }\n\n const { signUpCustomerNotFound, signUpMultipleCustomerFound, signInCustomerNotAuthorized } = this.props.config;\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\n const accountAuthorizationError = 'Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed';\n\n if (user?.retailServerErrorCode === notFoundError) {\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\n } else if (user?.retailServerErrorCode === multipleAccountError) {\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\n } else if (user?.retailServerErrorCode === accountAuthorizationError) {\n return signInCustomerNotAuthorized !== undefined ? signInCustomerNotAuthorized : signInCustomerNotAuthorizedTitle;\n }\n return user?.retailServerErrorMessage;\n }\n\n private _getAccountInfoDropdownButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n
\n
{this.displayName}
\n {MsDyn365.isOboRequest(this.props.context.request) && this.customerName && (\n
{format(resources.shoppingAsText, this.customerName)}
\n )}\n
\n \n )\n );\n }\n\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\n const { myAccountLinks } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n if (!this.displayName || !myAccountLinks || !ArrayExtensions.hasElements(myAccountLinks)) {\n return undefined;\n }\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\n payLoad.contentAction.etext = cta.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: cta.ariaLabel,\n className: 'ms-signin-info__account-link-button',\n linkText: cta.linkText,\n linkUrl: cta.linkUrl.destinationUrl,\n openInNewTab: cta.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n\n return (\n \n );\n });\n }\n\n private _toggleNavbar(): void {\n this.setState({\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\n });\n }\n\n private _togglePopover(): void {\n this.setState({\n signinPopoverOpen: !this.state.signinPopoverOpen\n });\n }\n\n private _keydown(event: KeyboardEvent): void {\n if (event.keyCode === KeyCodes.Escape) {\n this.setState({ mobileMenuCollapsed: true });\n }\n }\n}\n\nexport default Header;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeaderViewProps } from './header';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {props.currentDistributor}\n {_renderDesktopAccountBlock(props)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n \n \n {props.MobileMenuHeader}\n {_renderReactFragment(props.menuBar)}\n \n {props.accountLinks ? props.accountLinks.map(link => link) : false}\n {props.siteOptions}\n {props.wishListIconMobile}\n {props.signInLink}\n {props.signOutLink}\n \n \n \n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map(link => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return {signInLink};\n }\n }\n props.context.telemetry.error('Header content is empty, module wont render.');\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Cart, CartLine } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IInvoiceSummaryProps {\n orderTotalLabel: string;\n invoiceLabel: string;\n loyaltyLabel?: string;\n giftcardLabel?: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n cart: Cart;\n id: string;\n typeName: string;\n freeText?: string;\n toBeCalculatedText?: string;\n checkoutState?: ICheckoutState;\n}\n\nexport interface IInvoiceSummaryLines {\n orderTotal: React.ReactNode;\n invoices: React.ReactNode;\n giftCard?: React.ReactNode;\n loyalty?: React.ReactNode;\n}\n\ninterface IInvoiceSummaryLineProps {\n label: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n price?: number;\n freeText?: string;\n toBeCalculatedText?: string;\n id: string;\n typeName: string;\n cssLabel: string;\n}\n\nconst InvoiceSummaryLine: React.FC = ({\n price,\n label,\n context,\n id,\n typeName,\n toBeCalculatedText,\n freeText,\n cssLabel\n}) => {\n return (\n

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

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

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

\n );\n};\n\nconst _buildOrderSummarySection = (\n props: IOrderSummaryProps,\n price: number | undefined,\n cssLabel: string,\n label: string = ''\n): React.ReactNode => {\n return (\n \n );\n};\n\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\n};\n\nconst _computedCustomerAccountAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.customerAccountAmount) || 0;\n};\n\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n };\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\n return Math.min(giftCardTotalValue, amount);\n};\n\nconst getDeliveryConfiguration = (\n cart: Cart,\n channelConfiguration: ChannelConfiguration,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n retailMultiplePickUpOptionEnabled?: boolean,\n isTaxIncludedInPrice?: boolean,\n isShowTaxBreakup?: boolean\n): IShippingOrderLine => {\n const pickupDeliveryModeCode = channelConfiguration && channelConfiguration.PickupDeliveryModeCode;\n const emailDeliveryModeCode = channelConfiguration && channelConfiguration.EmailDeliveryModeCode;\n const cartLines = cart.CartLines || [];\n const deliveryModes = cartLines.map(cartLine => cartLine.DeliveryMode);\n const taxOnShippingCharge = cart.TaxOnShippingCharge !== undefined ? cart.TaxOnShippingCharge : 0;\n const shippingChargeAmount = cart.ShippingChargeAmount !== undefined ? cart.ShippingChargeAmount : 0;\n\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True shippingChargeAmount\n // True True shippingChargeAmount\n // True false shippingChargeAmount + taxOnShippingCharge\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n let freightFee: number | undefined = 0;\n if (isTaxIncludedInPrice === undefined || isShowTaxBreakup === undefined) {\n freightFee = cart.ShippingChargeAmount;\n } else {\n freightFee = isTaxIncludedInPrice && !isShowTaxBreakup ? shippingChargeAmount + taxOnShippingCharge : cart.ShippingChargeAmount;\n }\n const canShip = deliveryModes.some(\n deliveryMode =>\n !(\n deliveryMode !== '' &&\n (deliveryMode ===\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) ||\n deliveryMode === emailDeliveryModeCode)\n )\n );\n const hasDeliveryMethod = deliveryModes.some(deliveryMode => !!deliveryMode && deliveryMode !== emailDeliveryModeCode);\n const hasShippingMethod = deliveryModes.some(\n deliveryMode =>\n !!deliveryMode &&\n deliveryMode !==\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) &&\n deliveryMode !== emailDeliveryModeCode\n );\n return {\n canShip,\n hasDeliveryMethod,\n hasShippingMethod,\n freightFee\n } as IShippingOrderLine;\n};\n\nconst getDeliveryMode = (\n deliveryMode?: string,\n featureSate: boolean = false,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n pickupDeliveryMode?: string\n) => {\n if (!featureSate) {\n return pickupDeliveryMode;\n }\n return channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(dM => dM === deliveryMode);\n};\n\n// eslint-disable-next-line complexity\nexport const OrderSummary = (props: IOrderSummaryProps) => {\n const {\n SubtotalAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n SubtotalAmountWithoutTax,\n TaxAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n TaxOnNonShippingCharges,\n DiscountAmount = 0,\n TotalAmount,\n OtherChargeAmount\n } = props.cart;\n\n const { canShip, hasDeliveryMethod, hasShippingMethod, freightFee } = getDeliveryConfiguration(\n props.cart,\n props.channelConfiguration,\n props.channelDeliveryOptionConfig,\n props.retailMultiplePickUpOptionEnabled,\n props.isTaxIncludedInPrice,\n props.isShowTaxBreakup\n );\n\n let reactNodes: IOrderSummaryLines;\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n if (props.isTaxIncludedInPrice === undefined || props.isShowTaxBreakup === undefined) {\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, SubtotalAmount, 'sub-total', props.subTotalLabel),\n tax: _buildOrderSummarySection(props, hasDeliveryMethod ? TaxAmount : undefined, 'tax-amount', props.taxLabel),\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, OtherChargeAmount, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n } else {\n const otherChargeAmount = OtherChargeAmount !== undefined ? OtherChargeAmount : 0;\n const taxOnNonShippingCharges = TaxOnNonShippingCharges !== undefined ? TaxOnNonShippingCharges : 0;\n const isTaxGreaterThanZero = TaxAmount !== undefined && TaxAmount > 0;\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True otherChargeAmount\n // True True otherChargeAmount\n // True false otherChargeAmount+TaxOnNonShippingCharges\n\n const otherChargeAmountTotal =\n props.isTaxIncludedInPrice && !props.isShowTaxBreakup ? otherChargeAmount + taxOnNonShippingCharges : otherChargeAmount;\n\n const subtotalAmountActual = props.isTaxIncludedInPrice && props.isShowTaxBreakup ? SubtotalAmountWithoutTax : SubtotalAmount;\n\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, subtotalAmountActual, 'sub-total', props.subTotalLabel),\n tax: props.isShowTaxBreakup\n ? _buildOrderSummarySection(\n props,\n hasDeliveryMethod || isTaxGreaterThanZero ? TaxAmount : undefined,\n 'tax-amount',\n props.taxLabel\n )\n : '',\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, otherChargeAmountTotal, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n }\n if (canShip) {\n reactNodes.shipping = _buildOrderSummarySection(props, hasShippingMethod ? freightFee : undefined, 'shipping', props.shippingLabel);\n }\n if (props.checkoutState) {\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\n const customerAccountAmount = _computedCustomerAccountAmount(props.checkoutState);\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount - customerAccountAmount;\n\n if (loyaltyAmount > 0) {\n reactNodes.loyalty = _buildOrderSummarySection(props, -loyaltyAmount, 'loyalty', props.loyaltyLabel || 'Loyalty amount');\n }\n\n if (giftCardAmount > 0) {\n reactNodes.giftCard = _buildOrderSummarySection(props, -giftCardAmount, 'gift-card', props.giftcardLabel || 'Gift card amount');\n }\n\n if (customerAccountAmount > 0) {\n reactNodes.customerAccount = _buildOrderSummarySection(\n props,\n -customerAccountAmount,\n 'customer-credit-amount',\n props.customerAccountLabel || 'Customer Credit amount'\n );\n }\n\n reactNodes.orderTotal = _buildOrderSummarySection(\n { ...props, freeText: undefined },\n totalAmountAfterGiftCard,\n 'total',\n props.orderTotalLabel\n );\n }\n\n if (DiscountAmount > 0) {\n reactNodes.totalDiscounts = _buildOrderSummarySection(props, -DiscountAmount, 'total-discounts', props.totalDiscountsLabel);\n }\n\n return reactNodes;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
\n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
\n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
\n );\n })}\n
\n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
\n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
\n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
\n \n
\n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
{this.props.resources.productComparisonLoadingText}
;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n