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

{message}

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

{title}

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

⚠️{props.resources.unableDeliveryHome}

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

{product.Name}

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

{specificationFriendlyName}

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

{product.Name}

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

{product.Description}

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

{product.Name}

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

{product.Description}

\r\n
\r\n
\r\n {/*\r\n //TODO restore way of saving list attribute\r\n {card_guid}\r\n */}\r\n {product.RecordId}\r\n {product.ItemId}\r\n
\r\n {/* {!context.app.config.hideRating && (\r\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)\r\n )} */}\r\n {product.BasePrice !== product.Price && (\r\n \r\n \r\n {custom_basePrice}\r\n {discount_string}\r\n \r\n \r\n )}\r\n
\r\n
\r\n {product.BasePrice !== 0 ? (\r\n
\r\n {product.BasePrice === product.Price ? (\r\n <>\r\n \r\n {custom_basePrice}\r\n \r\n\r\n {/* THE FOLLOWING IS SHOWN FOR SPACING REASONS */}\r\n  \r\n {/* DO NOT REMOVE THIS */}\r\n \r\n ) : (\r\n <>\r\n \r\n {custom_adjustedPrice}\r\n \r\n \r\n {omnibus_price_currency ? (\r\n <>\r\n {omnibus_string} \r\n {omnibus_price_currency}\r\n \r\n ) : (\r\n <> \r\n )}\r\n \r\n \r\n )}\r\n {/*
*/}\r\n
\r\n {available ? (\r\n \r\n {cart_string}\r\n \r\n ) : (\r\n {availableLabel}\r\n )}\r\n
\r\n {/*
*/}\r\n
\r\n ) : null}\r\n \r\n \r\n );\r\n};\r\n\r\nfunction renderLabel(name?: string, price?: string, rating?: number, ratingAriaLabel?: string): string {\r\n name = name || '';\r\n price = price || '';\r\n return `${name} ${price} ${getRatingAriaLabel(rating, ratingAriaLabel)}`;\r\n}\r\n\r\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\r\n if (rating && ratingAriaLabel) {\r\n const roundedRating = rating.toFixed(2);\r\n return format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * Updates the product url link to product details page.\r\n * @param productDetailsPageUrl - Product page url.\r\n * @param coreContext - Context of the module using the component.\r\n * @param queryString - Querystring to be added to the URL.\r\n * @returns The update product page url.\r\n */\r\nfunction updateProductUrl(productDetailsPageUrl: string, coreContext: ICoreContext, queryString: string): string {\r\n const sourceUrl = new URL(productDetailsPageUrl, coreContext.request.apiSettings.baseUrl);\r\n if (sourceUrl.search) {\r\n sourceUrl.search += `&${queryString}`;\r\n } else {\r\n sourceUrl.search += queryString;\r\n }\r\n\r\n const updatedUrl = new URL(sourceUrl.href);\r\n return updatedUrl.pathname + sourceUrl.search;\r\n}\r\n\r\n// function renderRating(\r\n// context: ICoreContext,\r\n// typeName: string,\r\n// id: string,\r\n// avgRating?: number,\r\n// totalRatings?: number,\r\n// ariaLabel?: string\r\n// ): JSX.Element | null {\r\n// if (!avgRating) {\r\n// return null;\r\n// }\r\n\r\n// const numRatings = (totalRatings && totalRatings.toString()) || undefined;\r\n// const ratingAriaLabel = getRatingAriaLabel(avgRating, ariaLabel);\r\n\r\n// return (\r\n// \r\n// );\r\n// }\r\n\r\nfunction renderPrice(\r\n context: ICoreContext,\r\n typeName: string,\r\n id: string,\r\n basePrice?: number,\r\n adjustedPrice?: number,\r\n savingsText?: string,\r\n freePriceText?: string,\r\n originalPriceText?: string\r\n // currentPriceText?: string\r\n): JSX.Element | null {\r\n const price: ProductPrice = {\r\n BasePrice: basePrice,\r\n AdjustedPrice: adjustedPrice,\r\n CustomerContextualPrice: adjustedPrice\r\n };\r\n return (\r\n <>\r\n
\r\n \r\n {/* {percent_discount !== '' ? (\r\n {discount_string}\r\n ) : null} */}\r\n
\r\n \r\n );\r\n}\r\n\r\n// @ts-ignore\r\nexport default PREVIOUSProductCard;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\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 const requestContext = this.props.context.actionContext.requestContext;\n if (requestContext.features && requestContext.features.enable_checkout_race_condition_hot_fix) {\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n } else {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n }\n } else {\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onCartLineDeliveryOptionChange = (\n event: React.ChangeEvent,\n cartLines: CartLine[],\n cartLineId?: string\n ) => {\n const deliveryModeId = event.currentTarget.value;\n if (cartLineId !== undefined) {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n return;\n }\n\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n });\n };\n\n private readonly onCartLineRequestDeliveryDateChange = (event: React.ChangeEvent, cartLines: CartLine[]) => {\n const deliveryDate = event.currentTarget.value;\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.requestDeliveryDate = deliveryDate;\n } else {\n const deliveryModeId = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption: deliveryModeId,\n requestDeliveryDate: deliveryDate\n });\n }\n });\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n\n private readonly getCheckoutCartLineGroupDeliveryOptions = (): React.ReactNode => {\n const { resources, config } = this.props;\n const shippingCartLines = this.getCartLinesForShipping();\n if (!ArrayExtensions.hasElements(shippingCartLines) || !ArrayExtensions.hasElements(this.groupDeliveryOptions)) {\n return null;\n }\n const imageSettings = this.getImageSettings(config.imageSettings);\n const requestDeliveryDateEnabled = config.enableRequestDeliveryDate === true && this.isMultipleAddressShippingEnabled === true;\n return (\n
\n {this.groupDeliveryOptions.map((groupDeliveryOption: DeliveryOptionsCartLineAddress, index) => {\n const cartLineId = groupDeliveryOption.cartLineIds !== undefined ? groupDeliveryOption.cartLineIds[0] : '';\n const cartLine1 = shippingCartLines.find(cartLine => cartLineId === cartLine?.LineId?.toString() ?? '');\n const cartLine = shippingCartLines.filter(\n cartLine => groupDeliveryOption && (cartLineId === cartLine?.LineId?.toString() ?? '')\n );\n if (groupDeliveryOption !== undefined) {\n const selectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLine[0].LineId\n )?.selectedDeliveryOption;\n return (\n
\n
\n \n
\n
\n
\n \n {resources.cartLineGroupDeliveryOptionsLabel}\n \n \n {resources.cartLineGroupDeliveryOptionsText}\n \n {requestDeliveryDateEnabled ? (\n \n ) : null}\n \n
\n {groupDeliveryOption.cartLineIds?.map(cartLineId => {\n const cartLine1 = shippingCartLines.find(\n cartLine => cartLineId === cartLine?.LineId?.toString() ?? ''\n );\n const selectedDeliveryOption1 = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption =>\n cartLineSelectedDeliveryOption.cartLineId === cartLine1?.LineId\n )?.selectedDeliveryOption;\n return (\n \n );\n })}\n
\n
\n );\n } else {\n return null;\n }\n })}\n
\n );\n };\n\n private readonly getGroupDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const cartLinesForShipping: CartLine[] = [];\n if (ArrayExtensions.hasElements(shippingCartLines)) {\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.ShippingAddress?.RecordId);\n cartLinesForShipping.push(getGroupByDelivery(shippingCartLines));\n console.log('running delivery option for all lines');\n }\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n const response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n if (response && response.length > 0) {\n this.groupDeliveryOptions = response;\n console.log('groupDeliveryOptions');\n }\n if (this.groupDeliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartLinesDeliveryOptions.length !== 0) {\n this.cartLineSelectedDeliveryOptions = this.cartLinesDeliveryOptions;\n this.cartLinesDeliveryOptions = [];\n this.onReady();\n } else {\n this.onUpdating();\n this.groupDeliveryOptions.forEach(group => {\n const selectedDeliveryOption =\n group.deliveryOptions.length > 0 && group.deliveryOptions[0].Code !== undefined\n ? group.deliveryOptions[0].Code\n : '';\n group.cartLineIds?.forEach(cartLineId => {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\n });\n });\n }\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n }\n this.isLoading = false;\n };\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n enableCheckoutCartLineDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton,\n checkoutCartLineGroupDeliveryOptions\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && !enableCheckoutCartLineDeliveryOptions && (\n \n )}\n {viewState.isShowList && enableCheckoutCartLineDeliveryOptions && checkoutCartLineGroupDeliveryOptions}\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { labelText, value } = props;\n\n const className = `ms-checkout-delivery-options__cart-line-grp__item__header__address`;\n return (\n \n {labelText}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport React, { useState } from 'react';\n\nexport interface ICheckoutCartLineDeliveryDateProps {\n className?: string;\n isDisabled?: boolean;\n minRangeValue?: string;\n maxRangeValue?: string;\n validationErrorForRange?: string;\n fallbackPattern?: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n disclaimerText?: string;\n heading?: string;\n checkBoxLabel?: string;\n onChangeMinValue?: void;\n id?: string;\n cartLines?: CartLine[];\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n}\n\nconst CheckoutCartLineDeliveryDate: React.FC = ({\n className,\n isDisabled,\n fallbackPattern,\n ariaLabel,\n telemetryContent,\n onChangeMinValue,\n checkBoxLabel,\n disclaimerText,\n heading,\n cartLines,\n onChange\n}) => {\n const [selectedDate, setSelectedDate] = useState('');\n const [isDateEnabled, setIsDateEnabled] = useState(false);\n // State to store today's date\n const [minDate, setMinDate] = useState('');\n\n // Update minDate state with today's date on component mount\n useState(() => {\n const today = new Date().toISOString().split('T')[0];\n setMinDate(today);\n });\n\n const handleDateChange = (event: React.FocusEvent) => {\n const selectedValue = event.target.value;\n // Check if the selected date is allowed\n if (selectedValue >= minDate) {\n setSelectedDate(selectedValue);\n console.log('Selected date is allowed.', selectedValue);\n } else {\n console.log('Selected date is not allowed.');\n }\n\n if (cartLines !== undefined) {\n onChange(event, cartLines);\n }\n };\n\n const handleCheckboxChange = () => {\n setIsDateEnabled(!isDateEnabled);\n };\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n \n {checkBoxLabel}\n
\n {disclaimerText}\n
\n {heading}\n \n
\n
\n );\n};\n\nexport default CheckoutCartLineDeliveryDate;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsGrpRadioButtonProps {\n className: string;\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n groupName: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsGrpRadioButton: React.FC = ({\n className,\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n groupName,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionRef: React.RefObject = React.createRef();\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsGrpRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport DescriptionComponent from './checkout-delivery-options.description';\nimport RadioButtonComponent from './checkout-cartLine-delivery-options-grp';\n\nexport interface ICheckoutCartLineDeliveryOptionsRadioButtonProps {\n className: string;\n moduleId: string;\n ariaSetSize: number;\n priceFree: string;\n ariaPosInSet: number;\n selectedItemId: string;\n cartLines: CartLine[];\n deliveryOptions: DeliveryOption[];\n typeName: string;\n context: ICoreContext>;\n groupName: string; // Add groupName prop\n ariaLabel?: string;\n value?: string;\n cartLineId?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[], cartLineId?: string): void;\n}\n\n/**\n * Represents a radio button component for checkout cart line delivery options.\n * @param {Object} props - The component props.\n * @param {boolean} props.isChecked - Indicates whether the radio button is checked.\n * @param {string} props.value - The value of the radio button.\n * @param {number} props.ariaSetSize - The total number of radio buttons in the set.\n * @param {number} props.ariaPosInSet - The position of the radio button in the set.\n * @param {string} props.ariaLabel - The ARIA label for the radio button.\n * @param {string} props.telemetryContent - The telemetry content for the radio button.\n * @param {Function} props.onChange - The event handler for when the radio button is changed.\n * @returns {JSX.Element} The rendered radio button component.\n */\nconst CheckoutCartLineDeliveryOptionsRadio: React.FC = ({\n className,\n moduleId,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n deliveryOptions,\n priceFree,\n selectedItemId,\n typeName,\n groupName, // Destructure groupName prop\n context,\n cartLines,\n cartLineId,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n console.log(attributes);\n const channelConfig = context.actionContext.requestContext.channel;\n const count = deliveryOptions.length;\n if (count === 0) {\n return null;\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n onChange(event, cartLines, cartLineId);\n },\n [onChange, cartLines, cartLineId]\n );\n // const selectedDeliveryOptionItem = deliveryOptions.length > 0 ? deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n const deliveryClassName = `${className}__radio-btn-grp`;\n const optionClassName = `${deliveryClassName}-opt`;\n const response = deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => (\n
\n \n \n \n
\n ));\n\n return
{response}
;\n};\n\nexport default CheckoutCartLineDeliveryOptionsRadio;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n className?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description, className }) => {\n if (!description) {\n return null;\n }\n\n const descClassName = StringExtensions.isNullOrEmpty(className) ? 'ms-checkout-delivery-options__description' : className;\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

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

{title}

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

{this.props.resources.loyaltyCoveredAmountText}

\n \n \n );\n }\n\n private _renderPointSection(\n point: LoyaltyRewardPoint,\n loyaltyCoveredAmountText: string,\n expiringLoyaltyPointsLabel: string\n ): ICheckoutLoyaltyRewardPoint {\n return {\n key: point.RewardPointId || '',\n checkoutLoyaltyRewardPoint: {\n className: `${this.moduleClassName}__program`\n },\n title: ,\n availablePointsText: ,\n activePoints: (\n \n ),\n expiringPointsText: ,\n expiringPoints: (\n \n )\n };\n }\n\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const savedLoyaltyAmount = this.props.data.checkout.result?.loyaltyAmount;\n if (savedLoyaltyAmount) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n } else if (\n this.props.data.loyaltyCard.result &&\n this.props.data.checkout.result &&\n this.props.data.loyaltyCard.result.CardNumber !== this.props.data.checkout.result.checkoutCart.cart.LoyaltyCardId\n ) {\n this.props.data.checkout.result.checkoutCart\n .updateLoyaltyCardId({ loyaltyCardNumber: this.props.data.loyaltyCard.result.CardNumber })\n .catch(error => {\n if (this.context.telemetry) {\n this.context.telemetry.warning(error);\n this.context.telemetry.debug('Unable to update the loyalty card');\n }\n });\n }\n };\n\n private readonly onEdit = () => {\n this.props.telemetry.information('Payment section loyalty onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = () => {\n this.props.telemetry.information('Payment section loyalty onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = () => {\n this.props.telemetry.information('Payment section loyalty onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n const checkoutState = this.props.data.checkout.result;\n if (checkoutState && checkoutState.loyaltyAmount > 0) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly isEnabled = () => {\n return (\n this.props.context.request.user.isAuthenticated &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n );\n };\n\n private async _applyLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty apply button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: Number.parseFloat(this.state.dollarsApplied.toString()) });\n this.setState({\n isFetchingLoyaltyCard: true\n });\n }\n\n private async _removeLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty remove button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: 0 });\n this.setState({\n dollarsApplied: 0\n });\n }\n\n private _onInputChange(event: React.ChangeEvent): void {\n const value = event.currentTarget.value;\n this.setState({ dollarsApplied: value.length > 0 ? Number(value) : Number.parseFloat(value), isFetchingLoyaltyCard: false });\n }\n\n private _onBlur(event: React.FocusEvent): void {\n const num = Number.parseFloat(event.currentTarget.value).toFixed(2);\n const element = document.getElementById(`${this.props.id}-label`) as HTMLInputElement;\n if (element && num) {\n element.value = num;\n this.setState({ dollarsApplied: Number.parseFloat(num) });\n }\n }\n\n private _updateLoyalty(): void {\n if (this.props.moduleState.isDisabled && this.isEnabled()) {\n this._updateEstimate();\n this.props.moduleState.onUpdating();\n }\n }\n\n private _updateEstimate(): void {\n const card = this.props.data.loyaltyCard.result;\n const checkout = this.props.data.checkout.result;\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n const channelConfig = this.props.context.request.channel;\n if (card && card.CardNumber && cart && channelConfig) {\n const currencyCode = channelConfig.Currency || '';\n const loyalPointsRequest = createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput(cart.Id, card.CardNumber, currencyCode);\n\n // @ts-expect-error\n // Due to bug 23214358, this is getting improperly cached. Need to turn on cache bypass for now to work around issue\n loyalPointsRequest._query.options.bypassCache = 'get';\n\n callActionOrExecute(loyalPointsRequest, this.props.context.actionContext)\n .then(async points => {\n this.props.context.actionContext.update(\n new GetLoyaltyTransactionEstimationInput(this.props.context.request.apiSettings),\n points\n );\n const newMaxPoints = points.MaxCurrencyValueOfLoyaltyPoints ?? this._defaultLoyaltyPoints;\n\n // If points are already applied, ensure you don't apply more points than max\n if (checkout && checkout.loyaltyAmount > newMaxPoints) {\n await checkout.updateLoyaltyAmount({ newAmount: newMaxPoints });\n }\n\n this.setState({ dollarsApplied: newMaxPoints, isFetchingLoyaltyCard: false });\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n this.props.context.actionContext.telemetry.debug('Error getting Loyalty Point Redemption Estimate');\n });\n }\n }\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutLoyalty;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow, ICheckoutLoyaltyViewProps } from './checkout-loyalty';\n\nconst AddCheckoutLoyalty: React.FC = ({\n heading,\n cardNumber,\n drawer,\n rewardPoints,\n loyaltyAmountContainer,\n appliedLoyaltyAmountContainer,\n loyaltyAmountLabel,\n loyaltyAmountInput,\n loyaltyAmountApplyButton,\n showAppliedAmount,\n loyaltyAmountAppliedText,\n loyaltyAmountAppliedPrice,\n loyaltyAmountRemoveButton\n}) => {\n return (\n <>\n {heading}\n {cardNumber}\n \n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\n return (\n \n {rewardPoint.title}\n {rewardPoint.availablePointsText}\n {rewardPoint.activePoints}\n {rewardPoint.expiringPointsText}\n {rewardPoint.expiringPoints}\n \n );\n })}\n \n \n {loyaltyAmountLabel}\n {loyaltyAmountInput}\n {loyaltyAmountApplyButton}\n {showAppliedAmount && (\n \n {loyaltyAmountAppliedText}\n {loyaltyAmountAppliedPrice}\n {loyaltyAmountRemoveButton}\n \n )}\n \n \n );\n};\n\nconst ShowCheckoutLoyalty: React.FC = ({ heading, coveredAmountText, amount }) => {\n return (\n <>\n {heading}\n {coveredAmountText}\n {amount}\n \n );\n};\n\nconst CheckoutLoyaltyView: React.FC = props => {\n const { checkoutLoyalty, checkoutErrorRef, alert, viewState, showLoyalty, addLoyalty } = props;\n\n return (\n \n {alert}\n {viewState.isShowLoyalty && }\n {viewState.isShowAddLoyalty && }\n \n );\n};\n\nexport default CheckoutLoyaltyView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyInput {\n className: string;\n type: string;\n value: string | number;\n min: number;\n max: number;\n ariaValueMax: number;\n ariaValueMin: number;\n ariaValueNow: number;\n id: string;\n step: string;\n onChange(event: React.ChangeEvent): void;\n onBlur(event: React.FocusEvent): void;\n}\n\nconst AdressInput: React.FC = ({\n className,\n type,\n value,\n min,\n max,\n step,\n ariaValueMax,\n ariaValueMin,\n ariaValueNow,\n onChange,\n onBlur,\n id\n}) => (\n \n);\n\nexport default AdressInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyLabelProps {\n className: string;\n text: string;\n htmlFor: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @param root0.htmlFor\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyLabel: React.FC = ({ className, text, htmlFor }) => {\n return (\n \n );\n};\n\nexport default CheckoutLoyaltyLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyTextProps {\n className: string;\n text?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyText: React.FC = ({ className, text }) => {\n if (!text) {\n return null;\n }\n\n return {text};\n};\n\nexport default CheckoutLoyaltyText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { AsyncResultStatus, Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\nimport {\n updateLineDeliverySpecificationsAsync,\n validateForCheckoutAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n DeliveryPreferenceType,\n LineDeliverySpecification,\n SimpleProduct,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getAvailabilitiesForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n validateCartLinesInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n Waiting\n} from '@msdyn365-commerce-modules/utilities';\nimport { ErrorCode, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport { action, computed, get, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutData } from './checkout.data';\nimport { ICheckoutHeadingData, ICheckoutProps } from './checkout.props.autogenerated';\nimport AlertComponent from './components/alert';\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\nimport { getLineItems, ILineItems } from './components/get-line-items';\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\nimport GuidedFormComponent from './components/guided-form';\nimport PlaceOrderButtonComponent from './components/place-order-button';\nimport placeOrder from './methods/place-order';\nimport { focusOnCheckoutError, setCheckoutErrors } from '../../checkout-errors';\nimport { AsyncResultStatusCode, IExpressPaymentDetails } from '../../common';\n\nexport * from './components/get-line-items';\nexport * from './components/get-order-summary';\n\n/**\n * Device type.\n */\ntype DeviceType = 'Mobile';\n\n/**\n * The Checkout state.\n */\ninterface ICheckoutState {\n errorMessage: string;\n isValidationPassed: boolean;\n isPlaceOrderLoading?: boolean;\n isPlaceOrderClicked?: boolean;\n}\n\n/**\n * Known action error failure states\n */\nexport const enum ActionErrorStatus {\n Timeout = 'Timeout',\n HookTimeout = 'Hook Timeout',\n ServiceUnavailable = 'Service Unavailable'\n}\n\n/**\n * The Checkout view props.\n * @extends ICheckoutProps\n */\nexport interface ICheckoutViewProps extends ICheckoutProps {\n className: string;\n canShow?: boolean;\n isEmptyCart?: boolean;\n isConsentGiven?: boolean;\n hasError?: boolean;\n isPaymentVerificationRedirection?: boolean;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n cartStatus?: string;\n isMobile?: boolean;\n isEditorialMode?: boolean;\n backToShoppingUrl?: string;\n editCartLink?: string;\n hasSalesOrder: boolean;\n hasInvoiceLine?: boolean;\n\n 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