{"version":3,"file":"static/js/14.634fb5f0536a0772ab4c.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}\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 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 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\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 } = props;\r\n\r\n const extraTextField = props.config.paragraph;\r\n const extraText = extraTextField && ;\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 {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 function getPageTemplate() {\r\n const pageName = context.request.telemetryPageName ?? '';\r\n /*\r\n ** Home\r\n ** Blog\r\n ** Search Results\r\n Landing Page\r\n ** Listing\r\n Sales\r\n ** PDP\r\n ** Cart\r\n ** Wishlist\r\n ** MyAccount\r\n ** Checkout\r\n ** TYP (order confirmation)\r\n */\r\n\r\n if (pageName === 'Homepage') {\r\n var page = 'Home';\r\n } else if (pageName.includes('Category') || pageName.includes('Categoria')) {\r\n var page = 'Listing';\r\n } else if (pageName.includes('sign-in')) {\r\n var page = 'Login';\r\n // } else if (pageName.includes(\"Categoria\")) {\r\n // var page = 'PLP';\r\n } else if (pageName.toLowerCase().startsWith('search')) {\r\n var page = 'Search Results';\r\n } else if (document.getElementsByClassName('ms-buybox').length === 1) {\r\n var page = 'PDP';\r\n } else if (pageName.includes('CartPage')) {\r\n var page = 'Cart';\r\n } else if (pageName.includes('CheckoutPage')) {\r\n var page = 'Checkout';\r\n } else if (pageName.includes('myaccount')) {\r\n var page = 'MyAccount';\r\n } else if (pageName.includes('Wishlist')) {\r\n var page = 'Wishlist';\r\n } else if (document.querySelectorAll('[data-m-t=\"order-confirmation\"]').length > 0) {\r\n var page = 'TYP';\r\n } else if (pageName === 'Blog' || document.querySelectorAll('a.ms-breadcrumb_link[aria-label=\"Blog\"]').length > 0) {\r\n var page = 'Blog';\r\n } else {\r\n var page = 'Other';\r\n }\r\n return page;\r\n }\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(\r\n context,\r\n typeName,\r\n id,\r\n product.BasePrice,\r\n product.Price,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText\r\n // currentPriceText\r\n )}\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 // A function that generates a random set of 8 bytes\r\n //TODO restore way of saving list attribute\r\n // function generateRandomBytes(): Uint8Array {\r\n // const bytes = new Uint8Array(8);\r\n // for (let i = 0; i < bytes.length; i++) {\r\n // // Generate a random number between 0 and 255\r\n // const randomNumber = Math.floor(Math.random() * 256);\r\n // // Assign the random number to the byte\r\n // bytes[i] = randomNumber;\r\n // }\r\n // return bytes;\r\n // }\r\n // const card_guid = generateRandomBytes().toString();\r\n\r\n function getListAndCategory() {\r\n const page = getPageTemplate();\r\n let list_name = '';\r\n let category_name = '';\r\n switch (page) {\r\n case 'Home':\r\n case 'Cart':\r\n //TODO restore way of saving list attribute\r\n // const collections = document.getElementsByClassName('ms-product-collection');\r\n // Array.from(collections).forEach(collection => {\r\n // const cards = collection.getElementsByClassName('ms-product-collection__item');\r\n // Array.from(cards).forEach(card => {\r\n // if (card.getElementsByClassName('card-guid')[0].textContent === card_guid) {\r\n // list_name = collection.getElementsByClassName('ms-product-collection__heading')[0].textContent ?? '';\r\n // }\r\n // });\r\n // });\r\n break;\r\n case 'Listing':\r\n // case 'PLP':\r\n list_name = document.getElementsByClassName('ms-search-result-container__title')[0].childNodes[0].textContent ?? '';\r\n break;\r\n case 'Search Results':\r\n list_name = 'search results';\r\n break;\r\n case 'PDP':\r\n //TODO restore way of saving list attribute\r\n // list_name = sessionStorage.getItem('list') ?? '';\r\n list_name = '';\r\n const output: string[] = [];\r\n const names = document.getElementsByClassName('ms-breadcrumb_link');\r\n Array.from(names).forEach(item => {\r\n output.push(item.getAttribute('aria-label') ?? '');\r\n });\r\n category_name = output.slice(0, -1).toString() ?? '';\r\n break;\r\n default:\r\n list_name = '';\r\n category_name = '';\r\n break;\r\n }\r\n return [list_name, category_name];\r\n }\r\n\r\n const _ontoProductPDP = () => {\r\n //TODO restore way of saving list attribute\r\n // sessionStorage.setItem('list', getListAndCategory()[0]);\r\n\r\n const [list_name, category_name] = getListAndCategory();\r\n const productInfo = {\r\n name: product.Name,\r\n id: product.ItemId, //product SKU\r\n price: product.Price.toFixed(2),\r\n // 'dimension12': product.RecordId, //product ID (microsoft)\r\n list: list_name,\r\n category: category_name\r\n };\r\n window.dataLayer?.push?.({\r\n event: 'productClick',\r\n ecommerce: {\r\n // @ts-ignore\r\n currencyCode: window.___initialData___.requestContext.channel.Currency,\r\n click: {\r\n actionField: { list: list_name },\r\n products: [productInfo]\r\n }\r\n }\r\n });\r\n\r\n // setTimeout(() => {\r\n // window.location.href = productUrl;\r\n // }, 0);\r\n };\r\n\r\n const _onAddSelectionToBag = async (event: React.MouseEvent): Promise => {\r\n event?.stopPropagation();\r\n event?.preventDefault();\r\n const [list_name, category_name] = getListAndCategory();\r\n var productInfo = {\r\n name: product.Name,\r\n id: product.ItemId, //product SKU\r\n price: product.Price.toFixed(2),\r\n quantity: 1,\r\n // 'dimension12': product.RecordId, //product ID (microsoft)\r\n category: category_name,\r\n list: list_name\r\n };\r\n //TODO restore way of saving list attribute\r\n // localStorage.setItem(product?.ItemId ?? '', category_name + ';' + list_name);\r\n\r\n window.dataLayer?.push?.({\r\n event: 'addToCart',\r\n ecommerce: {\r\n currencyCode: context.request.channel?.Currency,\r\n add: {\r\n actionField: {\r\n list: list_name,\r\n action: 'add'\r\n },\r\n products: [productInfo]\r\n }\r\n }\r\n });\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 _ontoProductPDP();\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 {/* \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}\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 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 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 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';\nimport groupBy from 'lodash/groupBy';\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 const cartLinesForShipping: CartLine[] = [];\n if (cartLines.length > 0) {\n const getGroupByDelivery = (items: ICheckoutShippingCartLineInfo[]) => groupBy(items, item => item.shippingAddressId);\n cartLinesForShipping.push(getGroupByDelivery(cartLines));\n }\n const renderShipMultiAddressView = isMultipleAddressShippingEnabled && cartLinesForShipping.length > 1;\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 const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\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 ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : 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 /**\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 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 }\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?.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\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\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 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;\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 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 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 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 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 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 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 };\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 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 }\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