{"version":3,"file":"static/js/8.cef0efebafc1bb86d471.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/b2b-account-management-address/b2b-account-management-address.tsx?e47d","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-account-management-address/b2b-account-management-address.view.tsx?187b","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-checkout-billing-address/b2b-checkout-billing-address.tsx?57b6","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-checkout-billing-address/b2b-checkout-billing-address.view.tsx?c8d4","webpack://Msdyn365.Commerce.Online/./src/modules/eve-checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?bf60","webpack://Msdyn365.Commerce.Online/./src/modules/eve-checkout-shipping-address/eve-checkout-shipping-address.tsx?fa80","webpack://Msdyn365.Commerce.Online/./src/modules/eve-checkout-shipping-address/eve-checkout-shipping-address.view.tsx?21bf","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/cart-icon.view.tsx?3413","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/create-order-template.component.tsx?f930","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/header.view.tsx?956f","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/order-template-list.view.tsx?212c","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/ratings-histogram.view.tsx?d36f","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/cart-icon.view.tsx?be14","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/create-order-template.component.tsx?d950","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/header.view.tsx?6b29","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/order-template-list.view.tsx?3b52","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/ratings-histogram.view.tsx?6aaa","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","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/common/components/address-error-alert.tsx?bcde","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/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/modules/carousel/carousel.tsx?80d4","webpack://Msdyn365.Commerce.Online/./src/modules/carousel/carousel.view.tsx?d82f","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/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/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/get-line-items.tsx?e389","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-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-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-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-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/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/fabrikam/views/components/cartlineitem.component.tsx?eb8c","webpack://Msdyn365.Commerce.Online/./src/modules/header/utilities/mock-utilities.ts?d017","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-collection/product-collection.tsx?4008","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection.view.tsx?5d36","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/adventureworks/views/cart-icon.view.tsx?7ec9","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product-v2.component.tsx?d155","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product.component.tsx?fd23","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/header.view.tsx?9bd3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container-v2.view.tsx?6eaa","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container.view.tsx?6e86"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AutoSuggest } from '@msdyn365-commerce-modules/address';\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemType } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressList, IAddressListProps } from '@msdyn365-commerce-modules/address';\r\nimport { IB2bAccountManagementAddressData } from './b2b-account-management-address.data';\r\nimport { IB2bAccountManagementAddressProps } from './b2b-account-management-address.props.autogenerated';\r\n\r\n/**\r\n * Account management address view state interface.\r\n */\r\nexport interface IAccountManagementAddressViewState {\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\n/**\r\n * Account management address view state interface.\r\n */\r\nexport interface IAccountManagementAddressViewProps\r\n extends React.Component> {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: IAccountManagementAddressViewState;\r\n AccountAddressManagement: IModuleProps;\r\n isUpdating: boolean;\r\n showAddressList: IAddressListProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n screenReaderNotification: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountManagementAddress extends React.Component> {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private customerAddresses: Address[];\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n @observable private isUpdating?: boolean;\r\n\r\n @observable private hasError?: boolean;\r\n\r\n @observable private removeAddressData?: Address;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n public constructor(props: IB2bAccountManagementAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.addUpdateAddress = {};\r\n this.validationError = {};\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n // Filter out the Invoice address for the add/update form\r\n this.addressPurposes.filter((address: AddressPurpose) => address.AddressType !== 1)\r\n );\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 }\r\n\r\n /**\r\n * On Suggestion Selected Function.\r\n * @param result - Microsoft.Maps.ISuggestionResult.\r\n */\r\n @action\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n set(this.addUpdateAddress, { Street: '' });\r\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n set(this.addUpdateAddress, { City: address.City });\r\n set(this.addUpdateAddress, { State: address.State });\r\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, 0);\r\n };\r\n\r\n /**\r\n * Clear Address Fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Clear Validation Function.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n void this.props.data.countryRegions.then(() => {\r\n this._setDefaultCountryRegionId();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n },\r\n async () => {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Component did mount function.\r\n */\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n /**\r\n * Should component update function.\r\n * @param nextProps - Account management address props.\r\n * @param nextState - Next state.\r\n * @returns - True if component should update, false otherwise.\r\n */\r\n public shouldComponentUpdate(\r\n nextProps: IB2bAccountManagementAddressProps,\r\n nextState: IAccountManagementAddressViewState\r\n ): 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 {\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddresList: this.currentOperation === AddressOperation.List,\r\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\r\n },\r\n AccountAddressManagement: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-management-address', config.className)\r\n },\r\n showAddressList: this._renderListAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The account management props.\r\n */\r\n private readonly _dataInitialize = (props: IB2bAccountManagementAddressProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.customerAddresses = data.address.result ?? [];\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Render Add Or Update Address Function.\r\n * @returns - AddressAddUpdate.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n telemetryContent: this.telemetryContent,\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n onSave: this._onAddressAddUpdateSubmit,\r\n onCancel: this._resetView\r\n });\r\n };\r\n\r\n /**\r\n * Render List Address Function.\r\n * @returns - AddressList.\r\n */\r\n private readonly _renderListAddress = (): IAddressListProps => {\r\n const { config } = this.props;\r\n\r\n /**\r\n * Render Address ttitle.\r\n * @param event - Msdyn365.ContentEditableEvent.\r\n */\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n config.heading!.text = event.target.value;\r\n };\r\n const heading = config.heading && {\r\n text: config.heading.text,\r\n headingTag: config.heading.tag\r\n };\r\n\r\n return AddressList({\r\n isUpdating: this.isUpdating,\r\n selectedAddress: this.selectedAddress,\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n addressPurposes: this.addressPurposes,\r\n resources: this.resources,\r\n heading,\r\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\r\n otherAddressSectionHeading: config.otherAddressSectionHeading,\r\n contextRequest: this.props.context.request,\r\n telemetryContent: this.telemetryContent,\r\n handleLineItemHeadingChange,\r\n onEditAddress: this._goToEditAddress,\r\n onRemoveAddress: this._onRemoveAddress,\r\n onAddAddress: this._goToAddAddress,\r\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress\r\n });\r\n };\r\n\r\n /**\r\n * Attach Map Auto Suggest Function.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Add Update Function.\r\n * @param name - String.\r\n * @param value - String | Boolean | Number.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * On Address Add Update Input Change.\r\n * @param event - Input Change Event.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Add Update Dropdown Change.\r\n * @param event - Dropdown Change Event.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n this.onAddressAddUpdate(event.target.name, +event.target.value);\r\n } else {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n }\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Update Function.\r\n * @param response - Promise.\r\n * @param onSuccess - IAddressResponse.\r\n */\r\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\r\n this.isUpdating = true;\r\n response.then(\r\n (result: IAddressResponse) => {\r\n if (result.address) {\r\n this.hasError = false;\r\n onSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n }\r\n this.isUpdating = false;\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * On Address Add Update Submit Function.\r\n */\r\n private readonly _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n /**\r\n * On Country Change Function.\r\n * @param countryRegionId - String.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Get Address Format Exclude List Function.\r\n * @returns - Address Format Exclude List.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Get State Provinces Function.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n void this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n /**\r\n * Update CurrentOperation Function.\r\n * @param operation - AddressOperation.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\r\n this.currentOperation = operation;\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * On Submit Update Primary Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\r\n this.selectedAddress = address;\r\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\r\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\r\n };\r\n\r\n /**\r\n * Go To Edit Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _goToEditAddress = (address: Address): void => {\r\n this.addUpdateAddress = { ...address };\r\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\r\n this._updateCurrentOperation(AddressOperation.Update);\r\n };\r\n\r\n /**\r\n * On Remove Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _onRemoveAddress = (address: Address): void => {\r\n address.Deactivate = true;\r\n this.removeAddressData = address;\r\n const response = this.addressCommon.updateCustomerAddress(address);\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n /**\r\n * Renders Notification screen reader text for removed address.\r\n * @param address - Address input.\r\n * @returns Notification for removed address.\r\n */\r\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\r\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\r\n return (\r\n
\r\n {notification}\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Go To Add Address Function.\r\n */\r\n private readonly _goToAddAddress = (): void => {\r\n this.addUpdateAddress = {};\r\n this._setDefaultCountryRegionId();\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n /**\r\n * On Add Or Update Success Function.\r\n * @param response - IAddressResponse.\r\n */\r\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n this._resetView();\r\n };\r\n\r\n /**\r\n * On Update Primary Address Success Function.\r\n * @param response - IAddressResponse.\r\n */\r\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n };\r\n\r\n /**\r\n * Reset view function.\r\n */\r\n private readonly _resetView = (): void => {\r\n this.selectedAddress = undefined;\r\n this._updateCurrentOperation(AddressOperation.List);\r\n };\r\n}\r\n\r\nexport default AccountManagementAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/./account-management-address';\r\n// import { AddressDetailItemComponent } from '@msdyn365-commerce-modules/address/src/common/components/address-detail-item';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address List Component.\r\n * @param param0 - Root param.\r\n * @param param0.List - Address list.\r\n * @param param0.isShowList - Boolean.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressListItem[].\r\n * @returns - AddressListComponent Node.\r\n */\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n\r\n // const component = showItems.items.find(address => address.key === \"AddressTypeValue\")?.description;\r\n\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Lists Component.\r\n * @param param0 - Root param.\r\n * @param param0.ListAddress - List address.\r\n * @param param0.heading - List heading.\r\n * @param param0.isShowEmptyListMessage - Boolean.\r\n * @param param0.emptyListMessage - Empty list message.\r\n * @param param0.addButton - Add button.\r\n * @param param0.primaryAddressList - Primary address.\r\n * @param param0.otherAddressList - Other address.\r\n * @returns Address Lists Component Node.\r\n */\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * AddressAddUpdateComponent.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Account Management Address View Component.\r\n * @param props - Props.\r\n * @returns - AccountAddressManagement Module.\r\n */\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress, screenReaderNotification } = props;\r\n\r\n // Remove buttons from Invoice address\r\n const invoiceAddressId = 1;\r\n const addressId = props.customerAddresses.slice().find(address => address.AddressTypeValue === invoiceAddressId)?.RecordId;\r\n const invoiceAddress = showAddressList.otherAddressList.items.find(address => address.key === addressId);\r\n if (invoiceAddress) {\r\n invoiceAddress.editButton = undefined;\r\n invoiceAddress.primaryButton = undefined;\r\n invoiceAddress.removeButton = undefined;\r\n }\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n {screenReaderNotification}\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n AddressBillingHeading,\r\n AddressCommon,\r\n AddressFormat,\r\n AddressItemType,\r\n AddressMetaData,\r\n AddressOperation,\r\n AddressShow,\r\n IAddressAddUpdateProps,\r\n IAddressResponse,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address';\r\nimport { IB2bCheckoutBillingAddressData } from './b2b-checkout-billing-address.data';\r\nimport { IB2bCheckoutBillingAddressProps } from './b2b-checkout-billing-address.props.autogenerated';\r\n\r\n/**\r\n * Props interface.\r\n */\r\nexport interface IProps extends IB2bCheckoutBillingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutState {\r\n errorMessage: string | undefined;\r\n}\r\n\r\n/**\r\n * Checkout billing address view state interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewState {\r\n isShowAddress: boolean;\r\n isError: boolean;\r\n}\r\n\r\n/**\r\n * Checkout billing address view props interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewProps extends IProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutBillingAddressViewState;\r\n CheckoutBillingAddress: IModuleProps;\r\n sameAsShippingCheckbox: React.ReactNode;\r\n heading: React.ReactNode;\r\n showAddress: IAddressShowProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n error: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutBillingAddress component.\r\n * @extends {React.PureComponent>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutBillingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private isBillingAddressSameAsShipping: boolean;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private readonly addressActionResponse?: IAddressResponse;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private addresses: Address[];\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n public constructor(props: IProps) {\r\n super(props);\r\n this.state = { errorMessage: undefined };\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.validationError = {};\r\n this.isBillingAddressSameAsShipping = false;\r\n this.currentOperation = AddressOperation.List;\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.addresses = data.address.result || [];\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n // Initializing data props\r\n\r\n this._dataInitialize(this.props);\r\n\r\n void this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\r\n shippingAddress => {\r\n if (this.props.moduleState.isUpdating) {\r\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\r\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\r\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\r\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\r\n }\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.isBillingAddressRequried,\r\n isBillingAddressRequried => {\r\n if (!isBillingAddressRequried) {\r\n this.props.data.checkout.result?.removeBillingAddress({});\r\n this.props.moduleState.onDisable();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProps, nextState: ICheckoutState): 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 if (!this.isBillingAddressRequried) {\r\n return null;\r\n }\r\n\r\n const { resources } = this.props;\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.props.moduleState.hasError ? undefined : this.selectedAddress,\r\n addUpdateAddress: this.props.moduleState.hasError ? undefined : this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show && !this.props.moduleState.hasError,\r\n isError: this.props.moduleState.hasError\r\n },\r\n CheckoutBillingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-billing-address', config.className)\r\n },\r\n heading: ,\r\n showAddress: this._renderShowAddress(),\r\n error: this.renderErrorMessage()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: IProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.addresses = data.address.result ?? [];\r\n }\r\n );\r\n\r\n this._setBillingAddress();\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets address format for exclude list.\r\n * @returns - Address item type.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Gets state provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n void this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Initialize module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this.isBillingAddressRequried ? 'updating' : 'disabled'\r\n });\r\n\r\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\r\n\r\n if (this.isBillingAddressRequried) {\r\n if (billingAddress) {\r\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\r\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\r\n this._updateModuleState();\r\n } else if (this.isCartContainsItemsForShipping) {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Show, undefined);\r\n\r\n const {\r\n resources: { noBillingErrorMessage }\r\n } = this.props;\r\n\r\n this.setError(noBillingErrorMessage, true);\r\n } else {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Sets default country region Id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n @computed private get isCartContainsItemsForShipping(): boolean {\r\n const { request } = this.props.context;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\r\n\r\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\r\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\r\n ? false\r\n : retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.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) || []).some(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 @computed private get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\r\n }\r\n\r\n @computed private get getGiftCardTotalAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.giftCardExtends) {\r\n return 0;\r\n }\r\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\r\n return count + (giftCard.Balance || 0);\r\n }, 0);\r\n }\r\n\r\n @computed private get getCustomerAccountAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n const defaultAmount = 0;\r\n\r\n return checkoutState?.customerAccountAmount ?? defaultAmount;\r\n }\r\n\r\n @computed private get shouldPaidByCard(): boolean {\r\n const {\r\n data: { checkout },\r\n config\r\n } = this.props;\r\n if (!checkout.result) {\r\n return false;\r\n }\r\n\r\n const checkoutResult = checkout.result;\r\n const cart = checkoutResult.checkoutCart.cart;\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\r\n return false;\r\n }\r\n\r\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\r\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\r\n\r\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\r\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\r\n\r\n return amountDue > 0 && !isPaidByOtherPaymentSource;\r\n }\r\n\r\n @computed private get isBillingAddressRequried(): boolean {\r\n return this.shouldPaidByCard;\r\n }\r\n\r\n private readonly setError = (errorMessage: string | undefined, hasError: boolean): void => {\r\n this.props.moduleState.setHasError(hasError);\r\n this.setState({ errorMessage });\r\n };\r\n\r\n private renderErrorMessage = (): React.ReactNode => (\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n );\r\n\r\n /**\r\n * Sets billing address.\r\n * @param address - The address.\r\n */\r\n private readonly _setBillingAddress = (): void => {\r\n if (this.props.data.checkout.result) {\r\n const addressTypeId = 1;\r\n const addressCount = this.addresses.filter((address: Address) => address.AddressTypeValue === addressTypeId).length;\r\n\r\n // Only set billing address if there is one Invoice address\r\n if (addressCount === 1) {\r\n const address = this.addresses.find(address => address.AddressTypeValue === addressTypeId);\r\n this.selectedAddress = address ? address : this.selectedAddress;\r\n\r\n const newBillingAddress: Address = { ...address };\r\n\r\n if (address?.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\r\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(\r\n address?.ThreeLetterISORegionName\r\n );\r\n }\r\n\r\n void this.props.data.checkout.result.updateBillingAddress({\r\n newBillingAddress,\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\r\n }\r\n });\r\n\r\n this.setError(undefined, false);\r\n } else {\r\n // Remove the billing address and set appropriate error message\r\n this.selectedAddress = undefined;\r\n void this.props.data.checkout.result.removeBillingAddress({\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: false\r\n }\r\n });\r\n\r\n const {\r\n resources: { noBillingErrorMessage, multipleBillingErrorMessage }\r\n } = this.props;\r\n\r\n this.setError(addressCount === 0 ? noBillingErrorMessage : multipleBillingErrorMessage, true);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - Address operation\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\r\n }\r\n };\r\n\r\n /**\r\n * Updates the module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutBillingAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/checkout-billing-address/../../common/components/address-show';\r\nimport { ICheckoutBillingAddressViewProps } from './b2b-checkout-billing-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Billing Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutBillingAddress Module.\r\n */\r\nconst CheckoutBillingAddressView: React.FC = props => {\r\n const { CheckoutBillingAddress, viewState, showAddress, error } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isError && error}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutBillingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\r\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IEveCheckoutShippingAddressResources } from '../eve-checkout-shipping-address.props.autogenerated';\r\n\r\n/**\r\n * The cartline product interface.\r\n */\r\nexport interface ICartLineWithProduct {\r\n cartLine: CartLine;\r\n product?: SimpleProduct;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline interface.\r\n */\r\nexport interface ICheckoutShippingCartLineInfo {\r\n lineId: string;\r\n imageProps: IImageProps;\r\n quantity: number;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline props.\r\n */\r\nexport interface ICheckoutShippingCartLinesProps {\r\n moduleClassName: string;\r\n cartLines: ICheckoutShippingCartLineInfo[];\r\n title: string;\r\n itemTitle: string;\r\n resources: IEveCheckoutShippingAddressResources;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\r\nexport const CheckoutPickupCartLines: React.FC = ({\r\n moduleClassName,\r\n cartLines,\r\n title,\r\n itemTitle,\r\n resources\r\n}) => {\r\n const context = ({\r\n gridSettings: {\r\n xs: { w: 767 },\r\n sm: { w: 991 },\r\n md: { w: 1199 },\r\n lg: { w: 1599 },\r\n xl: { w: 1600 }\r\n }\r\n } as unknown) as IRequestContext;\r\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\r\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\r\n\r\n if (!ArrayExtensions.hasElements(cartLines)) {\r\n return null;\r\n }\r\n const quantity = 1;\r\n return (\r\n
\r\n
\r\n
{title}
\r\n
{itemTitle}
\r\n
\r\n
\r\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\r\n const isShowQty = cartLine.quantity > quantity;\r\n let className = `${moduleClassName}__group-images-lines-product`;\r\n const role = 'text';\r\n if (isShowQty) {\r\n className = classnames(className, ' product-image-wide');\r\n }\r\n return (\r\n
\r\n \r\n {isMobileView\r\n ? isShowQty && (\r\n \r\n {cartLine.quantity}\r\n
\r\n )\r\n : isShowQty && (\r\n
\r\n )}\r\n {!isMobileView && isShowQty && (\r\n \r\n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\r\n \r\n )}\r\n
\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * The checkout shipping cartline image settings.\r\n */\r\nexport const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\r\n },\r\n lazyload: true,\r\n quality: 80\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n Address,\r\n AddressPurpose,\r\n CartLine,\r\n CountryRegionInfo,\r\n SimpleProduct,\r\n StateProvinceInfo,\r\n TenderLine,\r\n TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getFallbackImageUrl, getSimpleProducts, ObjectExtensions, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AutoSuggest } from '@msdyn365-commerce-modules/address';\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemType } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressSelect, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressShow, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { IEveCheckoutShippingAddressData } from './eve-checkout-shipping-address.data';\r\nimport { IEveCheckoutShippingAddressProps } from './eve-checkout-shipping-address.props.autogenerated';\r\nimport {\r\n CheckoutPickupCartLines,\r\n defaultImageSettings,\r\n ICartLineWithProduct,\r\n ICheckoutShippingCartLineInfo,\r\n ICheckoutShippingCartLinesProps\r\n} from './components/checkout-shipping-cartlines-images';\r\n\r\n/**\r\n * The checkout address props interface.\r\n */\r\nexport interface ICheckoutAddressProps extends IEveCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\n/**\r\n * The checkout shipping address view state.\r\n */\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\n/**\r\n * The checkout shipping address state.\r\n */\r\nexport interface ICheckoutAddresState {\r\n shippingGroups: ICartLineWithProduct[];\r\n}\r\n\r\n/**\r\n * The checkout shipping address view props.\r\n */\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n cartLineImages?: React.ReactNode;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\r\n showAddressSelectHandler?(\r\n onAddAddressHandler?: () => void,\r\n onSaveHandler?: () => void,\r\n onCancelHandler?: () => void\r\n ): IAddressSelectProps;\r\n}\r\n\r\n/**\r\n * IExpressPaymentDetail interface.\r\n */\r\ninterface IExpressPaymentDetails {\r\n email?: string;\r\n tenderLine?: TenderLine;\r\n tokenizedPaymentCard?: TokenizedPaymentCard;\r\n paymentTenderType?: string;\r\n address?: Address;\r\n isExpressCheckoutAppliedInCartPage: boolean;\r\n isExpressAddressAppliedInCartPage?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private customerAddresses: Address[] = [];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n @observable private isUpdating?: boolean;\r\n\r\n @observable private hasError?: boolean;\r\n\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat!: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n public constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n this.state = { shippingGroups: [] };\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\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 }\r\n\r\n /**\r\n * Initialize pickup group.\r\n */\r\n @action\r\n private readonly _initPickupGroup = async (): Promise => {\r\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\r\n const cartLines: ICartLineWithProduct[] = [];\r\n\r\n try {\r\n const products = await this._getProductsByCartLines(\r\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\r\n pickupCartLines\r\n );\r\n for (const line of pickupCartLines) {\r\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\r\n cartLines.push({ cartLine: line, product });\r\n }\r\n this.setState({ shippingGroups: cartLines });\r\n } catch (error) {\r\n this.props.telemetry.error(error as string);\r\n this.setState({ shippingGroups: [] });\r\n }\r\n };\r\n\r\n /**\r\n * On suggestion selected.\r\n * @param result - Suggestion result interface.\r\n */\r\n @action\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n const timeout = 0;\r\n set(this.addUpdateAddress, { Street: '' });\r\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n set(this.addUpdateAddress, { City: address.City });\r\n set(this.addUpdateAddress, { State: address.State });\r\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, timeout);\r\n };\r\n\r\n /**\r\n * Method to clear address fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n for (const formatAddress of addressFormatItem) {\r\n if (\r\n this.addUpdateAddress[formatAddress.name] !== undefined &&\r\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\r\n ) {\r\n this.addressFormat[formatAddress.name] = '';\r\n }\r\n }\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Method to clear validation.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\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) as IExpressPaymentDetails) : null;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions },\r\n resources\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\r\n () => {\r\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\r\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\r\n\r\n if (address?.TwoLetterISORegionName) {\r\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\r\n\r\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n }\r\n\r\n this._updateCurrentOperation(AddressOperation.Add, address);\r\n this._onAddressAddUpdateSubmit();\r\n }\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n await this._initPickupGroup();\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): 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 if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { config, context, renderView, resources } = this.props;\r\n const { headingImages, itemsText, singleItemText } = resources;\r\n const { imageSettings } = config;\r\n\r\n // Line images\r\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\r\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\r\n .map(line => ({\r\n lineId: line.cartLine.LineId ?? '',\r\n imageProps: {\r\n requestContext: context.actionContext.requestContext,\r\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\r\n altText: line.product?.Name,\r\n src: line.product?.PrimaryImageUrl ?? '',\r\n fallBackSrc: getFallbackImageUrl(line.product?.ItemId, context.actionContext.requestContext.apiSettings),\r\n gridSettings: context.request.gridSettings!,\r\n imageSettings: imageSettings ?? defaultImageSettings,\r\n loadFailureBehavior: 'empty'\r\n },\r\n quantity: line.cartLine.Quantity ?? 0\r\n }));\r\n\r\n const quantity = 1;\r\n const itemText = cartlines.length > quantity ? itemsText : singleItemText;\r\n\r\n const lineImageProps: ICheckoutShippingCartLinesProps = {\r\n moduleClassName: 'ms-checkout-shipping-address',\r\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\r\n itemTitle: `(${format(itemText, cartlines.length)})`,\r\n title: headingImages,\r\n resources: this.props.resources\r\n };\r\n\r\n const cartLineImages: React.ReactNode = ;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { featureState } = this.props.data;\r\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n\r\n /**\r\n * Show address select.\r\n * @param onAddAddressHandler - On add address click function.\r\n * @param onSaveHandler - On save click function.\r\n * @param onCancelHandler - On cancel click function.\r\n * @returns - Renders select address.\r\n */\r\n showAddressSelectHandler: (onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void) =>\r\n this._renderSelectAddress(onAddAddressHandler, onSaveHandler, onCancelHandler),\r\n\r\n /**\r\n * Show add/update address.\r\n * @param onSaveHandler - On save click function.\r\n * @param onCancelHandler - On cancel click function.\r\n * @returns - Renders select address.\r\n */\r\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\r\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\r\n showAddressSelect: this._renderSelectAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.customerAddresses = data.address.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.featureState.result,\r\n () => {\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get cart lines for delivery.\r\n * @returns The cart line collection.\r\n */\r\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\r\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param line -The cart line.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isDelivery = (line: CartLine): boolean => {\r\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param deliveryMode -The delivery mode.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\r\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\r\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\r\n pickupMode => pickupMode !== deliveryMode\r\n );\r\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\r\n }\r\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param channelId - The channelId.\r\n * @param cartLines - Cart line collections.\r\n * @returns Collection of SimpleProduct.\r\n */\r\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\r\n const actionContext = this.props.context.actionContext;\r\n const productInputs = cartLines\r\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\r\n .map(\r\n line =>\r\n new ProductInput(\r\n line.ProductId || 0,\r\n actionContext.requestContext.apiSettings,\r\n channelId,\r\n undefined,\r\n actionContext.requestContext\r\n )\r\n );\r\n return getSimpleProducts(productInputs, actionContext);\r\n };\r\n\r\n /**\r\n * Method to render add/update address.\r\n * @param onSaveHandler -- Handles onsave functionality.\r\n * @param onCancelHandler -- Handles oncancel functionality.\r\n * @returns Address app/update props.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n\r\n /**\r\n * On Cancel Button Function.\r\n */\r\n const onCancelButtonHandler = () => {\r\n this._resetView();\r\n onCancelHandler?.();\r\n };\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n\r\n /**\r\n * On Save Function.\r\n */\r\n onSave: () => {\r\n this.onSubmit();\r\n onSaveHandler?.();\r\n },\r\n\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\r\n });\r\n };\r\n\r\n /**\r\n * Method to render select address.\r\n * @param onAddAddressHandler - To handle add address button click.\r\n * @param onSaveHandler - To handle save button click.\r\n * @param onCancelHandler - To handle cancel button click.\r\n * @returns Select address props.\r\n */\r\n private readonly _renderSelectAddress = (\r\n onAddAddressHandler?: () => void,\r\n onSaveHandler?: () => void,\r\n onCancelHandler?: () => void\r\n ): IAddressSelectProps => {\r\n /**\r\n * On Cancel Button Function.\r\n */\r\n const onCancelButtonHandler = () => {\r\n this._resetView();\r\n onCancelHandler?.();\r\n };\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n\r\n /**\r\n * On Add Address Function.\r\n */\r\n onAddAddress: () => {\r\n this._goToAddAddress();\r\n onAddAddressHandler?.();\r\n },\r\n\r\n /**\r\n * On Save Function.\r\n */\r\n onSave: () => {\r\n this._onSelectAddress();\r\n onSaveHandler?.();\r\n },\r\n\r\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler\r\n });\r\n };\r\n\r\n /**\r\n * Method to render show address.\r\n * @returns Show address props.\r\n */\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n /**\r\n * Method gets called on address option change.\r\n * @param event - To get current option.\r\n */\r\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n * @param name - Address name field.\r\n * @param value - Address name value field.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * Method to get called on address update change.\r\n * @param event - Input element.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update dropdown change.\r\n * @param event - Select element.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update submit.\r\n */\r\n private readonly _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n let newAddress = (result.customerAddresses || []).find(\r\n add =>\r\n this.addUpdateAddress.Name === add.Name &&\r\n this.addUpdateAddress.Street === add.Street &&\r\n this.addUpdateAddress.State === add.State &&\r\n this.addUpdateAddress.City === add.City &&\r\n this.addUpdateAddress.ZipCode === add.ZipCode\r\n );\r\n if (!newAddress) {\r\n newAddress = result.address;\r\n newAddress = { ...newAddress, ...this.addUpdateAddress };\r\n }\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n if (result.customerAddresses) {\r\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: newAddress });\r\n } else {\r\n this._onAddOrUpdateSuccess({ address: newAddress });\r\n }\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get called on country change.\r\n * @param countryRegionId - Country region id.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Method to get all address format exclude list.\r\n * @returns Collection of address items.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Method to get all state/provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Method to set default country region id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n /**\r\n * Method to get default address region id.\r\n * @returns - Address object from existing addresses.\r\n */\r\n private readonly _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Method to get address from express payment details from cart page.\r\n * @returns - Address.\r\n */\r\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\r\n if (this.expressPaymentDetailsFromCartPage) {\r\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\r\n\r\n let addressFromCartExpress: Address | undefined;\r\n\r\n if (isExpressAddressAppliedInCartPage) {\r\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\r\n } else {\r\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\r\n }\r\n\r\n return addressFromCartExpress;\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Get address from tokenizedPaymentCard.\r\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\r\n * @returns The address.\r\n */\r\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\r\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\r\n\r\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n\r\n const address: Address = {\r\n TwoLetterISORegionName: twoLetterIsoRegionName,\r\n Name: tokenizedPaymentCard.NameOnCard,\r\n Street: tokenizedPaymentCard.Address1,\r\n StreetNumber: tokenizedPaymentCard.Address2,\r\n City: tokenizedPaymentCard.City,\r\n State: tokenizedPaymentCard.State,\r\n ZipCode: tokenizedPaymentCard.Zip,\r\n Phone: tokenizedPaymentCard.Phone,\r\n ThreeLetterISORegionName: threeLetterIsoRegionName,\r\n AddressTypeValue: this.defaultAddressType\r\n };\r\n\r\n return address;\r\n };\r\n\r\n /**\r\n * Get address from expressAddress.\r\n * @param expressAddress -- The expressAddress.\r\n * @returns The address.\r\n */\r\n private readonly getExpressAddress = (expressAddress: Address): Address => {\r\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\r\n\r\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n\r\n const address: Address = {\r\n ...expressAddress,\r\n ThreeLetterISORegionName: threeLetterIsoRegionName,\r\n AddressTypeValue: this.defaultAddressType\r\n };\r\n\r\n return address;\r\n };\r\n\r\n /**\r\n * Get three letter ISO region name from two letter ISO region name.\r\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\r\n * @returns The three letter ISO region name.\r\n */\r\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\r\n const countryRegion = this.countryRegions.find(country => {\r\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\r\n });\r\n\r\n return countryRegion?.CountryRegionId;\r\n };\r\n\r\n /**\r\n * Method to initialize all module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n const checkoutState = this.props.data.checkout.result;\r\n\r\n if (this._canShip()) {\r\n let defaultAddress;\r\n\r\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\r\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\r\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\r\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\r\n } else if (this._getDefaultAddress()) {\r\n defaultAddress = this._getDefaultAddress();\r\n } else {\r\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\r\n }\r\n\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on submit address.\r\n */\r\n private readonly onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on cancel.\r\n */\r\n private readonly onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on edit address.\r\n */\r\n private readonly onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Method to check if checkout cartlines are available fro shipping.\r\n * @returns - True/false as per the delivery mode.\r\n */\r\n private readonly _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\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 if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-expect-error: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout.result.checkoutCart.cart.CartLines?.some(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 /**\r\n * Method get called on select address.\r\n */\r\n private readonly _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Method get called on goto add address.\r\n */\r\n private readonly _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n /**\r\n * Method get called on add/update success.\r\n * @param response - Retail api response.\r\n */\r\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on set Shipping Address.\r\n * @param address - Retail Api address result.\r\n */\r\n private readonly _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\r\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\r\n this.props.telemetry.error(error);\r\n });\r\n }\r\n };\r\n\r\n @computed private get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result?.shippingAddress;\r\n }\r\n\r\n /**\r\n * Method get called on reset view.\r\n */\r\n private readonly _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - The address operation.\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n /**\r\n * Update module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n /**\r\n * Method to check if the customer already has the address.\r\n * @param address - The address.\r\n */\r\n private readonly _isNewAddress = (address: Address): boolean => {\r\n for (const existingAddress of this.customerAddresses) {\r\n if (\r\n (address.Name ?? '') === existingAddress.Name &&\r\n (address.Street ?? '') === existingAddress.Street &&\r\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\r\n (address.City ?? '') === existingAddress.City &&\r\n (address.State ?? '') === existingAddress.State &&\r\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\r\n (address.Phone ?? '') === existingAddress.Phone &&\r\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\r\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt 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\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './eve-checkout-shipping-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync, IDictionary, TelemetryEvent } from '@msdyn365-commerce/core';\r\n// @ts-ignore\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@msdyn365-commerce-modules/cart';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick,getTelemetryAttributes, getTelemetryObject,\r\n ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\r\n\r\nimport { ICartIconProps as ICartIconExtensionProps } from '../definition-extensions/cart-icon.ext.props.autogenerated';\r\n\r\n/**\r\n * ICartIconViewState: Interface for Cart Icon View State.\r\n */\r\ninterface ICartIconViewState {\r\n isModalOpen: boolean;\r\n isCartValid: boolean;\r\n isQuantityLimitsFeatureEnabled: boolean;\r\n}\r\n\r\n/**\r\n * Render Cart lines.\r\n * @param cartLines - Flyout cart line view props.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\r\n if (!cartLines) {\r\n props.context.telemetry.error('Cartlines content is empty, module wont render');\r\n return null;\r\n }\r\n return cartLines.map((cartLine, index) => {\r\n const cartLineIndex = index;\r\n return (\r\n \r\n \r\n {cartLine.cartline}\r\n \r\n {cartLine.remove}\r\n {cartLine.storeLocation}\r\n \r\n );\r\n });\r\n};\r\n\r\n/**\r\n * Initiate total price.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n const cart = props.data.cart.result ?? undefined;\r\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\r\n const totalPrice = price ? props.context.cultureFormatter.formatCurrency(price) : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\r\n return (\r\n
\r\n \r\n {props.resources.totalPriceFormatString?.replace('{price}' , '')}\r\n \r\n {totalPrice}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n *\r\n * CartIconView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CartIconView extends React.PureComponent, ICartIconViewState> {\r\n\r\n private isAutoDisplayTriggered: boolean;\r\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\r\n private lastValidatedCartVersion: number | undefined;\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\r\n super(props);\r\n this.isAutoDisplayTriggered = false;\r\n this.state = {\r\n isModalOpen: false,\r\n isCartValid: true,\r\n isQuantityLimitsFeatureEnabled: false\r\n };\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\r\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\r\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\r\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('keydown', this._escFunction, false);\r\n }\r\n this._validateCart();\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n this._validateCart();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n private _removeCommentFromCartLine(): void {\r\n const cartState = this.props.data.cart.result || undefined;\r\n\r\n if (cartState) {\r\n if ((!cartState.cart.CartLines || cartState.cart.CartLines?.length === 0) && cartState.cart.Comment) {\r\n const _clonedCart = { ...cartState.cart };\r\n _clonedCart.Comment = \"\";\r\n\r\n void cartState.updateCart({newCartObject: _clonedCart});\r\n }\r\n }\r\n }\r\n\r\n private _renderGuestCheckout(hasError: boolean,guestCheckoutUrl: string) {\r\n return(\r\n \r\n {this.props.resources.guestCheckoutButtonTitle}\r\n \r\n );\r\n }\r\n\r\n private _validateCart(): void {\r\n const {\r\n data: { cart }\r\n } = this.props;\r\n const cartVersion = cart.result?.cart?.Version ?? undefined;\r\n if (this.lastValidatedCartVersion === cartVersion) {\r\n return;\r\n }\r\n\r\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\r\n validateCartAsync(cart, this.props.telemetry, this.props.context)\r\n .then((result) => {\r\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\r\n })\r\n .catch(() => {\r\n this.setState({ isCartValid: false });\r\n });\r\n }\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @returns JSX Element.\r\n */\r\n public render(): JSX.Element | null {\r\n this._removeCommentFromCartLine();\r\n const cart = this.props.data.cart.result ?? undefined;\r\n const cartlines = this.props.cartlines;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\r\n const shouldShowMiniCart = cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\r\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\r\n const hasError = !this.state.isCartValid || (cartlines ? cartlines.some(cartline => cartline.hasError) : false);\r\n if (shouldShowMiniCart) {\r\n if (!this.isAutoDisplayTriggered) {\r\n // First time trigger auto mini cart.\r\n this.setState({ isModalOpen: true });\r\n this.isAutoDisplayTriggered = true;\r\n } else if (!this.state.isModalOpen) {\r\n // If modal is closed, reset the flag.\r\n this.isAutoDisplayTriggered = false;\r\n }\r\n }\r\n return (\r\n \r\n \r\n {this.props.cartIcon}\r\n \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n \r\n {renderCartlines(cartlines, this.props)}\r\n \r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

\r\n {this.props.resources.subTotalMessage}\r\n

\r\n {/* {this.props.checkoutAsSignInUserButton} */}\r\n {/* {this.props.checkoutAsGuestButton} */}\r\n {cartlines && cartlines.length > 0 ? this._renderGuestCheckout(hasError, guestCheckoutUrl) : null}\r\n\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {\r\n this.props.data.cart.result?.isEmpty ? \r\n {this.props.resources.continueShoppingButtonTitle}\r\n : null\r\n }\r\n \r\n
\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartItemCount = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n let cartItemCount;\r\n const defaultCartItemCount: number = 0;\r\n const defaultCartItemCountOne: number = 1;\r\n\r\n if (ArrayExtensions.hasElements(props.cartlines)) {\r\n if (props.cartlines.length === defaultCartItemCountOne) {\r\n cartItemCount = `${defaultCartItemCountOne} ${props.resources.item}`;\r\n } else {\r\n cartItemCount = `${props.cartlines.length} ${props.resources.items}`;\r\n }\r\n } else {\r\n cartItemCount = `${defaultCartItemCount} ${props.resources.items}`;\r\n }\r\n return (\r\n \r\n {cartItemCount}\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Handle escape click to close modal.\r\n * @param event - On press of any key.\r\n */\r\n private readonly _escFunction = (event: KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Escape && this.state.isModalOpen) {\r\n this.closeModal();\r\n }\r\n };\r\n\r\n}\r\n\r\nexport default CartIconView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport MsDyn365, { getUrlSync } from \"@msdyn365-commerce/core\";\r\nimport { IHeaderViewProps, Logo } from '@msdyn365-commerce-modules/header';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\n\r\n\r\n/**\r\n * GridSizes.\r\n */\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n *\r\n * HeaderView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class HeaderView extends React.PureComponent> {\r\n private readonly menuNode: React.RefObject;\r\n\r\n public constructor(props: IHeaderViewProps & IHeaderProps<{}>) {\r\n\r\n super(props);\r\n this.menuNode = React.createRef();\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.useStickyHeader) {\r\n // Set header update methods to trigger on scroll\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('scroll', () => {\r\n this._configureStickyHeader();\r\n });\r\n }\r\n this._configureStickyHeader();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider, MobileMenuContainer, MobileMenuBodyContainer, MobileMenuLinksContainer\r\n , config: { showQuickOrderLink, showPhoneNumber, phoneNumber }\r\n } = this.props;\r\n \r\n const quickOrderUrl = getUrlSync('quickorder', this.props.context.actionContext);\r\n return (\r\n \r\n \r\n \r\n\r\n
\r\n {this.props.navIcon}\r\n
\r\n
\r\n {this.props.logo}\r\n {showPhoneNumber == \"yes\" && phoneNumber ? this._renderPhoneNumber(this.props) : null}\r\n
\r\n
\r\n
\r\n {this._renderReactFragment(this.props.menuBar)}\r\n
\r\n {this._renderMobileLogo()}\r\n {this._renderReactFragment(this.props.search)}\r\n {this.props.preferredStore}\r\n {this._renderAccountBlock(this.props)}\r\n \r\n {showQuickOrderLink ? this._renderQuickViewIcon(quickOrderUrl || '#') : null}\r\n {this.props.cartIcon}\r\n {this._renderReactFragment(this.props.siteOptions)}\r\n
\r\n\r\n
\r\n \r\n \r\n { this.props.MobileMenuHeader }\r\n {this._renderReactFragment(this.props.menuBar)}\r\n \r\n { this.props.accountLinks ? this.props.accountLinks.map(link => link) : false }\r\n { this.props.siteOptions }\r\n { this.props.wishListIconMobile }\r\n { this.props.signInLink }\r\n { this.props.signOutLink }\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Function to render phone number beside the logo.\r\n * @param props - IHeaderProps.\r\n * @returns Returns JSX.Element | null.\r\n */\r\n private _renderPhoneNumber(props: IHeaderProps<{}>): JSX.Element | null {\r\n const { config: { phoneNumber } } = props;\r\n const telephoneLink: string = `tel:+1-${phoneNumber}`;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderQuickViewIcon = (quickOrderLink: string) => (\r\n \r\n )\r\n\r\n /**\r\n * Function to update header.\r\n */\r\n private readonly _configureStickyHeader = (): void => {\r\n // Get heights of cookie and promotion banners\r\n const defaultValue = 0;\r\n const headerAlertsContainer: HTMLElement | null = document.querySelector('.ms-promo-banner');\r\n const bannerHeights = headerAlertsContainer ? headerAlertsContainer.offsetHeight : defaultValue;\r\n\r\n // Triggers opacity change of header\r\n const headerElement = document.querySelector('header .default-container');\r\n if (headerElement) {\r\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > defaultValue) {\r\n headerElement.classList.add('lock-opaque');\r\n headerElement.classList.add('fixed');\r\n } else {\r\n headerElement.classList.remove('lock-opaque');\r\n headerElement.classList.remove('fixed');\r\n }\r\n }\r\n\r\n // Update sticky header position and opacity\r\n const stickyHeader: HTMLElement | null = document.querySelector('.desktop-navicon-container');\r\n const headerLogo: HTMLElement | null = document.querySelector('.ms-header__logo');\r\n\r\n if (stickyHeader && headerLogo) {\r\n // Fix center sticky header\r\n const navStickyPos = headerLogo.offsetHeight + bannerHeights;\r\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > navStickyPos) {\r\n stickyHeader.classList.add('fixed');\r\n } else {\r\n stickyHeader.classList.remove('fixed');\r\n }\r\n }\r\n };\r\n\r\n private _renderMobileLogo(): JSX.Element | null {\r\n const { config, context, typeName } = this.props;\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to render account block.\r\n * @param props - IHeaderViewProps.\r\n * @returns Returns JSX.Element | null.\r\n */\r\n private readonly _renderAccountBlock = (props: IHeaderViewProps): JSX.Element | null => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { AccountInfoDropdownParentContainer, AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(AccountInfoDropdownParentContainer.className, 'account-desktop');\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false }\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Function to render react fragment.\r\n * @param items - React nodes.\r\n * @returns Returns JSX.Element | null.\r\n */\r\n private readonly _renderReactFragment = (items: React.ReactNode[]): JSX.Element | null => {\r\n return (\r\n <>\r\n {ArrayExtensions.hasElements(items) ? items.map((slot: React.ReactNode) => {\r\n return (<>\r\n {slot}\r\n );\r\n }) : null}\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default HeaderView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport { IOrderTemplateNameDialogResources } from \"@msdyn365-commerce/components\";\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n console.log(createOrderTemplateButton)\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
\r\n

\r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

\r\n

\r\n {props.resources.textForEmptyOrderTemplateList}\r\n

\r\n {createOrderTemplateButton}\r\n
\r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n
\r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { RatingComponent } from '@msdyn365-commerce/components';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport { IHistogramItemViewProps,\r\n IRatingsHistogramData,\r\n IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { format, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IRatingsHistogramProps, IRatingsHistogramResources } from '../definition-extensions/ratings-histogram.ext.props.autogenerated';\r\n\r\n/**\r\n * Histogram item.\r\n * @param props - Histogram Item ViewProps.\r\n * @returns Histogram Item node.\r\n */\r\nconst histogramItem = (props: IHistogramItemViewProps) => {\r\n return (\r\n \r\n {props.starLabel}\r\n {props.bar}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Average ratings.\r\n * @param data - Props data.\r\n * @param context - Histogram Item ViewProps.\r\n * @param typeName - Histogram Item ViewProps.\r\n * @param componentId - Histogram Item ViewProps.\r\n * @param resources - Module resource strings.\r\n * @returns Average ratings.\r\n */\r\nconst averageRating = (data: IRatingsHistogramData, context: ICoreContext, typeName: string, componentId: string, resources: IRatingsHistogramResources) => {\r\n const defaultAverageRating: number = 0;\r\n const reviewsCount = data.ratingsSummary.result?.reviewsCount ?? defaultAverageRating;\r\n const reviewsCountString = resources.numberOfReviewsString ? format(resources.numberOfReviewsString, reviewsCount) : `${reviewsCount} reviews`;\r\n\r\n return (\r\n
\r\n
\r\n {data.ratingsSummary.result?.averageRating}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {reviewsCountString}\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Histogram view.\r\n * @param props - Ratings HistogramV iewProps.\r\n * @returns Histogram view module.\r\n */\r\nconst RatingsHistogramView: React.FC> = props => {\r\n const { heading, histogramItems, histogramProps, moduleProps, data, resources } = props;\r\n const context = props.context;\r\n const typeName = props.typeName;\r\n const moduleId = props.id;\r\n\r\n return (\r\n \r\n {heading}\r\n
\r\n {averageRating(data, context, typeName, moduleId, resources)}\r\n \r\n {histogramItems.map(item => {\r\n return histogramItem(item);\r\n })}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RatingsHistogramView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\r\n// @ts-ignore\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@mdsdyn365-commerce-modules/cart';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n\r\nimport { ICartIconProps as ICartIconExtensionProps, ICartIconResources } from '../definition-extensions/cart-icon.ext.props.autogenerated';\r\nimport { readAsync } from \"@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g\";\r\nimport { Address } from \"@msdyn365-commerce/retail-proxy\";\r\nimport { CartLine, CommerceProperty } from '@msdyn365-commerce/retail-proxy';\r\nimport { CommercePropertyValueEnum } from '../../../modules/allowable-freight/utils/CommercePropertyValueEnum';\r\n\r\n/**\r\n * ICartIconViewState: Interface for Cart Icon View State.\r\n */\r\ninterface ICartIconViewState {\r\n isModalOpen: boolean;\r\n isAddressCheckComplete: boolean;\r\n isErrModalOpen: boolean;\r\n iProductsPresentVersion: number;\r\n}\r\n\r\nconst renderInvoiceInCartMsg = (resources: ICartIconResources): JSX.Element | null => {\r\n\r\n return (\r\n \r\n \r\n {resources.invoiceInCartMessage}\r\n \r\n ) \r\n\r\n}\r\n\r\n/**\r\n * Render Cart lines.\r\n * @param cartLines - Flyout cart line view props.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element[] | null => {\r\n if (props.data.cart.result?.hasInvoiceLine) {\r\n\r\n return (\r\n [\r\n {renderInvoiceInCartMsg(props.resources)}\r\n \r\n ]);\r\n }\r\n\r\n if (!cartLines ) {\r\n props.context.telemetry.error('Cartlines content is empty, module wont render');\r\n return null;\r\n }\r\n \r\n if (MsDyn365.isBrowser) {\r\n document.addEventListener('UPDATE_CART', (data: any) => {\r\n if (data.detail.Products?.length) {\r\n const cartState = props.data.cart.result;\r\n cartState?.removeCartLines({ cartLineIds: data.detail.Products.map((p: any) => p.LineId) });\r\n }\r\n });\r\n }\r\n\r\n return cartLines.map((cartLine, index) => {\r\n const cartLineIndex = index;\r\n return (\r\n \r\n \r\n {cartLine.cartline}\r\n \r\n {cartLine.remove}\r\n {cartLine.storeLocation}\r\n \r\n );\r\n });\r\n};\r\n\r\n/**\r\n * Initiate total price.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n const cart = props.data.cart.result ?? undefined;\r\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\r\n const totalPrice = price ? props.context.cultureFormatter.formatCurrency(price) : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\r\n return (\r\n
\r\n \r\n {props.resources.totalPriceFormatString?.replace('{price}', '')}\r\n \r\n {totalPrice}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n *\r\n * CartIconView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CartIconView extends React.PureComponent, ICartIconViewState> {\r\n\r\n private isAutoDisplayTriggered: boolean;\r\n private isErrAutoDisplayTriggered: boolean;\r\n\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\r\n super(props);\r\n this.isAutoDisplayTriggered = false;\r\n this.isErrAutoDisplayTriggered = false;\r\n this.state = {\r\n isModalOpen: false,\r\n isAddressCheckComplete: false,\r\n isErrModalOpen: false,\r\n iProductsPresentVersion: 0\r\n };\r\n\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n private _removeCommentFromCartLine(): void {\r\n const cartState = this.props.data.cart.result || undefined;\r\n\r\n if (cartState) {\r\n if ((!cartState.cart.CartLines || cartState.cart.CartLines?.length === 0) && cartState.cart.Comment) {\r\n const _clonedCart = { ...cartState.cart };\r\n _clonedCart.Comment = \"\";\r\n\r\n void cartState.updateCart({ newCartObject: _clonedCart });\r\n }\r\n }\r\n }\r\n\r\n private async getAddresses(): Promise
{\r\n if (this.props.context.request.user.isAuthenticated) {\r\n const customer = await readAsync({ callerContext: this.props.context.actionContext }, this.props.context.request.user.customerAccountNumber!)\r\n if (customer) {\r\n return customer.Addresses?.find(add => add.IsPrimary)\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private async handleCartAddress(): Promise {\r\n const cartState = this.props.data.cart.result;\r\n if (cartState) {\r\n this.setState({ isAddressCheckComplete: true })\r\n const hasAddress = !!cartState.cart.ShippingAddress\r\n // console.log(hasAddress, 'has address')\r\n if (!hasAddress) {\r\n const primaryAddress = await this.getAddresses()\r\n // console.log(primaryAddress, 'primary address')\r\n\r\n if (!!primaryAddress) {\r\n void await cartState.updateShippingAddress({ newShippingAddress: primaryAddress });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @returns JSX Element.\r\n */\r\n public render(): JSX.Element | null {\r\n this._removeCommentFromCartLine();\r\n const cart = this.props.data.cart.result ?? undefined;\r\n\r\n\r\n let iProductsPresent = this.getExtensionPropertyValueByKey(cart?.cart?.ExtensionProperties, \"not-eligible\", CommercePropertyValueEnum.string);\r\n // console.log(iProductsPresent)\r\n // console.log(this.state.iProductsPresentVersion, !!this.state.iProductsPresentVersion)\r\n if (!this.isErrAutoDisplayTriggered && typeof iProductsPresent === \"string\" && iProductsPresent !== \"[]\") {\r\n\r\n this.setState({ isErrModalOpen: true, iProductsPresentVersion: cart?.cart.Version || 0 })\r\n this.isErrAutoDisplayTriggered = true;\r\n }\r\n else if (!this.state.isErrModalOpen && cart?.cart.Version !== this.state.iProductsPresentVersion) {\r\n this.isErrAutoDisplayTriggered = false;\r\n\r\n }\r\n\r\n if (this.state.isErrModalOpen) {\r\n this.isAutoDisplayTriggered = true;\r\n }\r\n\r\n let ippContent;\r\n\r\n if (!!iProductsPresent) {\r\n try {\r\n ippContent =\r\n <>\r\n

{this.props.resources.ineligibleProductsText}

\r\n {(JSON.parse(iProductsPresent as string) as CartLine[]).map(r =>
  • {r.Barcode}: {r.Description}
  • )}\r\n ;\r\n } catch (err) {\r\n\r\n }\r\n }\r\n\r\n if (cart && !this.state.isAddressCheckComplete) {\r\n this.handleCartAddress();\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\r\n const shouldShowMiniCart = cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\r\n\r\n if (shouldShowMiniCart) {\r\n if (!this.isAutoDisplayTriggered) {\r\n // First time trigger auto mini cart.\r\n this.setState({ isModalOpen: true });\r\n this.isAutoDisplayTriggered = true;\r\n }\r\n else if (!this.state.isModalOpen) {\r\n // If modal is closed, reset the flag.\r\n this.isAutoDisplayTriggered = false;\r\n }\r\n }\r\n return (\r\n \r\n \r\n {this.props.cartIcon}\r\n \r\n \r\n {ippContent && ippContent}\r\n \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.slots.allowableFreight}\r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n \r\n {renderCartlines(this.props.cartlines, this.props)}\r\n \r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

    \r\n {this.props.resources.subTotalMessage}\r\n

    \r\n {this.props.checkoutAsSignInUserButton}\r\n {this.props.checkoutAsGuestButton}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {\r\n this.props.data.cart.result?.isEmpty ? \r\n {this.props.resources.continueShoppingButtonTitle}\r\n : null\r\n }\r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n\r\n private readonly _modalErrContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicarterrmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicarterrmodal',\r\n isOpen: this.state.isErrModalOpen,\r\n toggle: this.closeErrModal\r\n };\r\n };\r\n\r\n private readonly closeErrModal = (): void => {\r\n this.setState({\r\n isErrModalOpen: false\r\n });\r\n\r\n this.isAutoDisplayTriggered = true;\r\n\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartItemCount = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n let cartItemCount;\r\n const defaultCartItemCount: number = 0;\r\n const defaultCartItemCountOne: number = 1;\r\n\r\n if (ArrayExtensions.hasElements(props.cartlines)) {\r\n if (props.cartlines.length === defaultCartItemCountOne) {\r\n cartItemCount = `${defaultCartItemCountOne} ${props.resources.item}`;\r\n } else {\r\n cartItemCount = `${props.cartlines.length} ${props.resources.items}`;\r\n }\r\n } else {\r\n cartItemCount = `${defaultCartItemCount} ${props.resources.items}`;\r\n }\r\n return (\r\n \r\n {cartItemCount}\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Handle escape click to close modal.\r\n * @param event - On press of any key.\r\n */\r\n private readonly _escFunction = (event: KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Escape && this.state.isModalOpen) {\r\n this.closeModal();\r\n }\r\n };\r\n\r\n}\r\n\r\nexport default CartIconView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport MsDyn365, { getUrlSync } from \"@msdyn365-commerce/core\";\r\nimport { IHeaderViewProps, Logo } from '@msdyn365-commerce-modules/header';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { get } from 'lodash';\r\n\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\n\r\n\r\n/**\r\n * GridSizes.\r\n */\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n *\r\n * HeaderView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class HeaderView extends React.PureComponent> {\r\n private readonly menuNode: React.RefObject;\r\n public constructor(props: IHeaderViewProps & IHeaderProps<{}>) {\r\n\r\n super(props);\r\n this.menuNode = React.createRef();\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.useStickyHeader) {\r\n // Set header update methods to trigger on scroll\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('scroll', () => {\r\n this._configureStickyHeader();\r\n });\r\n }\r\n this._configureStickyHeader();\r\n }\r\n this.handleLoginRedirect();\r\n }\r\n\r\n private handleLoginRedirect() {\r\n const { context : {\r\n actionContext,\r\n request: {\r\n user: {\r\n isAuthenticated,\r\n isOBORequest\r\n }\r\n }\r\n }} = this.props;\r\n const isHomePage = actionContext.requestContext.url.requestUrl.pathname === '/';\r\n const customer = this.props.data.accountInformation?.result;\r\n if (isAuthenticated) {\r\n if (isHomePage) {\r\n if (isOBORequest && !customer) {\r\n window.location.href = getUrlSync('businesses', this.props.context.actionContext) || '/businesses';\r\n } else {\r\n window.location.href = getUrlSync('account', this.props.context.actionContext) || '/myaccount';\r\n }\r\n } else {\r\n const accountUrl = getUrlSync('account', this.props.context.actionContext);\r\n const logoAnchorTag = document.querySelector('.ms-header__logo>a');\r\n if (logoAnchorTag && accountUrl) {\r\n logoAnchorTag.href = accountUrl;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider, MobileMenuContainer, MobileMenuBodyContainer, MobileMenuLinksContainer\r\n , config: { showQuickOrderLink, showPhoneNumber, phoneNumber }\r\n } = this.props;\r\n const quickOrderUrl = getUrlSync('quickorder', this.props.context.actionContext);\r\n return (\r\n \r\n \r\n \r\n\r\n
    \r\n {this.props.navIcon}\r\n
    \r\n
    \r\n {this.props.logo}\r\n {showPhoneNumber == \"yes\" && phoneNumber ? this._renderPhoneNumber(this.props) : null}\r\n
    \r\n
    \r\n
    \r\n {this._renderReactFragment(this.props.menuBar)}\r\n
    \r\n {this._renderMobileLogo()}\r\n {this._renderReactFragment(this.props.search)}\r\n {this.props.preferredStore}\r\n {this._renderAccountBlock(this.props)}\r\n \r\n {showQuickOrderLink ? this._renderQuickViewIcon(quickOrderUrl || '#') : null}\r\n {this.props.cartIcon}\r\n {this._renderReactFragment(this.props.siteOptions)}\r\n
    \r\n\r\n
    \r\n \r\n \r\n { this.props.MobileMenuHeader }\r\n {this._renderReactFragment(this.props.menuBar)}\r\n \r\n { this.props.accountLinks ? this.props.accountLinks.map(link => link) : false }\r\n { this.props.siteOptions }\r\n { this.props.wishListIconMobile }\r\n { this.props.signInLink }\r\n { this.props.signOutLink }\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n /**\r\n * Function to render phone number beside the logo.\r\n * @param props - IHeaderProps.\r\n * @returns Returns JSX.Element | null.\r\n */\r\n private _renderPhoneNumber(props: IHeaderProps<{}>): JSX.Element | null {\r\n const { config: { phoneNumber } } = props;\r\n const telephoneLink: string = `tel:+1-${phoneNumber}`;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderQuickViewIcon = (quickOrderLink: string) => (\r\n \r\n )\r\n\r\n /**\r\n * Function to update header.\r\n */\r\n private readonly _configureStickyHeader = (): void => {\r\n // Get heights of cookie and promotion banners\r\n const defaultValue = 0;\r\n const headerAlertsContainer: HTMLElement | null = document.querySelector('.ms-promo-banner');\r\n const bannerHeights = headerAlertsContainer ? headerAlertsContainer.offsetHeight : defaultValue;\r\n\r\n // Triggers opacity change of header\r\n const headerElement = document.querySelector('header .default-container');\r\n if (headerElement) {\r\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > defaultValue) {\r\n headerElement.classList.add('lock-opaque');\r\n headerElement.classList.add('fixed');\r\n } else {\r\n headerElement.classList.remove('lock-opaque');\r\n headerElement.classList.remove('fixed');\r\n }\r\n }\r\n\r\n // Update sticky header position and opacity\r\n const stickyHeader: HTMLElement | null = document.querySelector('.desktop-navicon-container');\r\n const headerLogo: HTMLElement | null = document.querySelector('.ms-header__logo');\r\n\r\n if (stickyHeader && headerLogo) {\r\n // Fix center sticky header\r\n const navStickyPos = headerLogo.offsetHeight + bannerHeights;\r\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > navStickyPos) {\r\n stickyHeader.classList.add('fixed');\r\n } else {\r\n stickyHeader.classList.remove('fixed');\r\n }\r\n }\r\n };\r\n\r\n private _renderMobileLogo(): JSX.Element | null {\r\n const { config, context, typeName } = this.props;\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to render account block.\r\n * @param props - IHeaderViewProps.\r\n * @returns Returns JSX.Element | null.\r\n */\r\n private readonly _renderAccountBlock = (props: IHeaderViewProps): JSX.Element | null => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { AccountInfoDropdownParentContainer, AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks,\r\n context: { request: { user : { isOBORequest }} }\r\n } = props;\r\n if (AccountInfoDropdownParentContainer) {\r\n const changeUserSlug = 'Change User'; // Change user page\r\n let accountLinksFiltered: React.ReactNode[] = [];\r\n if (isOBORequest) { // If we're mocking a user, show the change user button, if we are not, remove it before render.\r\n accountLinksFiltered = accountLinks || [];\r\n } else if (accountLinks) {\r\n accountLinks.forEach(node => {\r\n const linkUrl = get(node, 'props.link.linkText');\r\n if (linkUrl && (linkUrl as string) !== changeUserSlug) {\r\n accountLinksFiltered.push(node);\r\n }\r\n })\r\n }\r\n const accountClassName = classnames(AccountInfoDropdownParentContainer.className, 'account-desktop');\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinksFiltered.map((link: React.ReactNode) => link) }\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Function to render react fragment.\r\n * @param items - React nodes.\r\n * @returns Returns JSX.Element | null.\r\n */\r\n private readonly _renderReactFragment = (items: React.ReactNode[]): JSX.Element | null => {\r\n return (\r\n <>\r\n {ArrayExtensions.hasElements(items) ? items.map((slot: React.ReactNode) => {\r\n return (<>\r\n {slot}\r\n );\r\n }) : null}\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default HeaderView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport { IOrderTemplateNameDialogResources } from \"@msdyn365-commerce/components\";\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n console.log(createOrderTemplateButton)\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
    \r\n

    \r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

    \r\n

    \r\n {props.resources.textForEmptyOrderTemplateList}\r\n

    \r\n {createOrderTemplateButton}\r\n
    \r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n
    \r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { RatingComponent } from '@msdyn365-commerce/components';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport { IHistogramItemViewProps,\r\n IRatingsHistogramData,\r\n IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { format, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IRatingsHistogramProps, IRatingsHistogramResources } from '../definition-extensions/ratings-histogram.ext.props.autogenerated';\r\n\r\n/**\r\n * Histogram item.\r\n * @param props - Histogram Item ViewProps.\r\n * @returns Histogram Item node.\r\n */\r\nconst histogramItem = (props: IHistogramItemViewProps) => {\r\n return (\r\n \r\n {props.starLabel}\r\n {props.bar}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Average ratings.\r\n * @param data - Props data.\r\n * @param context - Histogram Item ViewProps.\r\n * @param typeName - Histogram Item ViewProps.\r\n * @param componentId - Histogram Item ViewProps.\r\n * @param resources - Module resource strings.\r\n * @returns Average ratings.\r\n */\r\nconst averageRating = (data: IRatingsHistogramData, context: ICoreContext, typeName: string, componentId: string, resources: IRatingsHistogramResources) => {\r\n const defaultAverageRating: number = 0;\r\n const reviewsCount = data.ratingsSummary.result?.reviewsCount ?? defaultAverageRating;\r\n const reviewsCountString = resources.numberOfReviewsString ? format(resources.numberOfReviewsString, reviewsCount) : `${reviewsCount} reviews`;\r\n\r\n return (\r\n
    \r\n
    \r\n {data.ratingsSummary.result?.averageRating}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {reviewsCountString}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Histogram view.\r\n * @param props - Ratings HistogramV iewProps.\r\n * @returns Histogram view module.\r\n */\r\nconst RatingsHistogramView: React.FC> = props => {\r\n const { heading, histogramItems, histogramProps, moduleProps, data, resources } = props;\r\n const context = props.context;\r\n const typeName = props.typeName;\r\n const moduleId = props.id;\r\n\r\n return (\r\n \r\n {heading}\r\n
    \r\n {averageRating(data, context, typeName, moduleId, resources)}\r\n \r\n {histogramItems.map(item => {\r\n return histogramItem(item);\r\n })}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default RatingsHistogramView;\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 { 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\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 { 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\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 { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselData } from './carousel.data';\nimport { ICarouselProps } from './carousel.props.autogenerated';\nimport { ICarouselState } from './carousel.state';\n\nexport interface ICarouselViewProps extends ICarouselProps<{}>, ICarouselState {\n closeAnimation: string;\n carouselContainer: IModuleProps;\n telemetryContent: ITelemetryContent;\n next(): void;\n previous(): void;\n onIndicatorsClickHandler(): void;\n handleDismissCarousel(): void;\n handleOnExited(): void;\n handleOnExiting(): void;\n}\n\n/**\n *\n * CarouselModule component.\n * @extends {React.PureComponent>}\n */\nclass CarouselModule extends React.PureComponent, ICarouselState> {\n private animating: boolean;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: ICarouselProps, state: ICarouselState) {\n super(props);\n this.state = { activeIndex: 0, closeNow: false, dismissCarousel: false };\n this.animating = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n if (this.props.context.request.cookies.get(`CarouselDismiss_${this.props.id}`) === undefined) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'false');\n this.setState({ dismissCarousel: false });\n }\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.dismissCarousel) {\n return null;\n }\n\n const { className } = this.props.config;\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n ...this.state,\n telemetryContent: this.telemetryContent,\n carouselContainer: {\n moduleProps: this.props,\n className: classnames('ms-carousel', className)\n },\n closeAnimation: this.state.closeNow ? 'close-now' : '',\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n handleDismissCarousel: this._handleDismissCarousel,\n handleOnExited: this._onExited,\n handleOnExiting: this._onExiting\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function implementation to dismiss the Carousel.\n */\n private readonly _handleDismissCarousel = (): void => {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'true');\n this.setState({ dismissCarousel: true });\n }\n };\n\n /**\n * Function implementation to move to next slide.\n */\n private readonly _next = (): void => {\n const { slots } = this.props;\n const nextIndex = this.state.activeIndex === (slots && slots.content && slots.content.length - 1) ? 0 : this.state.activeIndex + 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n /**\n * Function implementation to move to previous slide.\n */\n private readonly _previous = (): void => {\n const slots = this.props.slots && this.props.slots.content;\n const nextIndex = this.state.activeIndex === 0 ? (slots ? slots.length - 1 : 0) : this.state.activeIndex - 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n private readonly _onExiting = (): void => {\n this.animating = true;\n };\n\n private readonly _onExited = (): void => {\n this.animating = false;\n this.setState({ closeNow: false });\n };\n\n /**\n * Function implementation to move to a given slide.\n * @param newIndex\n */\n private readonly _goToIndex = (newIndex: number): void => {\n if (this.animating) {\n return;\n }\n this.setState({ activeIndex: newIndex });\n };\n}\n\nexport default CarouselModule;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselViewProps } from './carousel';\n\n/**\n * Returns item slots.\n * @returns Array of item slots.\n * @param props -Props.\n */\nconst retrieveItems = (props: ICarouselViewProps): React.ReactNode[] => {\n let items = [];\n items = props.slots && props.slots.content && props.slots.content.length > 0 ? props.slots.content : [];\n return items;\n};\nconst CarouselView: React.FC = props => (\n \n \n \n);\n\nexport default CarouselView;\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 { 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 * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { labelText, value } = props;\n\n const className = `ms-checkout-delivery-options__cart-line-grp__item__header__address`;\n return (\n \n {labelText}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport React, { useState } from 'react';\n\nexport interface ICheckoutCartLineDeliveryDateProps {\n className?: string;\n isDisabled?: boolean;\n minRangeValue?: string;\n maxRangeValue?: string;\n validationErrorForRange?: string;\n fallbackPattern?: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n disclaimerText?: string;\n heading?: string;\n checkBoxLabel?: string;\n onChangeMinValue?: void;\n id?: string;\n cartLines?: CartLine[];\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n}\n\nconst CheckoutCartLineDeliveryDate: React.FC = ({\n className,\n isDisabled,\n fallbackPattern,\n ariaLabel,\n telemetryContent,\n onChangeMinValue,\n checkBoxLabel,\n disclaimerText,\n heading,\n cartLines,\n onChange\n}) => {\n const [selectedDate, setSelectedDate] = useState('');\n const [isDateEnabled, setIsDateEnabled] = useState(false);\n // State to store today's date\n const [minDate, setMinDate] = useState('');\n\n // Update minDate state with today's date on component mount\n useState(() => {\n const today = new Date().toISOString().split('T')[0];\n setMinDate(today);\n });\n\n const handleDateChange = (event: React.FocusEvent) => {\n const selectedValue = event.target.value;\n // Check if the selected date is allowed\n if (selectedValue >= minDate) {\n setSelectedDate(selectedValue);\n console.log('Selected date is allowed.', selectedValue);\n } else {\n console.log('Selected date is not allowed.');\n }\n\n if (cartLines !== undefined) {\n onChange(event, cartLines);\n }\n };\n\n const handleCheckboxChange = () => {\n setIsDateEnabled(!isDateEnabled);\n };\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
    \n
    \n \n {checkBoxLabel}\n
    \n {disclaimerText}\n
    \n {heading}\n \n
    \n
    \n );\n};\n\nexport default CheckoutCartLineDeliveryDate;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsGrpRadioButtonProps {\n className: string;\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsGrpRadioButton: React.FC = ({\n className,\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionRef: React.RefObject = React.createRef();\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsGrpRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport DescriptionComponent from './checkout-delivery-options.description';\nimport RadioButtonComponent from './checkout-cartLine-delivery-options-grp';\n\nexport interface ICheckoutCartLineDeliveryOptionsRadioButtonProps {\n className: string;\n moduleId: string;\n ariaSetSize: number;\n priceFree: string;\n ariaPosInSet: number;\n selectedItemId: string;\n cartLines: CartLine[];\n deliveryOptions: DeliveryOption[];\n typeName: string;\n context: ICoreContext>;\n ariaLabel?: string;\n value?: string;\n cartLineId?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[], cartLineId?: string): void;\n}\n\n/**\n * Represents a radio button component for checkout cart line delivery options.\n * @param {Object} props - The component props.\n * @param {boolean} props.isChecked - Indicates whether the radio button is checked.\n * @param {string} props.value - The value of the radio button.\n * @param {number} props.ariaSetSize - The total number of radio buttons in the set.\n * @param {number} props.ariaPosInSet - The position of the radio button in the set.\n * @param {string} props.ariaLabel - The ARIA label for the radio button.\n * @param {string} props.telemetryContent - The telemetry content for the radio button.\n * @param {Function} props.onChange - The event handler for when the radio button is changed.\n * @returns {JSX.Element} The rendered radio button component.\n */\nconst CheckoutCartLineDeliveryOptionsRadio: React.FC = ({\n className,\n moduleId,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n deliveryOptions,\n priceFree,\n selectedItemId,\n typeName,\n context,\n cartLines,\n cartLineId,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n console.log(attributes);\n const channelConfig = context.actionContext.requestContext.channel;\n const count = deliveryOptions.length;\n if (count === 0) {\n return null;\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n onChange(event, cartLines, cartLineId);\n },\n [onChange, cartLines, cartLineId]\n );\n // const selectedDeliveryOptionItem = deliveryOptions.length > 0 ? deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n const deliveryClassName = `${className}__radio-btn-grp`;\n const optionClassName = `${deliveryClassName}-opt`;\n const response = deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => (\n
    \n \n \n \n
    \n ));\n\n return
    {response}
    ;\n};\n\nexport default CheckoutCartLineDeliveryOptionsRadio;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { PriceComponent } from '@msdyn365-commerce/components';\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n CartLine,\n DeliveryOption,\n DeliveryPreferenceType,\n LineDeliverySpecification\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n GetDeliveryOptionsForCartLineAddressInput,\n getDeliveryOptionsForCartLineAddress,\n QueryResultSettingsProxy,\n StringExtensions,\n DeliveryOptionsCartLineAddress,\n ArrayExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport groupBy from 'lodash/groupBy';\n\nimport { IImageSettings } from '@msdyn365-commerce/core';\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { AddressDetailItemFunctionComponent } from './components/address-detail-item';\nimport CheckoutCartLineDeliveryDate from './components/checkout-cartLine-delivery-date';\nimport CheckoutCartLineDeliveryOptionsRadio from './components/checkout-cartLine-delivery-options-radio';\nimport { GetLineItems } from './components/get-line-items';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICartLineSelectedDeliveryOption {\n cartLineId: string;\n selectedDeliveryOption: string;\n requestDeliveryDate?: string;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n checkoutCartLineGroupDeliveryOptions?: React.ReactNode;\n enableCheckoutCartLineDeliveryOptions?: boolean;\n cartLineImages?: React.ReactNode;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @observable private groupDeliveryOptions: DeliveryOptionsCartLineAddress[] = [];\n\n @observable private cartLineSelectedDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n private readonly isMultipleAddressShippingEnabled?: boolean;\n\n private cartLinesDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isSelectDefaultOptionEnabled =\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\n this.isMultipleAddressShippingEnabled = this.props.config.multipleAddressShippingEnabled;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.cartLinesWithShippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (!this.canShip()) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const {\n moduleState: { isReady, isUpdating, hasError }\n } = this.props;\n const isError = !this.isLoading && hasError;\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\n\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCartLineGroupDeliveryOptions: this.getCheckoutCartLineGroupDeliveryOptions(),\n enableCheckoutCartLineDeliveryOptions: this.isMultipleAddressShippingEnabled,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n if (this.isMultipleAddressShippingEnabled) {\n this.getCartLinesSavedDeliveryOption();\n }\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n const channelConfig = this.props.context.request.channel;\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n const channelConfig = this.props.context.request.channel;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n const getAriaLabelWithPrice = get(deliveryOption, 'ShippingChargeAmount', 0);\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.clearError();\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n if (this.isMultipleAddressShippingEnabled) {\n this.updateCartLinesDeliverySpecification();\n } else {\n await this.updateCartDeliverySpecification(this.selectedItemId);\n }\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly getCartLinesSavedDeliveryOption = (): void => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n cartLinesForShipping.forEach(cartLine => {\n const deliveryMode = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n if (!cartLine.LineId || StringExtensions.isNullOrEmpty(deliveryMode)) {\n return;\n }\n const cartLineId = cartLine?.LineId;\n const existingCartLineSelectedDeliveryOption = this.cartLinesDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryMode;\n } else {\n if (cartLineId !== undefined) {\n this.cartLinesDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryMode });\n }\n }\n });\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n @action\n private readonly updateCartLinesDeliverySpecification = async (): Promise => {\n if (!this.cartLineSelectedDeliveryOptions || !this.cartLineSelectedDeliveryOptions.length) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n const checkoutCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n\n this.cartLineSelectedDeliveryOptions.forEach(group => {\n const address = checkoutCartLines?.find(cartLine => cartLine.LineId === group.cartLineId)?.ShippingAddress;\n const lineSpec = {\n LineId: group.cartLineId,\n DeliverySpecification: {\n DeliveryModeId: group.selectedDeliveryOption,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ShipToAddress,\n DeliveryAddress: address\n }\n };\n lineSpecs.push(lineSpec);\n });\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinesDeliverySpecification({\n lineDeliverySpecifications: lineSpecs\n });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n const cartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n if (cartLines !== undefined && cartLines.length > 0) {\n cartLines?.forEach(cartLine => {\n const cartLineId = cartLine.LineId?.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n cartLine.RequestedDeliveryDate = existingCartLineSelectedDeliveryOption.requestDeliveryDate\n ? new Date(existingCartLineSelectedDeliveryOption.requestDeliveryDate)\n : undefined;\n }\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: cartLines });\n }\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\n const cartLinesForShipping = this.props.data.checkout.result?.cartLinesWithShippingAddress;\n\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onCartLineDeliveryOptionChange = (\n event: React.ChangeEvent,\n cartLines: CartLine[],\n cartLineId?: string\n ) => {\n const deliveryModeId = event.currentTarget.value;\n if (cartLineId !== undefined) {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n console.log('existingCartLineSelectedDeliveryOption');\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n console.log('cartLineSelectedDeliveryOptions object if existing');\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n console.log('cartLineSelectedDeliveryOptions object new line id');\n }\n return;\n }\n\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n });\n };\n\n private readonly onCartLineRequestDeliveryDateChange = (event: React.ChangeEvent, cartLines: CartLine[]) => {\n const deliveryDate = event.currentTarget.value;\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.requestDeliveryDate = deliveryDate;\n } else {\n const deliveryModeId = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption: deliveryModeId,\n requestDeliveryDate: deliveryDate\n });\n }\n });\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n\n private readonly getCheckoutCartLineGroupDeliveryOptions = (): React.ReactNode => {\n const { resources, config } = this.props;\n const shippingCartLines = this.getCartLinesForShipping();\n if (!ArrayExtensions.hasElements(shippingCartLines) || !ArrayExtensions.hasElements(this.groupDeliveryOptions)) {\n return null;\n }\n const imageSettings = this.getImageSettings(config.imageSettings);\n const requestDeliveryDateEnabled = !config.enableRequestDeliveryDate && true;\n return (\n
    \n {this.groupDeliveryOptions.map((groupDeliveryOption: DeliveryOptionsCartLineAddress, index) => {\n const cartLineId = groupDeliveryOption.cartLineIds !== undefined ? groupDeliveryOption.cartLineIds[0] : '';\n const cartLine1 = shippingCartLines.find(cartLine => cartLineId === cartLine?.LineId?.toString() ?? '');\n const cartLine = shippingCartLines.filter(\n cartLine => groupDeliveryOption && (cartLineId === cartLine?.LineId?.toString() ?? '')\n );\n if (groupDeliveryOption !== undefined) {\n const selectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLine[0].LineId\n )?.selectedDeliveryOption;\n return (\n
    \n
    \n \n
    \n
    \n
    \n \n {resources.cartLineGroupDeliveryOptionsLabel}\n \n \n {resources.cartLineGroupDeliveryOptionsText}\n \n {requestDeliveryDateEnabled ? (\n \n ) : null}\n \n
    \n {groupDeliveryOption.cartLineIds?.map(cartLineId => {\n const cartLine1 = shippingCartLines.find(\n cartLine => cartLineId === cartLine?.LineId?.toString() ?? ''\n );\n return (\n \n );\n })}\n
    \n
    \n );\n } else {\n return null;\n }\n })}\n
    \n );\n };\n\n private readonly getGroupDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const cartLinesForShipping: CartLine[] = [];\n if (ArrayExtensions.hasElements(shippingCartLines)) {\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.ShippingAddress?.RecordId);\n cartLinesForShipping.push(getGroupByDelivery(shippingCartLines));\n console.log('running delivery option for all lines');\n }\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n const response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n if (response && response.length > 0) {\n this.groupDeliveryOptions = response;\n console.log('groupDeliveryOptions');\n }\n if (this.groupDeliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartLinesDeliveryOptions.length !== 0) {\n this.cartLineSelectedDeliveryOptions = this.cartLinesDeliveryOptions;\n this.cartLinesDeliveryOptions = [];\n this.onReady();\n } else {\n this.onUpdating();\n this.groupDeliveryOptions.forEach(group => {\n const selectedDeliveryOption =\n group.deliveryOptions.length > 0 && group.deliveryOptions[0].Code !== undefined\n ? group.deliveryOptions[0].Code\n : '';\n group.cartLineIds?.forEach(cartLineId => {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\n });\n });\n }\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n }\n this.isLoading = false;\n };\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n enableCheckoutCartLineDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton,\n checkoutCartLineGroupDeliveryOptions\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && !enableCheckoutCartLineDeliveryOptions && (\n \n )}\n {viewState.isShowList && enableCheckoutCartLineDeliveryOptions && checkoutCartLineGroupDeliveryOptions}\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { 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 * 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 { 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 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 { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartLine, ProductCatalog, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\n/**\n * ICartlineResourceString: Interface for specifying the\n * resource strings that the component needs.\n */\nexport interface ICartlineResourceString {\n /**\n * Display string for discount label\n */\n discountStringText: string;\n\n /**\n * String for size key\n */\n sizeString: string;\n\n /**\n * String for color key\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension\n */\n configString: string;\n\n /**\n * String for style key\n */\n styleString: string;\n\n /**\n * String for amount key\n */\n amountString?: string;\n\n /**\n * Display string for quantity label\n */\n quantityDisplayString: string;\n\n /**\n * Display string for quantity label\n */\n inputQuantityAriaLabel: string;\n\n /**\n * Aria label for the decrement button in quantity component\n */\n decrementButtonAriaLabel: string;\n\n /**\n * Aria label for the increment button in quantity component\n */\n incrementButtonAriaLabel: string;\n\n /**\n * Original text screenreader\n */\n originalPriceText: string;\n\n /**\n * Current text screenreader\n */\n currentPriceText: string;\n\n /**\n * Shipping Charges Text\n */\n shippingChargesText: string;\n\n priceEditorResources?: ICartLinePriceEditorResources;\n salesAgreementPricePrompt?: string;\n}\n\ninterface ICartLineData {\n cartLine: CartLine | SalesLine;\n cartState?: ICartState;\n product?: SimpleProduct;\n catalogs?: ProductCatalog[];\n}\n\n/**\n * ICartLineProps: The props required to render cartLineitem.\n */\nexport interface ICartLineProps extends IComponentProps {\n /**\n * The flag to change the quantity component from intractable to static.\n */\n disableQuantityInteractivity?: boolean;\n\n /**\n * The primary image url.\n */\n primaryImageUrl?: string;\n\n /**\n * The product url.\n */\n productUrl?: string;\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\n /**\n * Boolean flag to indicate if the item is out of stock.\n */\n isOutOfStock?: boolean;\n\n /**\n * Flag to make quantity section editable.\n */\n isQuantityEditable?: boolean;\n\n /**\n * Max quantity for line item.\n */\n maxQuantity?: number;\n\n /**\n * Current quantity for line item.\n */\n currentQuantity?: number;\n\n /**\n * Resource string for the component.\n */\n resources: ICartlineResourceString;\n\n /**\n * SalesLine flag.\n */\n isSalesLine?: boolean;\n\n /**\n * Error message to show in place of quantity.\n */\n errorMessage?: string;\n\n /**\n * Inventory information label.\n */\n inventoryInformationLabel?: string;\n\n /**\n * Inventory information class name.\n */\n inventoryLabelClassName?: string;\n\n /**\n * Flag to show/hide shipping charges for line items.\n */\n showShippingChargesForLineItems?: boolean;\n\n /**\n * Boolean flag to indicate if cart state status is ready.\n */\n isCartStateReady?: boolean;\n\n /**\n * Chanel Delivery Option configuration is from api.\n */\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n\n /**\n * The cart line index.\n */\n lineIndex?: number;\n\n /**\n * Quantity onChange callback.\n */\n quantityOnChange?(cartLine: CartLine, newQuantity: number, lineIndex?: number): boolean;\n priceCurrency?: string;\n}\n\ninterface IDimensionStrings {\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n}\n\n/**\n * Renders catalog label for the cart line.\n * @param props - Cart line props.\n * @returns Catalog label.\n */\nconst CatalogLabelComponent: React.FC = (props: ICartLineProps) => {\n const catalogId = props.data.cartLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.data.catalogs)) {\n return null;\n }\n\n const catalog = props.data.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
    {catalog.Name}
    ;\n};\n\nconst CartLineItemFunctions = {\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\n if (!Product || !Product.Dimensions) {\n return [];\n }\n\n return Product.Dimensions.map(productDimension => {\n if (productDimension.DimensionTypeValue === 1) {\n return (\n
    \n \n {DimensionStrings.colorString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === 2) {\n return (\n
    \n \n {DimensionStrings.configString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === 3) {\n return (\n
    \n \n {DimensionStrings.sizeString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === 4) {\n return (\n
    \n \n {Product.IsGiftCard ? DimensionStrings.amountString : DimensionStrings.styleString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n return null;\n });\n },\n\n renderDiscountLines: (props: ICartLineProps) => {\n if (!props.data.cartLine.DiscountLines || props.data.cartLine.DiscountLines.length === 0) {\n return null;\n }\n\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\n return (\n
    \n \n {discountLine.OfferName ? discountLine.OfferName : ''}:{` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n \n {` (${discountLine.EffectivePercentage !== undefined ? discountLine.EffectivePercentage : ''}%)`}\n
    \n );\n });\n },\n renderInventoryLabel: (props: ICartLineProps) => {\n if (!props.inventoryInformationLabel) {\n return null;\n }\n const inventoryCssName = props.inventoryLabelClassName\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\n : 'msc-cart-line__product-inventory-label';\n return {props.inventoryInformationLabel};\n },\n\n /**\n * Gets the react node for product unit of measure display.\n * @param props - Icartline props.\n * @returns The node representing markup for unit of measure component.\n */\n renderUnitOfMeasure: (props: ICartLineProps) => {\n if (props.data.cartLine.IsInvoiceLine) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\n return undefined;\n }\n\n const product = props.data.product;\n if (!product || !product.DefaultUnitOfMeasure) {\n return undefined;\n }\n\n return (\n
    \n {product.DefaultUnitOfMeasure}\n
    \n );\n },\n renderShippingLabel: (props: ICartLineProps) => {\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\n const cartline = props.data.cartLine;\n let hasShippingMethod = false;\n if (channelDeliveryOptionConfig !== undefined) {\n hasShippingMethod = !!(\n cartline.DeliveryMode &&\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\n );\n } else {\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\n }\n if (!hasShippingMethod) {\n return undefined;\n }\n\n const shippingChargeLines = (cartline.ChargeLines || []).filter(chargeLine => chargeLine.IsShipping);\n\n if (shippingChargeLines.length === 0) {\n return undefined;\n }\n\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\n return chargeTotal + (chargeLine.CalculatedAmount || 0);\n }, 0);\n\n const priceComponent = (\n \n );\n return (\n <>\n \n {priceComponent}\n \n );\n },\n renderOtherCharges: (props: ICartLineProps) => {\n const cartline = props.data.cartLine;\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\n\n return (\n (otherCharges &&\n otherCharges.map((otherCharge, key) => {\n return otherCharge && otherCharge.CalculatedAmount ? (\n
    \n \n \n \n \n
    \n ) : (\n ''\n );\n })) ||\n undefined\n );\n },\n\n /**\n * Render the sales agreement prompt.\n * @param props - The ICartLineProps.\n * @returns The JSX.Element.\n */\n renderSalesAgreementPrompt: (props: ICartLineProps): JSX.Element | null => {\n if (props.data.cartLine.SalesAgreementLineRecordId === 0) {\n return null;\n }\n return
    {props.resources.salesAgreementPricePrompt}
    ;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nconst CartLine: React.FC = (props: ICartLineProps) => {\n const { isSalesLine, productUrl, resources } = props;\n const { product, cartLine } = props.data;\n\n const destructDimensionStrings = {\n sizeString: resources.sizeString,\n colorString: resources.colorString,\n styleString: resources.styleString,\n configString: resources.configString,\n amountString: resources.amountString\n };\n\n const fallbackImageUrl =\n product &&\n getFallbackImageUrl(\n product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n const productDimensions = product && CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\n const imageSettings = props.imageSettings;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\n const renderInventoryLabel = CartLineItemFunctions.renderInventoryLabel(props);\n const renderUnitOfMeasure = CartLineItemFunctions.renderUnitOfMeasure(props);\n const renderShippingLabel = CartLineItemFunctions.renderShippingLabel(props);\n const renderOtherCharges = CartLineItemFunctions.renderOtherCharges(props);\n const renderSalesAgreementPrompt = CartLineItemFunctions.renderSalesAgreementPrompt(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const productName = product?.Name || cartLine.Description;\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\n\n const onChange = (newValue: number): boolean => {\n if (props.quantityOnChange) {\n return props.quantityOnChange(props.data.cartLine, newValue, props.lineIndex);\n }\n return true;\n };\n\n const _generateErrorMessage = (): JSX.Element | null => {\n if (props.errorMessage) {\n return (\n
    \n \n {props.errorMessage}\n
    \n );\n }\n\n return null;\n };\n\n const _generateQuantityandPrice = (): JSX.Element[] | null => {\n const nodes = [];\n if (props.isOutOfStock) {\n return null;\n }\n\n // No quantity selector for invoice line\n if (!props.data.cartLine.IsInvoiceLine) {\n if (props.data.product && props.isQuantityEditable) {\n nodes.push(\n
    \n
    {resources.quantityDisplayString}
    \n \n
    \n );\n } else {\n nodes.push(\n
    \n \n {props.data.cartLine.Quantity}\n
    \n );\n }\n }\n\n nodes.push(\n
    \n \n {(props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 && (\n <>\n \n {` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n )) ||\n null}\n
    \n );\n\n return nodes;\n };\n\n return (\n <>\n
    \n
    \n \n
    \n
    \n
    \n \n {MsDyn365.isBrowser ? (\n \n {productName}\n \n ) : null}\n {ArrayExtensions.hasElements(productDimensions) ? (\n
    {productDimensions}
    \n ) : (\n ''\n )}\n {renderUnitOfMeasure}\n
    \n \n
    \n {renderDisountLines}\n {renderInventoryLabel}\n {props.showShippingChargesForLineItems &&
    {renderShippingLabel}
    }\n {renderOtherCharges}\n {renderSalesAgreementPrompt}\n
    \n {_generateQuantityandPrice()}\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\n \n )}\n
    \n
    \n {_generateErrorMessage()}\n \n );\n};\n\nexport default CartLine;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { buildHydratedMockActionContext, buildMockRequest, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { AsyncResult, Customer, Employee } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderConfig, IHeaderResources } from '../header.props.autogenerated';\n\nconst mockRequest: IRequestContext = buildMockRequest();\nconst mockRequestURL = {\n requestUrl: new URL('https://wwww.example.com'),\n staticCdnUrl: 'https://wwww.example.com'\n};\nmockRequest.gridSettings = {\n xs: { w: 767, h: 0 },\n sm: { w: 991, h: 0 },\n md: { w: 1199, h: 0 },\n lg: { w: 1599, h: 0 },\n xl: { w: 1600, h: 0 }\n};\nmockRequest.user.isAuthenticated = true;\nmockRequest.user.signInUrl = '/signin';\nmockRequest.user.signOutUrl = '/signout';\nmockRequest.user.signUpUrl = '/signup';\n\nconst mockAnonRequest = buildMockRequest();\nmockAnonRequest.user.isAuthenticated = false;\nmockAnonRequest.user.signInUrl = '/signin';\nmockAnonRequest.user.signOutUrl = '/signout';\nmockAnonRequest.user.signUpUrl = '/signup';\nmockAnonRequest.url = mockRequestURL;\n\nconst mockSigninErrorRequest = buildMockRequest();\nmockSigninErrorRequest.user.isAuthenticated = false;\nmockSigninErrorRequest.user.retailServerErrorCode = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\nmockSigninErrorRequest.user.signInUrl = '/signin';\nmockSigninErrorRequest.user.signOutUrl = '/signout';\nmockSigninErrorRequest.user.signUpUrl = '/signup';\nmockSigninErrorRequest.url = mockRequestURL;\n\nconst mockActionContext = buildHydratedMockActionContext();\nmockActionContext.requestContext.url = mockRequestURL;\n\n/**\n * Method to mock auth context.\n */\n// @ts-expect-error\nexport const mockAuthContext: ICoreContext = {\n actionContext: mockActionContext,\n request: mockRequest,\n app: {\n config: {\n disableTooltip: true\n },\n routes: {\n wishlist: '/wishlist'\n }\n }\n};\n\n// @ts-expect-error\nexport const mockAnonContext: ICoreContext = {\n actionContext: mockActionContext,\n request: mockAnonRequest,\n app: {\n config: {\n disableTooltip: true\n },\n routes: {\n wishlist: '/wishlist'\n }\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- Due to partial mock.\n// @ts-expect-error\nexport const mockSigninContext: ICoreContext = {\n actionContext: mockActionContext,\n request: mockSigninErrorRequest,\n app: {\n config: {\n disableTooltip: true\n },\n routes: {\n wishlist: '/wishlist'\n }\n }\n};\n\nexport const mockHeaderConfig: IHeaderConfig = {\n logoLink: {\n linkUrl: {\n destinationUrl: 'https://ppe.fabrikam.com/fe'\n },\n ariaLabel: 'fabrikam'\n },\n logoImage: {\n src: 'https://img-prod-cms-mr-microsoft-com.akamaized.net/cms/api/fabrikam/imageFileData/MA1G3L'\n }\n};\n\nexport const mockResources: IHeaderResources = {\n mobileHamburgerAriaLabel: 'Mobile view hamburger aria label',\n wishlistTooltipText: 'My wishlist',\n cartLabel: 'Shopping bag, ({0}) items',\n cartQtyLabel: '({0})',\n signInLinkText: 'Sign In',\n signInLinkAriaText: 'Sign In',\n signOutLinkText: 'Sign Out',\n signOutLinkAriaText: 'Sign Out',\n shoppingAsText: 'Shopping as {0}',\n switchCustomerLinkText: 'Switch customer',\n switchCustomerLinkAriaText: 'Switch customer',\n headerPreferredStoreText: 'Select store',\n headerPreferredStoreAriaLabel: 'select preferred store',\n signInCustomerNotAuthorizedTitle: 'Error message if customer not authorized',\n signUpCustomerNotFoundTitle: 'Error message if cutsomer not found',\n signUpMultipleCustomerFoundTitle: 'Multiple customer found error msg',\n closeNotificationLabel: 'Close',\n wishlistCountLabel: '({0})',\n headerAriaLabel: 'Header'\n};\n\nexport const getMockData = (totalItemsInCart: number = 0, accountNumber: string = '2', firstName: string = ''): IHeaderData => {\n return {\n cart: >{\n status: 'SUCCESS',\n result: {\n totalItemsInCart\n }\n },\n employee: >{\n status: 'SUCCESS',\n result: {\n Name: 'Worker'\n }\n },\n accountInformation: >{\n status: 'SUCCESS',\n result: {\n AccountNumber: accountNumber,\n FirstName: firstName\n }\n },\n storeSelectorStateManager: >{\n status: 'SUCCESS',\n result: {}\n }\n };\n};\n\nexport const getMockErrorData = (): IHeaderData => {\n return {\n cart: >{\n status: 'FAILED',\n result: undefined\n },\n employee: >{\n status: 'FAILED',\n result: undefined\n },\n accountInformation: >{\n status: 'FAILED',\n result: undefined\n },\n storeSelectorStateManager: >{\n status: 'FAILED',\n result: undefined\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 { 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 { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport { IPriceComponentResources, ProductComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getCatalogId, getUrlSync, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n DimensionAvailabilitiesForProductSearchResultInput,\n DimensionTypes,\n DimensionSwatchDisplayTypes,\n getDimensionAvailabilitiesForProductSearchResultAction,\n getPriceForProductSearchResult,\n IDimensionsApp,\n ObjectExtensions,\n PriceForProductSearchResultInput,\n ProductPriceForSelectedProductsInput,\n validateCatalogId,\n getProductPriceForSelectedProducts\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductCollectionData } from './product-collection.data';\nimport { IProductCollectionProps, layout } from './product-collection.props.autogenerated';\n\nexport interface IProductCollectionViewProps extends IProductCollectionProps {\n heading?: React.ReactNode;\n ProductCollectionContainer: IModuleProps;\n SingleSlideCarouselComponentProps: INodeProps;\n GridComponentProps: INodeProps;\n products: IProductComponentViewProps[];\n isCarousel: boolean;\n productPrices?: ProductPrice[];\n seeAllButton?: React.ReactNode;\n}\n\nexport interface IProductComponentViewProps {\n ProductContainer: INodeProps;\n productComponent: React.ReactNode;\n}\nexport interface IProductComponentState {\n products: ProductSearchResult[];\n productPrices: ProductPrice[];\n productsDimensionAvailabilities?: IProductsDimensionsAvailabilities[][];\n}\n\n/**\n * ProductCollection component.\n */\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly productPrices: ProductPrice[];\n\n constructor(props: IProductCollectionProps) {\n super(props);\n this.productPrices = [];\n this.state = {\n products: this.props.config.productCollection.products || [],\n productPrices: this.productPrices || []\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n if (this.props.config.enableAffiliationBasedPricing && this.props.context.actionContext.requestContext.user.isAuthenticated) {\n await this._getActivePrice();\n }\n }\n\n public render(): JSX.Element | null {\n const { heading, className, shouldDisplaySeeAllButton } = this.props.config;\n const { resources } = this.props;\n const recommendation = this.props.config.productCollection.recommendationListId;\n const discountIds = this.props.config.productCollection.discountIds;\n\n // Initialize state in case if the products were not found during initial module render\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data if not there.\n this.initProductState(this.props.config.productCollection);\n\n const products = this.state.products;\n const productPrices = this.state.productPrices;\n\n const isCarousel = this.props.config.layout === layout.carousel;\n const headingLabel = heading ? heading.text : '';\n const headingComponent = heading && (\n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- product check for safety.\n const updatedProducts = products?.map((item: ProductSearchResult, index: number) => {\n const getProductData = this._getProduct(\n item,\n index,\n productPrices ? productPrices.find(p => p.ProductId === item.RecordId) : undefined\n );\n return !ObjectExtensions.isNullOrUndefined(getProductData) ? getProductData : undefined;\n });\n\n const productCollectionViewProps = {\n ...this.props,\n heading: headingComponent,\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: '',\n flipperPrevLabel: `${headingLabel} ${resources.flipperPrevious}`,\n flipperNextLabel: `${headingLabel} ${resources.flipperNext}`,\n parentId: this.props.id,\n telemetryContent: this.telemetryContent\n } as IComponentNodeProps,\n ProductCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-product-collection', className)\n },\n GridComponentProps: {\n tag: 'ul' as NodeTag,\n className: 'ms-product-collection__items'\n },\n isCarousel,\n\n products:\n ArrayExtensions.hasElements(updatedProducts) &&\n updatedProducts.filter(item => {\n return item !== undefined;\n }),\n productPrices: this.productPrices,\n seeAllButton:\n (recommendation || discountIds) &&\n shouldDisplaySeeAllButton &&\n (ArrayExtensions.hasElements(updatedProducts) || this.props.config.productCollection.listType === 'promotional')\n ? this._getSeeAllButton(headingLabel, recommendation, discountIds)\n : undefined,\n resources: resources\n };\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * Get products dimension availabilities.\n * @param products - Products.\n * @returns Promise.\n */\n private readonly _getProductsDimensionsAvailabilities = async (products: ProductSearchResult[]): Promise => {\n const context = this.props.context as ICoreContext;\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\n const validProducts = ArrayExtensions.validValues(products);\n if (\n ArrayExtensions.hasElements(validProducts) &&\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none)\n ) {\n const productsDimensionAvailabilities = await getDimensionAvailabilitiesForProductSearchResultAction(\n new DimensionAvailabilitiesForProductSearchResultInput(\n validProducts,\n this.props.context as ICoreContext,\n DimensionSwatchDisplayTypes.productCard\n ),\n this.props.context.actionContext\n );\n\n if (ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\n this.setState({ productsDimensionAvailabilities });\n }\n }\n };\n\n /**\n * Helper method to initialize products state.\n * @param productCollection - List of products.\n */\n private readonly initProductState = async (productCollection: Msdyn365.IProductList) => {\n let products = this.state.products;\n let productPrices = this.state.productPrices;\n const productCollectionProducts = productCollection.products;\n if (!ArrayExtensions.hasElements(products) && ArrayExtensions.hasElements(productCollectionProducts)) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (\n ArrayExtensions.hasElements(products) &&\n ArrayExtensions.hasElements(productCollectionProducts) &&\n !ArrayExtensions.equals(products, productCollectionProducts)\n ) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (productCollectionProducts === undefined && ArrayExtensions.hasElements(this.state.products)) {\n products = [];\n this.setState({ products: products });\n }\n\n if (Msdyn365.msdyn365Commerce.isBrowser && !ArrayExtensions.hasElements(this.state.productsDimensionAvailabilities)) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n if (this.props.config.productCollection.listType === 'promotional') {\n productPrices = await getProductPriceForSelectedProducts(\n new ProductPriceForSelectedProductsInput(products.filter(p => !p.IsMasterProduct).map(p => p.RecordId)),\n this.props.context.actionContext\n );\n\n this.setState({ productPrices: productPrices });\n }\n };\n\n private readonly _getProduct = (\n product: ProductSearchResult,\n index: number,\n productPrice?: ProductPrice\n ): IProductComponentViewProps | null => {\n if (!product || !product.Name) {\n this.props.telemetry.trace('[product-collection] Product or product name is null');\n return null;\n }\n const telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const { imageSettings, allowBackNavigation } = this.props.config;\n const resources = this.props.resources;\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\n const quickviewSlot =\n this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\n const productComparisonButtonSlot = ArrayExtensions.hasElements(this.props.slots.productComparisonButton)\n ? this.props.slots.productComparisonButton[0]\n : null;\n\n const reviewCount = 1;\n const reviewTotalRatings = Number(product.TotalRatings);\n const reviewCountAriaLabelValue =\n reviewTotalRatings > reviewCount ? resources.ratingCountAriaLabel : resources.ratingCountAriaLabelSingleUser;\n const isPriceMinMaxEnabled = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n return {\n ProductContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-product-collection__item',\n role: 'listitem',\n key: index\n },\n productComponent: (\n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === (product.MasterProductId ?? product.RecordId)\n )}\n />\n )\n };\n };\n\n /**\n * Get the active price for products.\n */\n private readonly _getActivePrice = async (): Promise => {\n const productsList = this.state.products;\n const products = await getPriceForProductSearchResult(\n new PriceForProductSearchResultInput(productsList),\n this.props.context.actionContext\n );\n if (Msdyn365.msdyn365Commerce.isBrowser) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n this.setState({ products });\n };\n\n /**\n * Get the see all button.\n * @param headingLabel - Heading label.\n * @param recommendation - Recommendation.\n * @param discountIds - Discount Ids.\n * @returns IProductComponentSeeAllViewProps - Product component see all view props.\n */\n private readonly _getSeeAllButton = (headingLabel: string, recommendation?: string, discountIds?: string[]): React.ReactNode => {\n if (!Msdyn365.msdyn365Commerce.isBrowser) {\n return null;\n }\n\n if (!recommendation && !discountIds) {\n return null;\n }\n\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const searchPageLink = getUrlSync('search', this.props.context.actionContext);\n if (!searchPageLink) {\n return null;\n }\n\n const url = new URL(searchPageLink, window.location.href);\n\n if (discountIds) {\n // see all button for promotion page\n url.searchParams.set('discountIds', discountIds.toString());\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n } else if (recommendation) {\n // See all button for recommendation\n url.searchParams.set('recommendation', recommendation);\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n }\n\n return (\n \n {this.props.resources.seeAllButtonText}\n \n );\n };\n}\n\nexport default ProductCollection;\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 * as React from 'react';\n\nimport { IProductCollectionViewProps, IProductComponentViewProps } from './product-collection';\nimport { IProductCollectionResources } from './product-collection.props.autogenerated';\n\nconst ProductCollectionView: React.FC = props => {\n const {\n heading,\n ProductCollectionContainer,\n products,\n SingleSlideCarouselComponentProps,\n GridComponentProps,\n isCarousel,\n seeAllButton,\n resources\n } = props;\n\n if (products) {\n return (\n \n {heading}\n {seeAllButton}\n {isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products) : _renderGrid(GridComponentProps, products)}\n \n );\n }\n\n // If no products are retrieved and the list type is promotional, still render the module to keep the entry of promotion page\n if (props.config.productCollection.listType === 'promotional') {\n return (\n \n {heading}\n {seeAllButton}\n {_renderNoProduct(resources)}\n \n );\n }\n props.context.telemetry.error('Product collection content is empty, module wont render.');\n return null;\n};\n\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderNoProduct = (resources: IProductCollectionResources): JSX.Element => {\n return (\n \n

    {resources.noProductToRenderText}

    \n
    \n );\n};\n\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\n const { ProductContainer, productComponent } = product;\n\n return {productComponent};\n};\n\nexport default ProductCollectionView;\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