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

{message}

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

{title}

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

{product.Name}

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

{specificationFriendlyName}

\r\n
{item.TextValue}
\r\n
\r\n );\r\n }\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Popup;\r\n","import { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\n// import { RatingComponent } from '@msdyn365-commerce/components';\r\n// import { PriceComponent, RatingComponent } from '@msdyn365-commerce/components';\r\nimport { AddToCartBehavior, PriceComponent } from '@msdyn365-commerce/components';\r\nimport MsDyn365, {\r\n IComponent,\r\n IComponentProps,\r\n ICoreContext,\r\n IGridSettings,\r\n IImageData,\r\n IImageSettings,\r\n Image,\r\n IRequestContext,\r\n IImageProps,\r\n getCatalogId,\r\n getUrlSync\r\n} from '@msdyn365-commerce/core';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport {\r\n // ProductAvailableQuantity,\r\n ProductPrice,\r\n ProductSearchResult,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\n// import { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\n// import { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\r\n\r\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport * as React from 'react';\r\nimport { IPopupProps, Popup } from '../../utilities/popup';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n allowBack?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n dialogStrings?: {\r\n goToCartText: string;\r\n continueShoppingText: string;\r\n headerItemOneText: string;\r\n headerItemFormatText: string;\r\n headerMessageText: string;\r\n freePriceText: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n };\r\n}\r\n\r\nexport interface IProductComponent extends IComponent {}\r\n\r\nconst PREVIOUSProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText,\r\n ratingAriaLabel,\r\n allowBack,\r\n typeName,\r\n id,\r\n telemetryContent\r\n}) => {\r\n const product = data.product;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n let productUrl = product ? getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined) : '';\r\n if (allowBack && productUrl) {\r\n productUrl = updateProductUrl(productUrl, context, 'back=true');\r\n }\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\r\n\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n const valuemin = 0;\r\n const valuemax = 1000;\r\n\r\n // MODAL\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n\r\n const popupProps: IPopupProps = {\r\n context: context,\r\n className: 'msc-add-to-pmcart',\r\n id: id,\r\n typeName: typeName,\r\n data: { product: product, price: product.Price },\r\n // @ts-ignore\r\n dialogStrings: {},\r\n imageSettings: imageSettings,\r\n gridSettings: context.request.gridSettings,\r\n productQuantity: 1,\r\n navigationUrl: '',\r\n modalOpen: modalOpen,\r\n setModalOpen: setModalOpen\r\n };\r\n\r\n const renderModalPopup = ;\r\n\r\n const catPage = context.request.urlTokens.categories !== undefined ? context.request.urlTokens.categories[0] : '';\r\n\r\n 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\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onCartLineDeliveryOptionChange = (\n event: React.ChangeEvent,\n cartLines: CartLine[],\n cartLineId?: string\n ) => {\n const deliveryModeId = event.currentTarget.value;\n if (cartLineId !== undefined) {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n 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