{"version":3,"file":"static/js/15.380bd65fa32c394ebdb7.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/address-format.data.ts?3c40","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/filtered-delivery-options.props.autogenerated.ts?9ca7","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.description.tsx?b6af","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-message.tsx?a76a","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.error-title.tsx?829f","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/components/filtered-delivery-options.radio-button.tsx?9751","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/filtered-delivery-options.tsx?9a97","webpack://Msdyn365.Commerce.Online/./src/modules/filtered-delivery-options/filtered-delivery-options.view.tsx?6bae","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utilities/popup/Popup.tsx?8e42","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/components/previous__product.component.tsx?9d5a","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Msdyn365.Commerce.Online/./src/common/address-autosuggest.ts?f5a2","webpack://Msdyn365.Commerce.Online/./src/common/address-common.ts?cf4b","webpack://Msdyn365.Commerce.Online/./src/common/address-format.data.ts?6cbf","webpack://Msdyn365.Commerce.Online/./src/common/address-format.ts?4f04","webpack://Msdyn365.Commerce.Online/./src/common/address-meta-data.ts?c6e6","webpack://Msdyn365.Commerce.Online/./src/common/address-module.data.ts?697a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-checkbox.tsx?eb1a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-add.tsx?e6a6","webpack://Msdyn365.Commerce.Online/./src/common/components/address-alert.tsx?10d1","webpack://Msdyn365.Commerce.Online/./src/common/components/address-button.tsx?7f7b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-detail-item.tsx?5209","webpack://Msdyn365.Commerce.Online/./src/common/components/address-dropdown.tsx?f24b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-alert.tsx?bcde","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-message.tsx?89ad","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-title.tsx?3926","webpack://Msdyn365.Commerce.Online/./src/common/components/address-input.tsx?8073","webpack://Msdyn365.Commerce.Online/./src/common/components/address-label.tsx?6864","webpack://Msdyn365.Commerce.Online/./src/common/components/address-list.tsx?a628","webpack://Msdyn365.Commerce.Online/./src/common/components/address-select.tsx?c1df","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple-heading.tsx?5d65","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple-lines.tsx?ce68","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple.tsx?136d","webpack://Msdyn365.Commerce.Online/./src/common/components/address-show.tsx?3f60","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-checkbox.tsx?4008","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-heading.tsx?7bbd","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://Msdyn365.Commerce.Online/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/address-detail-item.tsx?d9a2","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-date.tsx?bd12","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-grp.tsx?3a15","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-radio.tsx?045f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/get-line-items.tsx?e389","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/checkout.tsx?6737","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/checkout.view.tsx?e4cc","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/alert.tsx?cb1e","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-invoice-payment-summary.tsx?9549","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-line-items.tsx?92f8","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-order-summary.tsx?4a81","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/guided-card.tsx?58e0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/guided-form.tsx?f018","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/place-order-button.tsx?9b41","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/checkout.ts?7b6b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/place-order.ts?5aa0","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/components/get-form.tsx?e249","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/components/get-item.tsx?4862","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/gift-card-balance-check.tsx?d1f8","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?a0c9","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/logo.tsx?f27e","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/nav-icon.tsx?2475","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.tsx?e91a","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.view.tsx?cf0f","webpack://Msdyn365.Commerce.Online/./src/invoice-summary-lineitem.tsx?5f61","webpack://Msdyn365.Commerce.Online/./src/order-summary-lineitem.tsx?8a98","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-dimensions.tsx?15c5","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-item.tsx?d2da","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-status-message.tsx?cdb3","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.tsx?df8b","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.view.tsx?4d80","webpack://Msdyn365.Commerce.Online/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/header.view.tsx?9bd3"],"sourcesContent":["/*--------------------------------------------------------------\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","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IFilteredDeliveryOptions contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum filterDeliveryModeOption {\r\n none = 'none',\r\n filterOutNonCarrierDeliveryMode = 'filterOutNonCarrierDeliveryMode'\r\n}\r\n\r\nexport const enum useDefaultDeliveryOption {\r\n none = 'none',\r\n displaySelectedDeliveryOption = 'displaySelectedDeliveryOption',\r\n notDisplaySelectedDeliveryOption = 'notDisplaySelectedDeliveryOption'\r\n}\r\n\r\nexport interface IFilteredDeliveryOptionsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n filterDeliveryModeOption?: filterDeliveryModeOption;\r\n useDefaultDeliveryOption?: useDefaultDeliveryOption;\r\n className?: string;\r\n clientRender?: boolean;\r\n enableAddressFilter?: boolean;\r\n nameExcludedStrings?: string;\r\n cityExcludedStrings?: string;\r\n streetExcludedStrings?: string;\r\n excludedAddressErrorMessage?: string;\r\n paragraph?: Msdyn365.RichText;\r\n}\r\n\r\nexport interface IFilteredDeliveryOptionsResources {\r\n deliveryOptionsNotFound: string;\r\n genericErrorMessage: string;\r\n errorMessageTitle: string;\r\n priceFree: string;\r\n saveBtnLabel: string;\r\n editBtnLabel: string;\r\n cancelBtnLabel: string;\r\n deliveryOptionAriaLabel: string;\r\n unableDeliveryHome: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IFilteredDeliveryOptionsProps extends Msdyn365.IModule {\r\n resources: IFilteredDeliveryOptionsResources;\r\n config: IFilteredDeliveryOptionsConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\r\n description?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.description\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\r\n if (!description) {\r\n return null;\r\n }\r\n\r\n return {description};\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsDescription;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return

{message}

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

{title}

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

⚠️{props.resources.unableDeliveryHome}

\r\n
\r\n );\r\n };\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {showShipToDepot && }\r\n {extraText}\r\n {viewState.isLoading && waiting}\r\n {viewState.isError && alert}\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n","import { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IPopupProps } from './Popup.props';\r\n\r\nexport const Popup = (popupProps: IPopupProps) => {\r\n const {\r\n dialogStrings,\r\n className,\r\n imageSettings,\r\n gridSettings,\r\n data: { product },\r\n productQuantity,\r\n modalOpen,\r\n setModalOpen,\r\n context\r\n } = popupProps;\r\n\r\n if (!dialogStrings || !product) {\r\n return null;\r\n }\r\n const closeModal = () => {\r\n setModalOpen(false);\r\n };\r\n const fallbackImageUrl = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\r\n const quantity = productQuantity !== undefined ? productQuantity : 1;\r\n const itemsString =\r\n quantity === 1 ? dialogStrings.headerItemOneText : dialogStrings.headerItemFormatText.replace('{0}', quantity.toString());\r\n\r\n // console.log(product.AttributeValues?.slice());\r\n const tags = ['20Glutenfree', '18Vegan', '22Noaddedsugar'];\r\n const tagFriendlyNames = ['Gluten free', 'Vegan friendly', 'Light'];\r\n const specificationsList = ['25Productdescription(webs', '17Nutritionalvalues', '15Ingredients'];\r\n const specificationsListFiendly = ['Description', 'Nutritional values', 'Ingredients'];\r\n return (\r\n \r\n \r\n {itemsString}\r\n {dialogStrings.headerMessageText}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n

{product.Name}

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

{specificationFriendlyName}

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

{product.Name}

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

{product.Description}

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

{product.Name}

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

{product.Description}

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

{title}

\n

{message}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressErrorMessage {\n message: string;\n}\n\n/**\n * Address error message.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\n const { message } = props;\n\n return

{message}

;\n};\n\nexport default AddressErrorMessageFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressErrorTitle {\n title: string;\n}\n\n/**\n * Address error title.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorTitleFunctionComponent: React.FC = (props: IAdressErrorTitle) => {\n const { title } = props;\n\n return

{title}

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

{resources.addressEmptyListAddressMessage}

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

{text}

\n);\n\nexport default IAddressBillingHeading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n}\n\nexport default CheckoutBillingAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n shippingAddressId?: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n isMultipleAddressShippingEnabled?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources,\n isMultipleAddressShippingEnabled = false\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n\n const renderShipMultiAddressView = isMultipleAddressShippingEnabled;\n const quantity = 1;\n return renderShipMultiAddressView ? (\n
{resources.headingAfterMultiSelectAddressSelect}
\n ) : (\n
\n
\n
{title}
\n
{itemTitle}
\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
\n )\n : isShowQty && (\n
\n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
\n );\n })}\n \n \n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\nimport { AddressShipMultiple, IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowShipMultipleAddress?: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n shippingGroupsBuffer: ICartLineWithProduct[];\n selectedShippingLines: IShipMultipleAddressesLineViewModel[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showShipMultipleAddresses?: IShipMultipleAddressesViewProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n orderLines?: IShipMultipleAddressesLineViewProps[];\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\nexport interface IShipMultipleAddressesLineViewModel {\n isChecked: boolean;\n cartLine: CartLine;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n this.state = { shippingGroups: [], shippingGroupsBuffer: [], selectedShippingLines: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartLines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0,\n shippingAddressId: line.cartLine.ShippingAddress?.RecordId ?? 0\n }));\n\n const numberOfCartLines = this._countItems(cartLines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartLines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: itemTitle,\n title: headingImages,\n resources: this.props.resources,\n isMultipleAddressShippingEnabled: config.multipleAddressShippingEnabled\n };\n\n const cartLineImages: React.ReactNode = ;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState } = this.props.data;\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update,\n isShowShipMultipleAddress: this.currentOperation === AddressOperation.Multiple\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n /**\n * Show address select.\n * @param onShipMultipleAddressesHandler - On ship to multiple addresses click function.\n * @param onAddAddressHandler - On add address click function.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddressSelectHandler: (\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ) => this._renderSelectAddress(onShipMultipleAddressesHandler, onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show ship multiple addresses.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders ship multiple addresses.\n */\n showShipMultipleAddressesHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderShipMultipleAddresses(onSaveHandler, onCancelHandler),\n showShipMultipleAddresses: this._renderShipMultipleAddresses(),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders add/update address.\n */\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\n showAddressSelect: this._renderSelectAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect = (line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void => {\n line.isChecked = isChecked;\n\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n // @ts-ignore\n if (shippingLine.cartLine?.cartLine?.LineId === line.cartLine.LineId) {\n shippingLine.isChecked = isChecked;\n }\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are invalid.`);\n }\n };\n\n public onSelectAll(isChecked: boolean): void {\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n shippingLine.isChecked = isChecked;\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\n }\n\n public onShippingAddressChange = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n const updated = this.state.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n this.setState({\n shippingGroups: updated\n });\n }\n };\n\n public updateIndividualAddresses = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n this.setState(prevState => {\n const updated = prevState.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n return {\n shippingGroups: updated\n };\n });\n }\n };\n\n public onBulkShippingAddressChange = (event: React.ChangeEvent): void => {\n if (this.state.selectedShippingLines && this.state.shippingGroups) {\n this.state.selectedShippingLines.forEach((shippingLine, index) => {\n if (shippingLine.isChecked) {\n const cartline = this.state.shippingGroups.find(\n // @ts-ignore\n line => line.cartLine.LineId === shippingLine.cartLine?.cartLine?.LineId\n );\n\n if (cartline) {\n this.updateIndividualAddresses(cartline.cartLine, event);\n }\n }\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\n };\n\n /**\n * Initialize pickup group.\n */\n @action\n private readonly _initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\n const cartLines: ICartLineWithProduct[] = [];\n\n try {\n const products = await this._getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n for (const line of pickupCartLines) {\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n cartLines.push({ cartLine: line, product });\n }\n this.setState({ shippingGroups: cartLines });\n this.setState({ shippingGroupsBuffer: cartLines });\n\n const initialShippingLineSelection = cartLines.map(cartLine => ({\n isChecked: false,\n cartLine: cartLine as CartLine\n }));\n this.setState({ selectedShippingLines: initialShippingLineSelection });\n } catch (error) {\n // @ts-ignore\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n this.setState({ shippingGroupsBuffer: [] });\n this.setState({ selectedShippingLines: [] });\n }\n };\n\n /**\n * On suggestion selected.\n * @param result - Suggestion result interface.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n const timeout = 0;\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, timeout);\n };\n\n /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n for (const formatAddress of addressFormatItem) {\n if (\n this.addUpdateAddress[formatAddress.name] !== undefined &&\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\n ) {\n this.addressFormat[formatAddress.name] = '';\n }\n }\n this._clearValidation();\n };\n\n /**\n * Method to clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n\n reaction(\n () => data.featureState.result,\n () => {\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n }\n );\n };\n\n /**\n * Method to get cart lines for delivery.\n * @returns The cart line collection.\n */\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\n };\n\n /**\n * Method to check cart line for delivery.\n * @param line -The cart line.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isDelivery = (line: CartLine): boolean => {\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\n };\n\n /**\n * Method to check cart line for delivery.\n * @param deliveryMode -The delivery mode.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\n pickupMode => pickupMode !== deliveryMode\n );\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\n };\n\n /**\n * Method to check cart line for delivery.\n * @param channelId - The channelId.\n * @param cartLines - Cart line collections.\n * @returns Collection of SimpleProduct.\n */\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext,\n line.CatalogId || 0\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n /**\n * Method to render ship multiple addresses.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n */\n private readonly _renderShipMultipleAddresses = (onSaveHandler?: () => void, onCancelHandler?: () => void) => {\n const { config, context } = this.props;\n const { imageSettings } = config;\n\n // Line images\n const cartlineImages: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n\n return AddressShipMultiple({\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler,\n\n onSelect: this.onSelect.bind(this),\n\n onSelectAll: this.onSelectAll.bind(this),\n\n onClear: () => {\n this.onSelectAll(false);\n },\n\n onShippingAddressChange: this.onShippingAddressChange.bind(this),\n\n onBulkShippingAddressChange: this.onBulkShippingAddressChange.bind(this),\n\n /**\n * On Ship to Single Address Function.\n */\n onShipSingleAddress: () => {\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n },\n\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n shippingLines: this.state.shippingGroups,\n\n shippingLineImages: cartlineImages,\n\n selectedShippingLines: this.state.selectedShippingLines ? this.state.selectedShippingLines : [],\n\n customerAddresses: this.customerAddresses,\n\n context: this.props.context,\n\n currencyCode: this.currencyCode,\n\n moduleId: this.props.id,\n\n moduleTypeName: this.props.typeName,\n\n resources: this.resources,\n\n telemetryContent: this.telemetryContent,\n\n isMobile: this.isMobile\n });\n };\n\n /**\n * Method to render add/update address.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n * @returns Address app/update props.\n */\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\n const addressFormat =\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\n ? this.addressFormat\n : this.addressFormat;\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render select address.\n * @param onShipMultipleAddressesHandler - To handle ship to multiple addresses button click.\n * @param onAddAddressHandler - To handle add address button click.\n * @param onSaveHandler - To handle save button click.\n * @param onCancelHandler - To handle cancel button click.\n * @returns Select address props.\n */\n private readonly _renderSelectAddress = (\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n\n /**\n * On Ship to Multiple Addresses Function.\n */\n onShipMultipleAddresses: () => {\n this._goToShipMultipleAddresses();\n onShipMultipleAddressesHandler?.();\n },\n\n /**\n * On Add Address Function.\n */\n onAddAddress: () => {\n this._goToAddAddress();\n onAddAddressHandler?.();\n },\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this._onSelectAddress();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler,\n\n multipleAddressShippingEnabled: this.props.config.multipleAddressShippingEnabled\n });\n };\n\n /**\n * Method to render show address.\n * @returns Show address props.\n */\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * Method to render map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * Method gets called on address option change.\n * @param event - To get current option.\n */\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n /**\n * Method to render map auto suggest.\n * @param name - Address name field.\n * @param value - Address name value field.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method to get called on address update change.\n * @param event - Input element.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * Method to get called on address update dropdown change.\n * @param event - Select element.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Method to get called on address update submit.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._clearError();\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: result.address });\n } else {\n this._onAddOrUpdateSuccess({ address: result.address });\n }\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n /**\n * Method to get called on country change.\n * @param countryRegionId - Country region id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Method to get all address format exclude list.\n * @returns Collection of address items.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Method to get all state/provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Method to set default country region id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Method to get default address region id.\n * @returns - Address object from existing addresses.\n */\n private readonly _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n /**\n * Method to get address from express payment details from cart page.\n * @returns - Address.\n */\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\n if (this.expressPaymentDetailsFromCartPage) {\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\n\n let addressFromCartExpress: Address | undefined;\n\n if (isExpressAddressAppliedInCartPage) {\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\n } else {\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\n }\n\n return addressFromCartExpress;\n }\n return undefined;\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n TwoLetterISORegionName: twoLetterIsoRegionName,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get address from expressAddress.\n * @param expressAddress -- The expressAddress.\n * @returns The address.\n */\n private readonly getExpressAddress = (expressAddress: Address): Address => {\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n ...expressAddress,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get three letter ISO region name from two letter ISO region name.\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\n * @returns The three letter ISO region name.\n */\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\n const countryRegion = this.countryRegions.find(country => {\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\n });\n\n return countryRegion?.CountryRegionId;\n };\n\n /**\n * Method to initialize all module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const checkoutState = this.props.data.checkout.result;\n\n if (this._canShip()) {\n let defaultAddress;\n const shippingCartLines: CartLine[] = this._getCartLinesforDelivery();\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (\n ArrayExtensions.hasElements(shippingCartLines) &&\n shippingCartLines[0].ShippingAddress !== undefined &&\n shippingCartLines[0].ShippingAddress.FullAddress !== ''\n ) {\n defaultAddress = shippingCartLines[0].ShippingAddress;\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\n } else if (this._getDefaultAddress()) {\n defaultAddress = this._getDefaultAddress();\n } else {\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\n }\n\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\n }\n }\n };\n\n /**\n * Method get called on submit address.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address submit for List operation.');\n this._onSelectAddress();\n break;\n case AddressOperation.Multiple:\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._onSelectAddress();\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({ selectedShippingLines: resetSelectedShippingLines });\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n case AddressOperation.Multiple:\n this.props.telemetry.information('Shipping address cancel for Multiple operation.');\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n )\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode !== pickupDeliveryModeCode : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n if (this.props.config.multipleAddressShippingEnabled) {\n this._setCartLinesShippingAddress(this.addressListSelectedAddress);\n } else {\n this._setShippingAddress(this.addressListSelectedAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method get called on ship to multiple addresses.\n */\n private readonly _goToShipMultipleAddresses = () => {\n this._setDefaultCountryRegionId();\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._updateCurrentOperation(AddressOperation.Multiple);\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setCartLinesShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newCartLinesWithShippingAddress = this.state.shippingGroups.map(shippingGroup => shippingGroup.cartLine);\n this.props.data.checkout.result.updateCartLinesShippingAddress({ newCartLinesWithShippingAddress });\n this.props.data.checkout.result.checkoutCart\n .updateCartLineShippingAddress({ updatedCartLinesObject: newCartLinesWithShippingAddress })\n .catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n case AddressOperation.Multiple:\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutShippingAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\nimport { IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.shipMultipleAddressesButton - Ship to multiple addresses button.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n shipMultipleAddressesButton,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n \n {addButton}\n {shipMultipleAddressesButton}\n \n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Ship Multiple Component.\n * @param param0 - Root param.\n * @param param0.ShipMultipleAddress - Ship multiple address form.\n * @param param0.shipSingleAddressButton - Ship single address button.\n * @param param0.clearSelectionButton - Clear selection button.\n * @param param0.addressDropdown - Address dropdown button.\n * @param param0.ProductsTable - Products table component.\n * @param param0.ProductsTableHeading - Products table heading component.\n * @param param0.ProductsTableRow - Products table row component.\n * @param param0.shipMultipleAddressLines - Ship multiple address lines.\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @returns Address ship multiple component node.\n */\nconst AddressShipMultiple: React.FC = ({\n ShipMultipleAddress,\n shipSingleAddressButton,\n clearSelectionButton,\n addressDropdown,\n ProductsTable,\n ProductsTableHeading,\n ProductsTableRow,\n shipMultipleAddressLines,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton,\n isMobile\n}) => {\n if (ShipMultipleAddress && isMobile !== undefined) {\n if (!isMobile) {\n return (\n \n {shipSingleAddressButton}\n \n {clearSelectionButton}\n\n {addressDropdown}\n \n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n } else {\n return (\n \n {shipSingleAddressButton}\n {addressDropdown}\n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n }\n } else {\n return null;\n }\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst _renderShipMultipleAddressLine = (\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewProps,\n isMobile: boolean,\n ProductsTableRow?: INodeProps\n): JSX.Element | null => {\n if (!shipMultipleAddressesLine) {\n return null;\n }\n\n const {\n selectLine,\n productImage,\n productNumber,\n productInfo,\n productPrice,\n productQuantity,\n productAddress\n } = shipMultipleAddressesLine;\n\n if (!isMobile) {\n return (\n \n {selectLine}\n \n
{productImage}
\n
{productNumber}
\n \n {productInfo}\n {productPrice}\n {productQuantity}\n {productAddress}\n
\n );\n } else {\n return (\n \n \n {selectLine}\n \n {productImage}\n {productInfo}\n {`QTY: ${productQuantity}`}\n \n {productPrice}\n \n \n {productAddress}\n \n \n );\n }\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n showShipMultipleAddresses,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {!viewState.isShowShipMultipleAddress && cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {viewState.isShowShipMultipleAddress && (\n \n )}\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n CartLine,\n DeliveryOption,\n DeliveryPreferenceType,\n LineDeliverySpecification\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n GetDeliveryOptionsForCartLineAddressInput,\n getDeliveryOptionsForCartLineAddress,\n QueryResultSettingsProxy,\n StringExtensions,\n DeliveryOptionsCartLineAddress,\n ArrayExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport groupBy from 'lodash/groupBy';\n\nimport { IImageSettings } from '@msdyn365-commerce/core';\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { AddressDetailItemFunctionComponent } from './components/address-detail-item';\nimport CheckoutCartLineDeliveryDate from './components/checkout-cartLine-delivery-date';\nimport CheckoutCartLineDeliveryOptionsRadio from './components/checkout-cartLine-delivery-options-radio';\nimport { GetLineItems } from './components/get-line-items';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICartLineSelectedDeliveryOption {\n cartLineId: string;\n selectedDeliveryOption: string;\n requestDeliveryDate?: string;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n checkoutCartLineGroupDeliveryOptions?: React.ReactNode;\n enableCheckoutCartLineDeliveryOptions?: boolean;\n cartLineImages?: React.ReactNode;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @observable private groupDeliveryOptions: DeliveryOptionsCartLineAddress[] = [];\n\n @observable private cartLineSelectedDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n private readonly isMultipleAddressShippingEnabled?: boolean;\n\n private readonly timeoutRetailCall: number;\n\n private cartLinesDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isSelectDefaultOptionEnabled =\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\n this.isMultipleAddressShippingEnabled = this.props.config.multipleAddressShippingEnabled;\n this.timeoutRetailCall = this.props.config.timeoutToCallRetail !== undefined ? this.props.config.timeoutToCallRetail : 0;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n if (\n (this.props.data.checkout.result?.isExpressCheckoutApplied && this.canShip()) ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n await this.init();\n } else {\n // Wait for a specific time (e.g., 2000 milliseconds = 2 seconds)\n await new Promise(resolve => setTimeout(resolve, this.timeoutRetailCall));\n // Then call the init function\n await this.init();\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.cartLinesWithShippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (!this.canShip()) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const {\n moduleState: { isReady, isUpdating, hasError }\n } = this.props;\n const isError = !this.isLoading && hasError;\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\n\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCartLineGroupDeliveryOptions: this.getCheckoutCartLineGroupDeliveryOptions(),\n enableCheckoutCartLineDeliveryOptions: this.isMultipleAddressShippingEnabled,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n if (this.isMultipleAddressShippingEnabled) {\n this.getCartLinesSavedDeliveryOption();\n }\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n const channelConfig = this.props.context.request.channel;\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n const channelConfig = this.props.context.request.channel;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n const getAriaLabelWithPrice = get(deliveryOption, 'ShippingChargeAmount', 0);\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.clearError();\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n if (this.isMultipleAddressShippingEnabled) {\n this.updateCartLinesDeliverySpecification();\n } else {\n await this.updateCartDeliverySpecification(this.selectedItemId);\n }\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly getCartLinesSavedDeliveryOption = (): void => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n cartLinesForShipping.forEach(cartLine => {\n const deliveryMode = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n if (!cartLine.LineId || StringExtensions.isNullOrEmpty(deliveryMode)) {\n return;\n }\n const cartLineId = cartLine?.LineId;\n const existingCartLineSelectedDeliveryOption = this.cartLinesDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryMode;\n } else {\n if (cartLineId !== undefined) {\n this.cartLinesDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryMode });\n }\n }\n });\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n @action\n private readonly updateCartLinesDeliverySpecification = async (): Promise => {\n if (!this.cartLineSelectedDeliveryOptions || !this.cartLineSelectedDeliveryOptions.length) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n const checkoutCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n\n this.cartLineSelectedDeliveryOptions.forEach(group => {\n const address = checkoutCartLines?.find(cartLine => cartLine.LineId === group.cartLineId)?.ShippingAddress;\n const lineSpec = {\n LineId: group.cartLineId,\n DeliverySpecification: {\n DeliveryModeId: group.selectedDeliveryOption,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ShipToAddress,\n DeliveryAddress: address\n }\n };\n lineSpecs.push(lineSpec);\n });\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinesDeliverySpecification({\n lineDeliverySpecifications: lineSpecs\n });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n const cartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n if (cartLines !== undefined && cartLines.length > 0) {\n cartLines?.forEach(cartLine => {\n const cartLineId = cartLine.LineId?.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n cartLine.RequestedDeliveryDate = existingCartLineSelectedDeliveryOption.requestDeliveryDate\n ? new Date(existingCartLineSelectedDeliveryOption.requestDeliveryDate)\n : undefined;\n }\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: cartLines });\n }\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\n const cartLinesForShipping = this.props.data.checkout.result?.cartLinesWithShippingAddress;\n const requestContext = this.props.context.actionContext.requestContext;\n if (requestContext.features && requestContext.features.enable_checkout_race_condition_hot_fix) {\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n } else {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n }\n } else {\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onCartLineDeliveryOptionChange = (\n event: React.ChangeEvent,\n cartLines: CartLine[],\n cartLineId?: string\n ) => {\n const deliveryModeId = event.currentTarget.value;\n if (cartLineId !== undefined) {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n console.log('existingCartLineSelectedDeliveryOption');\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n console.log('cartLineSelectedDeliveryOptions object if existing');\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n console.log('cartLineSelectedDeliveryOptions object new line id');\n }\n return;\n }\n\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n });\n };\n\n private readonly onCartLineRequestDeliveryDateChange = (event: React.ChangeEvent, cartLines: CartLine[]) => {\n const deliveryDate = event.currentTarget.value;\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.requestDeliveryDate = deliveryDate;\n } else {\n const deliveryModeId = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption: deliveryModeId,\n requestDeliveryDate: deliveryDate\n });\n }\n });\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n\n private readonly getCheckoutCartLineGroupDeliveryOptions = (): React.ReactNode => {\n const { resources, config } = this.props;\n const shippingCartLines = this.getCartLinesForShipping();\n if (!ArrayExtensions.hasElements(shippingCartLines) || !ArrayExtensions.hasElements(this.groupDeliveryOptions)) {\n return null;\n }\n const imageSettings = this.getImageSettings(config.imageSettings);\n const requestDeliveryDateEnabled = config.enableRequestDeliveryDate === true && this.isMultipleAddressShippingEnabled === true;\n return (\n
\n {this.groupDeliveryOptions.map((groupDeliveryOption: DeliveryOptionsCartLineAddress, index) => {\n const cartLineId = groupDeliveryOption.cartLineIds !== undefined ? groupDeliveryOption.cartLineIds[0] : '';\n const cartLine1 = shippingCartLines.find(cartLine => cartLineId === cartLine?.LineId?.toString() ?? '');\n const cartLine = shippingCartLines.filter(\n cartLine => groupDeliveryOption && (cartLineId === cartLine?.LineId?.toString() ?? '')\n );\n if (groupDeliveryOption !== undefined) {\n const selectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLine[0].LineId\n )?.selectedDeliveryOption;\n return (\n
\n
\n \n
\n
\n
\n \n {resources.cartLineGroupDeliveryOptionsLabel}\n \n \n {resources.cartLineGroupDeliveryOptionsText}\n \n {requestDeliveryDateEnabled ? (\n \n ) : null}\n \n
\n {groupDeliveryOption.cartLineIds?.map(cartLineId => {\n const cartLine1 = shippingCartLines.find(\n cartLine => cartLineId === cartLine?.LineId?.toString() ?? ''\n );\n const selectedDeliveryOption1 = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption =>\n cartLineSelectedDeliveryOption.cartLineId === cartLine1?.LineId\n )?.selectedDeliveryOption;\n return (\n \n );\n })}\n
\n
\n );\n } else {\n return null;\n }\n })}\n
\n );\n };\n\n private readonly getGroupDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const cartLinesForShipping: CartLine[] = [];\n if (ArrayExtensions.hasElements(shippingCartLines)) {\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.ShippingAddress?.RecordId);\n cartLinesForShipping.push(getGroupByDelivery(shippingCartLines));\n console.log('running delivery option for all lines');\n }\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n const response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n if (response && response.length > 0) {\n this.groupDeliveryOptions = response;\n console.log('groupDeliveryOptions');\n }\n if (this.groupDeliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartLinesDeliveryOptions.length !== 0) {\n this.cartLineSelectedDeliveryOptions = this.cartLinesDeliveryOptions;\n this.cartLinesDeliveryOptions = [];\n this.onReady();\n } else {\n this.onUpdating();\n this.groupDeliveryOptions.forEach(group => {\n const selectedDeliveryOption =\n group.deliveryOptions.length > 0 && group.deliveryOptions[0].Code !== undefined\n ? group.deliveryOptions[0].Code\n : '';\n group.cartLineIds?.forEach(cartLineId => {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\n });\n });\n }\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n }\n this.isLoading = false;\n };\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n enableCheckoutCartLineDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton,\n checkoutCartLineGroupDeliveryOptions\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && !enableCheckoutCartLineDeliveryOptions && (\n \n )}\n {viewState.isShowList && enableCheckoutCartLineDeliveryOptions && checkoutCartLineGroupDeliveryOptions}\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { labelText, value } = props;\n\n const className = `ms-checkout-delivery-options__cart-line-grp__item__header__address`;\n return (\n \n {labelText}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport React, { useState } from 'react';\n\nexport interface ICheckoutCartLineDeliveryDateProps {\n className?: string;\n isDisabled?: boolean;\n minRangeValue?: string;\n maxRangeValue?: string;\n validationErrorForRange?: string;\n fallbackPattern?: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n disclaimerText?: string;\n heading?: string;\n checkBoxLabel?: string;\n onChangeMinValue?: void;\n id?: string;\n cartLines?: CartLine[];\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n}\n\nconst CheckoutCartLineDeliveryDate: React.FC = ({\n className,\n isDisabled,\n fallbackPattern,\n ariaLabel,\n telemetryContent,\n onChangeMinValue,\n checkBoxLabel,\n disclaimerText,\n heading,\n cartLines,\n onChange\n}) => {\n const [selectedDate, setSelectedDate] = useState('');\n const [isDateEnabled, setIsDateEnabled] = useState(false);\n // State to store today's date\n const [minDate, setMinDate] = useState('');\n\n // Update minDate state with today's date on component mount\n useState(() => {\n const today = new Date().toISOString().split('T')[0];\n setMinDate(today);\n });\n\n const handleDateChange = (event: React.FocusEvent) => {\n const selectedValue = event.target.value;\n // Check if the selected date is allowed\n if (selectedValue >= minDate) {\n setSelectedDate(selectedValue);\n console.log('Selected date is allowed.', selectedValue);\n } else {\n console.log('Selected date is not allowed.');\n }\n\n if (cartLines !== undefined) {\n onChange(event, cartLines);\n }\n };\n\n const handleCheckboxChange = () => {\n setIsDateEnabled(!isDateEnabled);\n };\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n \n {checkBoxLabel}\n
\n {disclaimerText}\n
\n {heading}\n \n
\n
\n );\n};\n\nexport default CheckoutCartLineDeliveryDate;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsGrpRadioButtonProps {\n className: string;\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n groupName: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsGrpRadioButton: React.FC = ({\n className,\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n groupName,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionRef: React.RefObject = React.createRef();\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsGrpRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport DescriptionComponent from './checkout-delivery-options.description';\nimport RadioButtonComponent from './checkout-cartLine-delivery-options-grp';\n\nexport interface ICheckoutCartLineDeliveryOptionsRadioButtonProps {\n className: string;\n moduleId: string;\n ariaSetSize: number;\n priceFree: string;\n ariaPosInSet: number;\n selectedItemId: string;\n cartLines: CartLine[];\n deliveryOptions: DeliveryOption[];\n typeName: string;\n context: ICoreContext>;\n groupName: string; // Add groupName prop\n ariaLabel?: string;\n value?: string;\n cartLineId?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[], cartLineId?: string): void;\n}\n\n/**\n * Represents a radio button component for checkout cart line delivery options.\n * @param {Object} props - The component props.\n * @param {boolean} props.isChecked - Indicates whether the radio button is checked.\n * @param {string} props.value - The value of the radio button.\n * @param {number} props.ariaSetSize - The total number of radio buttons in the set.\n * @param {number} props.ariaPosInSet - The position of the radio button in the set.\n * @param {string} props.ariaLabel - The ARIA label for the radio button.\n * @param {string} props.telemetryContent - The telemetry content for the radio button.\n * @param {Function} props.onChange - The event handler for when the radio button is changed.\n * @returns {JSX.Element} The rendered radio button component.\n */\nconst CheckoutCartLineDeliveryOptionsRadio: React.FC = ({\n className,\n moduleId,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n deliveryOptions,\n priceFree,\n selectedItemId,\n typeName,\n groupName, // Destructure groupName prop\n context,\n cartLines,\n cartLineId,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n console.log(attributes);\n const channelConfig = context.actionContext.requestContext.channel;\n const count = deliveryOptions.length;\n if (count === 0) {\n return null;\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n onChange(event, cartLines, cartLineId);\n },\n [onChange, cartLines, cartLineId]\n );\n // const selectedDeliveryOptionItem = deliveryOptions.length > 0 ? deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n const deliveryClassName = `${className}__radio-btn-grp`;\n const optionClassName = `${deliveryClassName}-opt`;\n const response = deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => (\n
\n \n \n \n
\n ));\n\n return
{response}
;\n};\n\nexport default CheckoutCartLineDeliveryOptionsRadio;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n className?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description, className }) => {\n if (!description) {\n return null;\n }\n\n const descClassName = StringExtensions.isNullOrEmpty(className) ? 'ms-checkout-delivery-options__description' : className;\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

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

{title}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { CartLine, DeliveryOption, ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\nimport CheckoutCartLineDeliveryOptionsRadio from './checkout-cartLine-delivery-options-radio';\n\nexport interface ICheckoutDeliveryOptionsLineItemsProps {\n className?: string;\n moduleId: string;\n selectedItemId: string;\n context: Msdyn365.ICoreContext;\n typeName: string;\n cartLines: CartLine[];\n imageSettings: Msdyn365.IImageSettings;\n showShippingChargesForLineItems: boolean;\n resources: ICheckoutDeliveryOptionsLineItemsResources;\n deliveryOptions: DeliveryOption[];\n ariaSetSize: number;\n ariaPosInSet: number;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n currencyCode?: string;\n products?: SimpleProduct[];\n catalogs?: ProductCatalog[];\n gridSettings?: Msdyn365.IGridSettings;\n cartLineId?: string;\n key?: string;\n}\n\nexport interface ICheckoutDeliveryOptionsLineItemsResources {\n quantityDisplayStringLabel: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n productDimensionTypeAmount: string;\n configString: string;\n discountStringText: string;\n shippingChargesText: string;\n priceFree: string;\n ariaLabel: string;\n changeButtonText?: string;\n deliveryMethodLabel?: string;\n}\n\nconst _getLineItemComponent = (\n context: Msdyn365.ICoreContext,\n cartLine: CartLine,\n product: SimpleProduct,\n moduleId: string,\n typeName: string,\n showShippingChargesForLineItems: boolean,\n imageSettings: Msdyn365.IImageSettings,\n resources: ICheckoutDeliveryOptionsLineItemsResources,\n currencyCode: string,\n catalogs?: ProductCatalog[],\n gridSettings?: Msdyn365.IGridSettings,\n cartLineId?: string\n): JSX.Element | undefined => {\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return (\n \n );\n};\n\nconst _getProduct = (productId: number, products: SimpleProduct[]): SimpleProduct | undefined => {\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n};\n\nexport const GetLineItems: React.FC = (props: ICheckoutDeliveryOptionsLineItemsProps) => {\n const products = props.products;\n const lineClassName = props.className;\n const lineItemClassName = `${lineClassName}-item`;\n const currencyCode = props.currencyCode;\n const changeText = props.resources.changeButtonText;\n const [showDeliveryOption, setShowDeliveryOption] = useState(false);\n\n const handleClick = () => {\n setShowDeliveryOption(!showDeliveryOption);\n };\n if (!props.cartLines || props.cartLines.length === 0 || !products || products.length === 0 || currencyCode === undefined) {\n return null;\n }\n const deliveryCode = props.deliveryOptions.find(option => option.Code === props.selectedItemId);\n const payload = getPayloadObject(TelemetryEvent.UpdateInCart, props.telemetryContent!, changeText !== undefined ? changeText : '', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\n const response = props.cartLines.map(cartLine => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId, products);\n if (!product) {\n return null;\n }\n return (\n
\n {_getLineItemComponent(\n props.context,\n cartLine,\n product,\n props.moduleId,\n props.typeName,\n props.showShippingChargesForLineItems,\n props.imageSettings,\n props.resources,\n currencyCode,\n props.catalogs,\n props.gridSettings\n )}\n
{props.resources.deliveryMethodLabel}
\n
\n {deliveryCode?.Description}\n \n
\n {showDeliveryOption ? (\n \n ) : null}\n
\n );\n });\n\n return
{response}
;\n};\nexport default GetLineItems;\n","/*!\n * Copyright (c) Microsoft Corporation.\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