{"version":3,"file":"static/js/15.ee117c86607dd0568fc6.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-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","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-section-container/checkout-section-container.tsx?c853","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-section-container/components/loading.tsx?2e57","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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { ICheckoutGiftCardData } from './checkout-gift-card.data';\nimport { ICheckoutGiftCardProps } from './checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICheckoutGiftCardProps, IModuleStateProps {}\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n checkoutErrorRef?: React.RefObject;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGiftCard && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGiftCard) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps, nextState: ICheckoutGiftCardState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.GiftCard === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout gift card module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n checkoutErrorRef: this.checkoutErrorRef,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady\n ? {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined,\n addGiftCard: !isReady\n ? {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart?.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section gift card onEdit is called.');\n\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Payment section gift card onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.props.telemetry.information('Payment section gift card onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n this.props.telemetry.information('Payment section gift card remove is called.');\n\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n this.props.telemetry.information('Payment section gift card apply is called.');\n\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({\n giftCard,\n additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId }\n });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n this.props.telemetry.information('Payment section fetching gift card is failed.');\n };\n\n private readonly findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './checkout-gift-card';\n\nexport const From: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, checkoutErrorRef, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: {\n applyGiftCardButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {` `}\n {balance}\n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard =>\n getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ;\n\nexport default GiftCardTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { callActionOrExecute } from '@msdyn365-commerce/retail-proxy';\nimport { createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { LoyaltyPointRedemptionEstimate, LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { GetLoyaltyTransactionEstimationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Drawer, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyData } from './checkout-loyalty.data';\nimport { ICheckoutLoyaltyProps } from './checkout-loyalty.props.autogenerated';\nimport InputComponent from './components/checkout-loyalty-input';\nimport LabelComponent from './components/checkout-loyalty-label';\nimport TextComponent from './components/checkout-loyalty-text';\nimport { ErrorComponent } from '../../common/error';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutLoyaltyState {\n dollarsApplied: number;\n isFetchingLoyaltyCard: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutLoyaltyModuleProps extends ICheckoutLoyaltyProps, IModuleStateProps {}\n\nexport interface ICheckoutLoyaltyViewState {\n isShowLoyalty: boolean;\n isShowAddLoyalty: boolean;\n}\n\nexport interface ICheckoutLoyaltyShow {\n heading: React.ReactNode;\n coveredAmountText: React.ReactNode;\n amount: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyRewardPoint {\n checkoutLoyaltyRewardPoint: INodeProps;\n key: string;\n title: React.ReactNode;\n availablePointsText: React.ReactNode;\n activePoints: React.ReactNode;\n expiringPointsText: React.ReactNode;\n expiringPoints: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyAdd {\n heading: React.ReactNode;\n cardNumber: React.ReactNode;\n drawer: INodeProps;\n rewardPoints: ICheckoutLoyaltyRewardPoint[];\n loyaltyAmountContainer: INodeProps;\n appliedLoyaltyAmountContainer: INodeProps;\n loyaltyAmountLabel: React.ReactNode;\n loyaltyAmountInput: React.ReactNode;\n loyaltyAmountApplyButton: React.ReactNode;\n showAppliedAmount: boolean;\n loyaltyAmountAppliedText: React.ReactNode;\n loyaltyAmountAppliedPrice: React.ReactNode;\n loyaltyAmountRemoveButton: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyViewProps extends ICheckoutLoyaltyModuleProps {\n checkoutLoyalty: IModuleProps;\n viewState: ICheckoutLoyaltyViewState;\n showLoyalty: ICheckoutLoyaltyShow;\n addLoyalty: ICheckoutLoyaltyAdd;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutLoyalty component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n\n@withModuleState\n@observer\nclass CheckoutLoyalty extends React.Component {\n private readonly _dialogToggleRef: React.RefObject | undefined;\n\n private readonly moduleClassName: string = 'ms-checkout-loyalty';\n\n private readonly _defaultLoyaltyPoints: number = 0;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n constructor(props: ICheckoutLoyaltyModuleProps) {\n super(props);\n this._dialogToggleRef = React.createRef();\n this._applyLoyaltyPoints = this._applyLoyaltyPoints.bind(this);\n this._removeLoyaltyPoints = this._removeLoyaltyPoints.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this.state = { dollarsApplied: this.maxDollars, isFetchingLoyaltyCard: false };\n }\n\n @computed get shouldPayLoyalty(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use loyalty when cart is not full of free items\n const amountDue = cart.TotalAmount || 0;\n return amountDue > 0;\n }\n\n @computed get isDataReady(): boolean {\n return (\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\n (this.props.data.loyaltyCard && this.props.data.loyaltyCard.status) !== 'LOADING' &&\n (this.props.data.loyaltyTransactionEstimation && this.props.data.loyaltyTransactionEstimation.status) !== 'LOADING'\n );\n }\n\n @computed get maxDollars(): number {\n return this.props.data.loyaltyTransactionEstimation.result &&\n this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n ? this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n : 0;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart,\n async () => {\n this._updateEstimate();\n }\n );\n\n reaction(\n () => this.props.data.loyaltyCard.result,\n async () => {\n this._updateLoyalty();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutLoyalty && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutLoyalty) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutLoyaltyModuleProps, nextState: ICheckoutLoyaltyState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config,\n resources,\n renderView,\n moduleState: { hasError, isReady }\n } = this.props;\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.Loyalty === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout loyalty module wont render');\n return null;\n }\n\n if (\n this.props.data.loyaltyCard &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n ) {\n const loyaltyCard = this.props.data.loyaltyCard.result;\n const checkoutState = this.props.data.checkout.result;\n let isShowLoyalty = false;\n const errorMessage = this.state.errorMessage;\n\n if (isReady) {\n if (!checkoutState || checkoutState.loyaltyAmount === 0) {\n return null;\n }\n isShowLoyalty = true;\n }\n const channelConfig = this.props.context.request.channel;\n const viewProps = {\n ...this.props,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isShowLoyalty,\n isShowAddLoyalty: !isReady && !config.disableAddLoyaltyComponent\n },\n alert: hasError && errorMessage && ,\n checkoutLoyalty: {\n moduleProps: this.props,\n className: classnames(\n this.moduleClassName,\n { [`${this.moduleClassName}__applied`]: isShowLoyalty },\n this.props.config.className\n )\n },\n showLoyalty: {\n heading: ,\n coveredAmountText: (\n \n ),\n amount: (\n \n )\n },\n addLoyalty: {\n heading: ,\n drawer: {\n tag: Drawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: this._drawerHeader(),\n openGlyph: `${this.moduleClassName}__drawer-open`,\n closeGlyph: `${this.moduleClassName}__drawer-close`,\n glyphPlacement: 'end'\n },\n cardNumber: ,\n rewardPoints:\n loyaltyCard.RewardPoints &&\n loyaltyCard.RewardPoints.map((points, index) => {\n return this._renderPointSection(points, resources.availablePointsLabel, resources.expiringLoyaltyPointsLabel);\n }),\n loyaltyAmountContainer: {\n className: `${this.moduleClassName}__amount`\n },\n appliedLoyaltyAmountContainer: {\n className: `${this.moduleClassName}__applied-amount`\n },\n loyaltyAmountLabel: (\n \n ),\n loyaltyAmountInput: (\n \n ),\n loyaltyAmountApplyButton: (\n this.maxDollars ||\n this.state.dollarsApplied <= 0 ||\n isNaN(this.state.dollarsApplied) ||\n this.state.isFetchingLoyaltyCard\n }\n >\n {this.props.resources.applyCheckoutLoyaltyPaymentText}\n \n ),\n showAppliedAmount: checkoutState && checkoutState.loyaltyAmount > 0,\n loyaltyAmountAppliedText: (\n \n ),\n loyaltyAmountAppliedPrice: (\n \n ),\n loyaltyAmountRemoveButton: (\n \n {this.props.resources.removeCheckoutLoyaltyPaymentText}\n \n )\n }\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n this.props.context.telemetry.error('Checkout loyalty content is empty, module wont render');\n return null;\n }\n\n private _drawerHeader(): JSX.Element {\n const channelConfig = this.props.context.request.channel;\n return (\n <>\n

{this.props.resources.loyaltyCoveredAmountText}

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

\n {message}\n

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

{invoiceSummaryTitle}

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

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

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

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

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