{"version":3,"file":"static/js/13.e92a0336dfec42f69b7e.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/krannich-c-business-account-address/krannich-c-business-account-address.tsx?acea","webpack://Msdyn365.Commerce.Online/./src/modules/krannich-c-business-account-address/krannich-c-business-account-address.view.tsx?e981","webpack://Msdyn365.Commerce.Online/./src/themes/krannich/views/order-details.view.tsx?450a","webpack://Msdyn365.Commerce.Online/./src/themes/krannich/views/search.view.tsx?59e3","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-button.tsx?8d59","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-description.tsx?54a5","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-error.tsx?a75a","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-input.tsx?d840","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-label.tsx?4560","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-link.tsx?2078","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-icon.tsx?1d7f","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-message.tsx?84ee","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-text.tsx?76b9","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.tsx?259c","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.view.tsx?2b3e","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://Msdyn365.Commerce.Online/./src/modules/cart/cart.view.tsx?d8c2","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction, set } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { AddressCommon } from '../../common/address-common';\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '../../common/address-format.data';\r\nimport { AddressMetaData } from '../../common/address-meta-data';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport { IKrannichCBusinessAccountAddressData } from './krannich-c-business-account-address.data';\r\nimport { IKrannichCBusinessAccountAddressProps } from './krannich-c-business-account-address.props.autogenerated';\r\n\r\n/**\r\n * Interface for IBusinessAccountAddressExtendedProps.\r\n */\r\nexport interface IBusinessAccountAddressExtendedProps extends IKrannichCBusinessAccountAddressProps {\r\n hasError: boolean;\r\n isRequired: boolean;\r\n resetAddress: boolean;\r\n updateForm(errors: boolean, currentAddress?: Address): void;\r\n}\r\n\r\n/**\r\n * Interface for IBusinessAccountAddressState.\r\n */\r\nexport interface IBusinessAccountAddressState {\r\n countryId?: string;\r\n states?: StateProvinceInfo[];\r\n}\r\n\r\n/**\r\n * Interface for IBusinessAccountAddressViewProps.\r\n */\r\nexport interface IBusinessAccountAddressViewProps {\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 BusinessAccountAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n usSiteFlag?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component, IBusinessAccountAddressState>}\r\n */\r\nclass BusinessAccountAddress extends React.Component {\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 readonly validationError: object;\r\n\r\n private readonly addressActionResponse?: IAddressResponse;\r\n\r\n private readonly isUpdating?: boolean;\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 = 0; // Default to None (This value set in HQ as Business)\r\n\r\n private readonly shouldAutoFocus?: boolean = false;\r\n\r\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n public constructor(props: IBusinessAccountAddressExtendedProps) {\r\n super(props);\r\n\r\n const { context, data, resources, telemetry } = this.props;\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\r\n this.addressPurposes\r\n );\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.validationError = {};\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 public componentDidMount(): void {\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n this._setDefaultCountryRegionId();\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { renderView, config, hasError, resetAddress } = this.props;\r\n\r\n // Business-sign-up will pass this flag when cancel button is clicked\r\n if (resetAddress) {\r\n this._resetAddressFields();\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n hasError,\r\n className: config.className,\r\n BusinessAccountAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-business-account-address', config.className)\r\n },\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n usSiteFlag:\r\n this.props?.context?.actionContext?.requestContext?.apiSettings?.oun === this.props.context.app.config.ounNumberForUsSite\r\n ? true\r\n : false\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Reset Address.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public _resetAddressFields = () => {\r\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\r\n\r\n addressFormat.map(addressFormatItem => {\r\n switch (addressFormatItem.displayType) {\r\n case AddressItemDisplayType.Input:\r\n this.addUpdateAddress[addressFormatItem.name] = '';\r\n break;\r\n case AddressItemDisplayType.Checkbox:\r\n this.addUpdateAddress[addressFormatItem.name] = false;\r\n break;\r\n default:\r\n switch (addressFormatItem.type) {\r\n case AddressItemType.ThreeLetterISORegionName:\r\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\r\n break;\r\n case AddressItemType.AddressTypeValue:\r\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\r\n break;\r\n case AddressItemType.State:\r\n this.addUpdateAddress[addressFormatItem.name] = '';\r\n break;\r\n default:\r\n this.addUpdateAddress[addressFormatItem.name] = undefined;\r\n }\r\n }\r\n });\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: IBusinessAccountAddressExtendedProps): 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\r\n // Set validationError and hasError to hide error messages since in the B2B\r\n // request form, no errors would visually show since user wont be able to submit\r\n // until form is filled and correct\r\n /**\r\n * Render Add Or Update Address Function.\r\n * @returns - AddressAddUpdate.\r\n */\r\n\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n const usSiteFlag =\r\n this.props?.context?.actionContext?.requestContext?.apiSettings?.oun === this.props.context.app.config.ounNumberForUsSite;\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Company,\r\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n shouldAutoFocus: this.shouldAutoFocus,\r\n validationError: this.validationError,\r\n hasError: this.props.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: this.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 usSiteFlag: usSiteFlag\r\n });\r\n };\r\n\r\n /**\r\n * On Address Add Update Input Change Function.\r\n * @param event - Input event change function.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n this._updateAddress(event.target.name, event.target.value);\r\n };\r\n\r\n /**\r\n * On Address Add Update Dropdown Change Function.\r\n * @param event - Change dropdown event.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n await this._updateCountryRegionId(event.target.value);\r\n } else {\r\n this._updateAddress(event.target.name, event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * Update Address Function.\r\n * @param name - String.\r\n * @param value - String.\r\n */\r\n private readonly _updateAddress = (name: string, value: string | number) => {\r\n const usSiteFlag =\r\n this.props?.context?.actionContext?.requestContext?.apiSettings?.oun === this.props.context.app.config.ounNumberForUsSite;\r\n const { updateForm, isRequired, resources } = this.props;\r\n let cleanValue = value;\r\n if (typeof value === 'string') {\r\n if (name === 'Phone') {\r\n if (usSiteFlag) {\r\n cleanValue = value.replace(/\\D/g, ''); // Remove non-numeric characters\r\n } else {\r\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n const tempValue = cleanValue.split(' ').join('');\r\n cleanValue = tempValue.replace(/(\\d{2})(\\d{1})(\\d{4})(\\d{4})/, '$1 $2 $3 $4');\r\n // VSI CUSOTMIZATION TO REPLACE STRING WITH NUMBER FORMAT\r\n }\r\n } else {\r\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n }\r\n }\r\n set(this.addUpdateAddress, { [name]: cleanValue });\r\n\r\n if (this._isEmpty()) {\r\n if (isRequired) {\r\n updateForm(true, undefined);\r\n } else {\r\n // Reset addressFormat as if address was NOT a required field\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this.excludedList, []),\r\n this.addressPurposes\r\n );\r\n updateForm(false, this.addUpdateAddress);\r\n }\r\n } else {\r\n // Get new addressFormat if address was a required field\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this.excludedList, undefined),\r\n this.addressPurposes\r\n );\r\n\r\n // Verify with new rules\r\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n updateForm(false, this.addUpdateAddress);\r\n } else {\r\n updateForm(true, undefined);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Is empty Function.\r\n * @returns - Boolean.\r\n */\r\n // Walk through array and check if valued is defined or value is not an empty string\r\n private readonly _isEmpty = () => {\r\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\r\n for (const addressFormatItem of addressFormat) {\r\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\r\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\r\n\r\n // Check each input field, if value is defined and not an empty string --> address is not empty\r\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n /**\r\n * Is Input Required Function.\r\n * @param addressFormatItem - IAddressItem.\r\n * @returns - Boolean.\r\n */\r\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\r\n if (\r\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\r\n !addressFormatItem.validationRules ||\r\n addressFormatItem.validationRules.length === 0\r\n ) {\r\n return false;\r\n }\r\n\r\n for (const validationRule of addressFormatItem.validationRules) {\r\n if (validationRule.type === AddressValidationRuleType.Required) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\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._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\r\n\r\n // Set default AddressType\r\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\r\n }\r\n\r\n /**\r\n * Update Country Region Id Function.\r\n * @param value - String.\r\n */\r\n private readonly _updateCountryRegionId = async (value: string) => {\r\n this.countryRegionId = value;\r\n\r\n await 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 this._updateAddress('State', '');\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n\r\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\r\n };\r\n}\r\n\r\nexport default BusinessAccountAddress;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport { IBusinessAccountAddressViewProps } from './krannich-c-business-account-address';\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 - IAddressError.\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 - AddressForm 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 usSiteFlag\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input, customAlert, customLabel } = item;\r\n if (key === 'County') {\r\n return null;\r\n }\r\n return (\r\n \r\n {customLabel !== null && usSiteFlag ? customLabel : label}\r\n {hasError && alert}\r\n {customAlert !== null ? customAlert : null}\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 * Business Account Address View Component.\r\n * @param props - Props.\r\n * @returns - BusinessAccountAddress Module.\r\n */\r\nconst BusinessAccountAddressView: React.FC = props => {\r\n const { BusinessAccountAddress, showAddOrUpdateAddress, usSiteFlag } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BusinessAccountAddressView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IHelp, IOrderSummary, IPaymentMethods } from '@msdyn365-commerce-modules/order-management/src/modules/order-details/../../common';\r\nimport { IGroup } from '@msdyn365-commerce-modules/order-management/src/modules/order-details/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-details/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-details/../../common/get-sales-line';\r\nimport { IOrderDetailsViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/order-details/./order-details';\r\nimport { IOrderDetailsProps, IOrderDetailsResources } from '../definition-extensions/order-details.ext.props.autogenerated';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core-internal';\r\nimport { currencyFormat, dateFormatByLocale, formatUrlPath, getOrderStatus } from '../../../utils/helper';\r\nimport { IContentBlockConfig } from '../definition-extensions/content-block.ext.props.autogenerated';\r\nimport { GridSize } from '../../../modules/krannich-c-search-result-container/krannich-c-search-result-container';\r\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\ninterface IGroupsExtended {\r\n groupsProps: INodeProps;\r\n groups: IGroup[];\r\n resources: IOrderDetailsResources;\r\n salesId: React.ReactNode;\r\n createdDate: React.ReactNode;\r\n statusValue?: number;\r\n context?: ICoreContext>;\r\n}\r\n\r\ninterface IGroupExtended {\r\n context?: ICoreContext>;\r\n group: IGroup;\r\n resources: IOrderDetailsResources;\r\n salesId: React.ReactNode;\r\n createdDate: React.ReactNode;\r\n statusValue?: number;\r\n}\r\n\r\ninterface IGroupDeliveryExtended {\r\n deliveryProps: INodeProps;\r\n pickupProps: INodeProps;\r\n showTimeslot: boolean;\r\n heading: React.ReactNode;\r\n count: React.ReactNode;\r\n processing: React.ReactNode;\r\n trackingInfo: React.ReactNode;\r\n address: React.ReactNode;\r\n shippingItemsToYou?: React.ReactNode;\r\n pickupDateTimeslot?: React.ReactNode;\r\n shippedStatusCheck?: React.ReactNode;\r\n statusValue?: number;\r\n}\r\nexport const OrderDetailsOrderInfomation: React.FC = props => (\r\n
\r\n

Confirmation ID

\r\n {props.channelReferenceId}\r\n
\r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\r\n \r\n
\r\n
{buyAgainButton}
\r\n
\r\n {errors}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, statusValue }) => (\r\n \r\n \r\n {getOrderStatus(statusValue)}\r\n \r\n {/* {count} */}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ group, resources, salesId, context, createdDate, statusValue }) => {\r\n const { groupProps, delivery, address, salesLinesProps, salesLines } = group;\r\n const productManufacturarAttribute = context?.app?.config?.productManufacturarAttribute || 'Manufacturer';\r\n const productWeightAttribute = context?.app?.config?.productWeightAttribute || 'Weight (kg)';\r\n\r\n //Configs For Mobile View\r\n const [isMobile, setIsMobile] = React.useState();\r\n const [attributeValues, setAttributeValues] = React.useState([]);\r\n const _updateViewport = (): void => {\r\n const viewport = _getViewport();\r\n viewport === 'xs' || viewport === 'sm' ? setIsMobile(true) : setIsMobile(false);\r\n };\r\n const _getViewport = (): GridSize => {\r\n // const { context } = productManufacturarAttribute;\r\n\r\n // Always render in mobile viewport on a mobile device\r\n if (context?.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context?.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n\r\n return 'lg';\r\n };\r\n React.useEffect(() => {\r\n _updateViewport();\r\n if (MsDyn365.isBrowser && window.addEventListener) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n window.addEventListener('resize', _updateViewport);\r\n }\r\n }, []);\r\n React.useEffect(() => {\r\n const fetchData = async () => {\r\n if (salesLines.length) {\r\n const res: { recId: number; manufacturer: AttributeValue | undefined }[] = [];\r\n for (const salesLine of salesLines) {\r\n const productAttributes = await getAttributeValuesAsync(\r\n { callerContext: context?.actionContext!, queryResultSettings: {} },\r\n salesLine.data.product?.RecordId!,\r\n context?.request?.apiSettings?.channelId!,\r\n context?.request?.apiSettings?.catalogId!\r\n );\r\n const manufacturer = productAttributes?.find(item => item.Name === productManufacturarAttribute);\r\n res.push({ recId: salesLine.data.product?.RecordId!, manufacturer });\r\n }\r\n setAttributeValues(res);\r\n }\r\n };\r\n fetchData();\r\n }, [salesLines]);\r\n //Ending configuration//\r\n\r\n const createdDateJSX = createdDate as JSX.Element;\r\n const createdDateJSXProps = createdDateJSX.props as any;\r\n const createdDateJSXPropsChildren = createdDateJSXProps?.children as any;\r\n const customDate = createdDateJSXPropsChildren[2];\r\n // Split the date string\r\n const dateParts = customDate?.split('/');\r\n // Create a Date object using the parts\r\n const formattedDate = new Date(dateParts?.[2], dateParts?.[0] - 1, dateParts?.[1]);\r\n // Format the date as \"DD/MM/YYYY\" using toLocaleDateString()\r\n const formattedDateString = formattedDate.toLocaleDateString('en-GB');\r\n const usSiteFlag = context?.actionContext?.requestContext?.apiSettings?.oun === context?.app.config.ounNumberForUsSite;\r\n const dateLocale = context?.app.config.dateFormat;\r\n const currency = context?.request.channel?.Currency;\r\n const formattedDateStringBylocale =\r\n (dateLocale && currency && formattedDateString && dateFormatByLocale(dateLocale, currency, formattedDateString)) || undefined;\r\n if (isMobile) {\r\n //View Shown in case of Mobile\r\n return (\r\n \r\n {salesLines.map(salesLine => {\r\n const salesLineAttr = salesLine.data.salesLine.AttributeValues;\r\n\r\n const productAttrManufactrValue: AttributeValue | undefined = salesLineAttr?.find(\r\n (item: AttributeValue) => item.Name === productManufacturarAttribute\r\n );\r\n const productAttrWeightValue: AttributeValue | undefined = salesLineAttr?.find(\r\n (item: AttributeValue) => item.Name === productWeightAttribute\r\n );\r\n const lineTotal = Number(salesLine?.data?.salesLine?.GrossAmount) - Number(salesLine?.data?.salesLine?.DiscountAmount);\r\n const manufItemTypeNameObj = salesLine.data.product?.ExtensionProperties?.find(item => {\r\n if (item.Key === 'ManufItemTypeName') {\r\n return item;\r\n }\r\n return null;\r\n });\r\n\r\n const manufacturerObj =\r\n attributeValues.length &&\r\n attributeValues.find((item: { recId: number | undefined }) => item.recId === salesLine?.data?.product?.RecordId);\r\n const urlPath = formatUrlPath(manufacturerObj?.manufacturer?.TextValue, manufItemTypeNameObj?.Value?.StringValue!);\r\n const pathName = context?.actionContext.requestContext.url.requestUrl.pathname.split('/');\r\n const isAddingPathWithUrl = context?.actionContext.requestContext.app.config.addPathWithUrl ?? false;\r\n let productUrl =\r\n salesLine &&\r\n (isAddingPathWithUrl\r\n ? `${context?.actionContext.requestContext.url.requestUrl.origin}/${pathName![1]}/${urlPath}/${\r\n salesLine?.data?.product?.RecordId\r\n }.p`\r\n : `${context?.actionContext.requestContext.url.requestUrl.origin}/${urlPath}/${salesLine?.data?.product?.RecordId}.p`);\r\n const buyAgainButtonCloned = (\r\n \r\n {resources.buyAgain}\r\n \r\n );\r\n salesLine.buyAgainButton = buyAgainButtonCloned;\r\n return (\r\n
\r\n {createdDate && (\r\n \r\n {resources.documentedDateTabelHeaderLabel} : {formattedDateStringBylocale}\r\n \r\n )}\r\n {salesId && (\r\n \r\n {resources.salesIDHeaderLabel}\r\n : {salesId}\r\n \r\n )}\r\n {\r\n \r\n {resources.weightTabelHeaderLabel}{' '}\r\n : {productAttrWeightValue?.TextValue ? productAttrWeightValue?.TextValue : '-'}\r\n \r\n }\r\n {\r\n \r\n {resources.manufacturerHeaderLabel} : {productAttrManufactrValue?.TextValue}\r\n \r\n }\r\n {\r\n \r\n {resources.productTabelHeaderLabel} : {salesLine.data.product?.Name}\r\n \r\n }\r\n {\r\n \r\n {resources.productNumberTabelHeaderLabel}\r\n : {salesLine.data.product?.ItemId}\r\n \r\n }\r\n {\r\n \r\n {resources.quantityTabelHeaderLabel} : {salesLine.data.salesLine.Quantity}\r\n \r\n }\r\n {\r\n \r\n {resources.netAmountTabelHeaderLabel} : {currencyFormat(lineTotal, context)}\r\n \r\n }\r\n {\r\n \r\n {resources.grossAmountTabelHeaderLabel}{' '}\r\n : {currencyFormat(salesLine?.data?.salesLine?.TotalAmount, context)}\r\n \r\n }\r\n {\r\n \r\n {resources.currencyTabelHeaderLabel} {usSiteFlag ? : $ : : A$}\r\n \r\n }\r\n {createdDate && (\r\n \r\n {resources.fulfilledTabelHeaderLabel}{' '}\r\n : {getOrderStatus(salesLine.data.salesLine.SalesStatusValue)}\r\n \r\n )}\r\n \r\n
\r\n );\r\n })}\r\n
\r\n );\r\n } else {\r\n //View Shown in case of Web\r\n return (\r\n <>\r\n \r\n
\r\n {resources.orderStateLabel}\r\n {delivery && }\r\n
\r\n \r\n {salesLines && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {salesLines.map(salesLine => {\r\n const salesLineAttr = salesLine.data.salesLine.AttributeValues;\r\n\r\n const productAttrManufactrValue: AttributeValue | undefined = salesLineAttr?.find(\r\n (item: AttributeValue) => item.Name === productManufacturarAttribute\r\n );\r\n const productAttrWeightValue: AttributeValue | undefined = salesLineAttr?.find(\r\n (item: AttributeValue) => item.Name === productWeightAttribute\r\n );\r\n const lineTotal =\r\n Number(salesLine?.data?.salesLine?.GrossAmount) -\r\n Number(salesLine?.data?.salesLine?.DiscountAmount);\r\n const manufItemTypeNameObj = salesLine.data.product?.ExtensionProperties?.find(item => {\r\n if (item.Key === 'ManufItemTypeName') {\r\n return item;\r\n }\r\n return null;\r\n });\r\n\r\n const manufacturerObj =\r\n attributeValues.length &&\r\n attributeValues.find(\r\n (item: { recId: number | undefined }) => item.recId === salesLine?.data?.product?.RecordId\r\n );\r\n const urlPath = formatUrlPath(\r\n manufacturerObj?.manufacturer?.TextValue ?? '',\r\n manufItemTypeNameObj?.Value?.StringValue! ?? ''\r\n );\r\n const pathName = context?.actionContext.requestContext.url.requestUrl.pathname.split('/');\r\n const isAddingPathWithUrl =\r\n context?.actionContext.requestContext.app.config.addPathWithUrl ?? false;\r\n let productUrl =\r\n salesLine &&\r\n (isAddingPathWithUrl\r\n ? `${context?.actionContext.requestContext.url.requestUrl.origin}/${\r\n pathName![1]\r\n }/${urlPath}/${salesLine?.data?.product?.RecordId}.p`\r\n : `${context?.actionContext.requestContext.url.requestUrl.origin}/${urlPath}/${salesLine?.data?.product?.RecordId}.p`);\r\n const buyAgainButtonCloned = (\r\n \r\n {resources.buyAgain}\r\n \r\n );\r\n salesLine.buyAgainButton = buyAgainButtonCloned;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {usSiteFlag ? : }\r\n \r\n \r\n \r\n );\r\n })}\r\n
{resources.documentedDateTabelHeaderLabel}{resources.salesIDHeaderLabel}{resources.weightTabelHeaderLabel}{resources.manufacturerHeaderLabel}{resources.productTabelHeaderLabel}{resources.productNumberTabelHeaderLabel}{resources.quantityTabelHeaderLabel}{resources.netAmountTabelHeaderLabel}{resources.grossAmountTabelHeaderLabel}{resources.currencyTabelHeaderLabel}{resources.fulfilledTabelHeaderLabel}{resources.actionTabelHeaderLabel}
{formattedDateStringBylocale}{salesId}{productAttrWeightValue?.TextValue ? productAttrWeightValue?.TextValue : '-'}{productAttrManufactrValue?.TextValue ? productAttrManufactrValue?.TextValue : '-'}\r\n {salesLine.data.product?.Name}\r\n {salesLine.data.product?.ItemId}{salesLine.data.salesLine.Quantity}{currencyFormat(lineTotal, context)}{currencyFormat(salesLine?.data?.salesLine?.TotalAmount, context)}$A$ {getOrderStatus(salesLine.data.salesLine.SalesStatusValue)}\r\n \r\n
\r\n
\r\n )}\r\n {!delivery.showTimeslot && address}\r\n {delivery.showTimeslot && (\r\n \r\n {address}\r\n {delivery.pickupDateTimeslot}\r\n \r\n )}\r\n
\r\n
\r\n \r\n );\r\n }\r\n};\r\n\r\nexport const OrderDetailsGroups: React.FC = ({\r\n groupsProps,\r\n groups,\r\n resources,\r\n salesId,\r\n createdDate,\r\n statusValue,\r\n context\r\n}) => (\r\n \r\n {groups.map((group: IGroup, index: number) => (\r\n \r\n ))}\r\n \r\n);\r\ninterface IOrderSummaryExtend {\r\n discountAmount?: number;\r\n context?: ICoreContext>;\r\n deliveryMode?: string;\r\n chargeAmount?: number;\r\n}\r\n\r\ninterface JSXNumberValue {\r\n value: number;\r\n}\r\nexport const OrderDetailsOrderSummary: React.FC = ({\r\n orderSummaryProps,\r\n heading,\r\n subtotal,\r\n shipping,\r\n tax,\r\n totalAmount,\r\n earnedPoints,\r\n discountAmount,\r\n context,\r\n deliveryMode,\r\n chargeAmount\r\n}) => {\r\n const subTotalJSX = subtotal as JSX.Element;\r\n const subTotalJSXValue = subTotalJSX.props as JSXNumberValue;\r\n const subTotalAmount = subTotalJSXValue?.value;\r\n return (\r\n \r\n <>\r\n

Payment Summary

\r\n
\r\n {heading}\r\n\r\n {/* {subtotal} */}\r\n

\r\n Subtotal\r\n \r\n {currencyFormat(subTotalAmount, context)}\r\n \r\n

\r\n

\r\n Shipping Fee\r\n \r\n {deliveryMode && deliveryMode === 'Collection' ? (\r\n \r\n FREE\r\n \r\n ) : chargeAmount === 0 ? (\r\n

\r\n {'To Be Calculated '}\r\n
\r\n \r\n \r\n {\r\n 'This quotation is excluding freight costs. Freight will be detailed in your sales order confirmation.'\r\n }\r\n \r\n
\r\n
\r\n ) : (\r\n {currencyFormat(chargeAmount, context)}\r\n )}\r\n \r\n

\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC> = ({\r\n moduleProps,\r\n viewModes,\r\n tableViewActions,\r\n table,\r\n placedBy,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n groups,\r\n resources,\r\n\r\n config: { bannerImage, bannerLink },\r\n context: {\r\n request: { gridSettings },\r\n actionContext: { requestContext }\r\n },\r\n context,\r\n data: {\r\n orderHydration: { result }\r\n }\r\n}) => {\r\n const { salesOrder } = result!;\r\n\r\n const imageProps = {\r\n gridSettings: gridSettings ?? {},\r\n imageSettings: bannerImage?.imageSettings\r\n };\r\n interface IContentBlockFullConfig extends IContentBlockConfig {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\r\n msdyn365__moduleLayout?: string;\r\n }\r\n const contentBlockImage = (\r\n \r\n );\r\n return (\r\n <>\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {tableViewActions}\r\n {result?.salesOrder?.Name ? (\r\n
\r\n {resources.orderPlacedBy} {result?.salesOrder?.Name?.split(' ')[0]}\r\n
\r\n ) : (\r\n placedBy\r\n )}\r\n {viewModes}\r\n {table}\r\n {groups && orderInfomation && (\r\n \r\n )}\r\n \r\n {/* {orderInfomation && } */}\r\n {orderSummary && (\r\n \r\n )}\r\n {bannerLink && bannerLink.linkUrl && bannerLink.linkUrl.destinationUrl && (\r\n
\r\n {' '}\r\n \r\n {contentBlockImage}\r\n \r\n
\r\n )}\r\n {/* {payment && } */}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISearchCategoryViewProps,\r\n ISearchFormViewProps,\r\n ISearchKeywordViewProps,\r\n ISearchProductViewProps\r\n} from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label,\r\n isLoadingAutoSuggest,\r\n isLoadingNode,\r\n context: {\r\n actionContext: {\r\n requestContext: {\r\n user: { isAuthenticated }\r\n }\r\n }\r\n }\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\r\n {_renderProductSuggestions(\r\n ProductSuggest,\r\n UlProduct,\r\n autosuggestProduct,\r\n isLoadingAutoSuggest,\r\n isLoadingNode,\r\n isAuthenticated\r\n )}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.input}\r\n {form.cancelBtn}\r\n {form.submitBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode,\r\n isAuthenticated?: boolean\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n
{item.thumbnail}
\r\n
\r\n
{item.text}
\r\n {/* VSI CUSTOMIZATION START => Price Shows in Search for Only Logged in User */}\r\n {/*
{isAuthenticated ? item.price : null}
*/}\r\n
\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;\r\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 { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\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 {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\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 IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\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 Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\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';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): 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, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): 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, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default SignInButton;\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 ISignInDescription {\n className: string;\n description: string;\n}\n\nconst SignInDescription: React.FC = ({ className, description }) =>

{description}

;\n\nexport default SignInDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignInErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignInError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignInError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n ariaLabel?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignInInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst SignInInput: React.FC = ({ id, type, value, pattern, className, maxLength, ariaLabel, onChange }) => (\n \n);\n\nexport default SignInInput;\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 ISignInLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignInLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignInLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInLink {\n id?: string;\n className: string;\n href: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n}\n\nconst SignInLink: React.FC = ({ id, className, href, telemetryContent, ariaLabel, text }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignInLink;\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 ISignInLoadingIcon {\n className: string;\n}\n\nconst SignInLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignInLoadingIcon;\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 ISignInLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignInLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignInLoadingMessage;\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 ISignInText {\n className: string;\n text: string;\n}\n\nconst SignInText: React.FC = ({ className, text }) => {text};\n\nexport default SignInText;\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 { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport SignInButtonComponent from './components/sign-in-button';\nimport SignInDescriptionComponent from './components/sign-in-description';\nimport SignInErrorComponent from './components/sign-in-error';\nimport SignInInputComponent from './components/sign-in-input';\nimport SignInLabelComponent from './components/sign-in-label';\nimport SignInLinkComponent from './components/sign-in-link';\nimport SignInLoadingIconComponent from './components/sign-in-loading-icon';\nimport SignInLoadingMessageComponent from './components/sign-in-loading-message';\nimport SignInTextComponent from './components/sign-in-text';\nimport { ISignInConfig, ISignInProps, ISignInResources } from './sign-in.props.autogenerated';\n\nexport interface ISignInViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignInItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignInSocialItem {\n key: string;\n button: INodeProps;\n image: React.ReactNode;\n text: React.ReactNode;\n}\n\nexport interface ISignInB2BItem {\n key: string;\n button: INodeProps;\n text: React.ReactNode;\n}\n\nexport interface ISignInSocialAccount {\n socialAccounts: INodeProps;\n items: ISignInSocialItem[];\n}\n\nexport interface ISignInB2BAccount {\n socialAccounts: INodeProps;\n items: ISignInB2BItem[];\n}\nexport interface ISignInLocalAccount {\n localAccount: INodeProps;\n items: ISignInItem[];\n forgetPassword: React.ReactNode;\n disclaimer: React.ReactNode;\n error: React.ReactNode;\n signInButton: React.ReactNode;\n}\n\nexport interface ISignInLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignInViewProps {\n className: string;\n viewState: ISignInViewState;\n signIn: IModuleProps;\n loading: ISignInLoading;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n signInSection: INodeProps;\n signInSectionHeading: React.ReactNode;\n signInLocalAccount: ISignInLocalAccount;\n signInSocialAccount: ISignInSocialAccount;\n signInB2BAccount: ISignInB2BAccount;\n signUpSection: INodeProps;\n signUpSectionHeading: React.ReactNode;\n signUpDescription: React.ReactNode;\n signUpLink: React.ReactNode;\n}\n\n/**\n * SignIn component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass SignIn extends React.Component> {\n private readonly moduleClassName: string = 'ms-sign-in';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private emailId: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: ISignInProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.emailId = 'logonIdentifier';\n }\n\n public componentDidMount(): void {\n this._prePopulateData();\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: ISignInProps, nextState: ISignInViewState): 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 {\n const config: ISignInConfig = this.props.config || {};\n const resources: ISignInResources = this.props.resources || {};\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signIn: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n signInSection: {\n className: `${this.moduleClassName}__sign-in-section`\n },\n signInSectionHeading: (\n \n ),\n signInLocalAccount: {\n localAccount: {\n className: `${this.moduleClassName}__account-items localAccount`\n },\n items: [\n this._renderInput(\n this.emailId,\n 'email',\n resources.emailAddressLabelText,\n resources.emailAddressAriaLabel,\n this.emailRegex\n ),\n this._renderInput('password', 'password', resources.passwordLabelText)\n ],\n forgetPassword: (\n \n ),\n disclaimer: config.signInDisclaimer && (\n \n ),\n error: ,\n signInButton: (\n \n )\n },\n signInSocialAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__social-accounts`\n },\n items: [\n this._renderSocialAccount(\n 'FacebookExchange',\n resources.facebookButtonText,\n resources.facebookButtonAriaLabel,\n config.facebookIcon\n ),\n this._renderSocialAccount(\n 'MicrosoftAccountExchange',\n resources.microsoftButtonText,\n resources.microsoftButtonAriaLabel,\n config.microsoftIcon\n )\n ]\n },\n signInB2BAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__b2b-social-accounts`\n },\n items: [\n this._renderB2BSocialAccount(\n 'StoreManagerB2BSignin',\n resources.b2bButtonText,\n resources.b2bButtonAriaLabel,\n config.displayB2bAccountManagerSignin\n )\n ]\n },\n signUpSection: {\n className: `${this.moduleClassName}__sign-up-section`\n },\n signUpSectionHeading: (\n \n ),\n signUpDescription: (\n \n ),\n signUpLink: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.signInDisclaimer = event.target.value);\n\n public handleSignInHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signInHeading.text = event.target.value);\n\n public handleSignUpHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signUpHeading.text = event.target.value);\n\n private readonly _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['CONTENT'] && window['CONTENT']['email_pattern']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n this.emailRegex = window['CONTENT']['email_pattern'];\n }\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // @ts-expect-error\n this.emailId = (window.SA_FIELDS.AttributeFields || [])[0].ID || this.emailId;\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignInResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n requiredField_email: resources.requriedEmailError,\n requiredField_password: resources.requriedPasswordError,\n invalid_email: resources.invalidEmailError,\n invalid_password: resources.invalidPasswordError,\n unknown_error: resources.unknownError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private _renderInput(id: string, type: string, labelText: string, ariaLabel?: string, pattern?: string): ISignInItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n error: (\n \n ),\n input: (\n \n )\n };\n }\n\n private _renderSocialAccount(id: string, text: string, ariaLabel: string, iconImage?: Msdyn365.IImageData): ISignInSocialItem {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n image: this._createImageMarkup(iconImage),\n text: \n };\n }\n\n private _renderB2BSocialAccount(\n id: string,\n text: string,\n ariaLabel: string,\n _displayB2bAccountManagerSignin: boolean | undefined\n ): ISignInB2BItem | null {\n if (_displayB2bAccountManagerSignin) {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n text: \n };\n }\n return null;\n }\n\n private _createImageMarkup(iconImage?: Msdyn365.IImageData): React.ReactNode | null {\n if (iconImage) {\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings || {},\n imageSettings: iconImage && iconImage.imageSettings\n };\n const pictureClassName = `${this.moduleClassName}__social-account-picture`;\n return (\n
\n \n
\n );\n }\n return null;\n }\n}\n\nexport default SignIn;\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 ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps\n} from './sign-in';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignInView: React.FC = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription,\n signUpLink\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n {B2BAccount(signInB2BAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpLink}\n \n \n \n );\n};\n\nexport default SignInView;\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 IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartViewProps, IOrderSummaryErrors } from './cart';\nimport { ICartlinesViewProps } from './components/cart-line-items';\nimport { ICartLineItemViewProps } from './components/cart-line-items-promotion';\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n cartEmptyText: string,\n CartlinesWrapper: INodeProps,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map(cartLine => {\n return (\n
    \n {cartLine.cartline}\n {storeSelector && cartLine.pickUpInStore ? (\n {cartLine.pickUpInStore.defaultComponent}\n ) : null}\n {cartLine.addToOrderTemplate ? (\n \n {cartLine.remove}\n {cartLine.addToWishlist}\n {cartLine.addToOrderTemplate}\n \n ) : (\n <>\n {cartLine.remove}\n {cartLine.addToWishlist}\n \n )}\n
    \n );\n });\n }\n return cartDataResult ? (\n
    \n

    {cartEmptyText}

    \n {backToShoppingButton}\n
    \n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Method will render error block.\n * @param errorData -The order summary errors interface.\n * @returns Jsx element.\n */\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Method will render invoice summary lines.\n * @param invoiceSummaryLines -The invoicesummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render order summary lines.\n * @param orderSummaryLines -The ordersummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render cart promotions.\n * @param promotions -The cartline item view props.\n * @returns Jsx element.\n */\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Method will render cartlines group title.\n * @param cartLine -The cartline view props.\n * @param titleSeparate -The title separate.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n return (\n <>\n \n {isBopisSelected ? (\n

    \n {cartLine.pickUpInStore?.deliveryOption}\n {titleSeparate}\n {cartLine.pickUpInStore?.orgUnitName}\n

    \n ) : null}\n
    \n \n );\n};\n\n/**\n * Method will render cartlines groups header title.\n * @param pickUpText -The pickup text for group.\n * @param shippingText -The shipping text for group.\n * @param emailShippingText -The email shipping text for group.\n * @param titleSeparate -The title separator.\n * @param cartLine -The cartline view props.\n * @param emailDeliveryModeCode -The email delivery code from channel.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupHeader = (\n pickUpText: string,\n shippingText: string,\n emailShippingText: string,\n titleSeparate: string,\n cartLine: ICartlinesViewProps,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\n }\n\n return (\n <>\n
    \n

    \n

    {groupTitle}

    \n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\n
    \n \n );\n};\n\n/**\n * Method will render cartlines in groups.\n * @param props -The cartline.\n * @returns Jsx element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
    \n {props.cartLinesGroup.map(cartlines => {\n return (\n
    \n {renderCartLinesGroupHeader(\n props.resources.pickUpText,\n props.resources.shippingText,\n props.resources.emailshippingText,\n props.resources.titleSeparate,\n cartlines[0],\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n
    \n );\n })}\n
    \n );\n }\n return props.cartDataResult ? (\n
    \n
    \n

    {props.resources.emptyCartText}

    \n {props.backToShoppingButton}\n
    \n
    \n ) : (\n <>{props.waitingComponent}\n );\n};\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
    \n {props.title}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n renderCartLinesGroup(props)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
    \n);\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\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 MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\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 { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _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\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
    \n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
    \n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\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.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\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 | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\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 * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\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 { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\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 { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n
    \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\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 { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n"],"names":["BusinessAccountAddress","React","constructor","props","super","countryRegionId","countryRegions","addressPurposes","defaultAddressType","shouldAutoFocus","excludedList","AddressItemType","Name","AddressTypeValue","IsPrimary","_resetAddressFields","this","addressFormat","getAddressFormat","map","addressFormatItem","displayType","AddressItemDisplayType","Input","addUpdateAddress","name","Checkbox","type","ThreeLetterISORegionName","State","undefined","_dataInitialize","data","reaction","result","_data$countryRegions$","_data$addressPurposes","countryStates","_data$countryStates$r","stateProvinceInfo","_renderAddOrUpdateAddress","_this$props","usSiteFlag","context","actionContext","requestContext","apiSettings","oun","app","config","ounNumberForUsSite","AddressAddUpdate","isUpdating","resources","addressType","AddressType","Company","defaultCountryRegionId","selectedAddress","validationError","hasError","addressActionResponse","telemetryContent","dropdownDisplayData","getPrefilledAddressDropdownData","addressStateDefaultSelectionText","onInputChange","_onAddressAddUpdateInputChange","onDropdownChange","_onAddressAddUpdateDropdownChange","event","_updateAddress","target","value","async","_updateCountryRegionId","_this$props2","updateForm","isRequired","cleanValue","replace","RegExp","tempValue","split","join","set","_isEmpty","AddressFormat","AddressMetaData","_objectSpread","validateAddressFormat","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","validationRules","length","validationRule","AddressValidationRuleType","Required","addressCommon","getStateProvinces","then","some","state","StateId","telemetry","AddressCommon","getTelemetryObject","request","telemetryPageName","friendlyName","componentDidMount","_setDefaultCountryRegionId","shouldComponentUpdate","nextProps","nextState","render","_this$props3","renderView","resetAddress","className","moduleProps","classnames","showAddOrUpdateAddress","_request$channel","market","channel","ChannelCountryRegionISOCode","getDefaultCountryRegionId","__decorate","observable","_ref","AddressForm","heading","items","error","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","Node","Object","assign","item","AddressItem","key","label","alert","input","customAlert","customLabel","AddressError","title","message","Module","OrderDetailsOrderInfomation","orderInformationProps","channelReferenceId","OrderDetailsSalesLine","salesLineProps","salesLine","buyAgainButton","errors","OrderDetailsGroupDelivery","_ref2","deliveryProps","count","statusValue","getOrderStatus","OrderDetailsGroup","_ref3","_context$app","_context$app2","_context$actionContex","_context$request$chan","group","salesId","createdDate","groupProps","delivery","address","salesLinesProps","salesLines","productManufacturarAttribute","productWeightAttribute","isMobile","setIsMobile","attributeValues","setAttributeValues","_updateViewport","viewport","_getViewport","device","Type","MsDyn365","isBrowser","window","innerWidth","gridSettings","xs","w","sm","md","lg","addEventListener","res","_salesLine$data$produ","_context$request","_context$request2","_salesLine$data$produ2","productAttributes","getAttributeValuesAsync","callerContext","queryResultSettings","product","RecordId","channelId","catalogId","manufacturer","find","push","recId","fetchData","createdDateJSXProps","customDate","children","dateParts","formattedDateString","Date","toLocaleDateString","dateLocale","dateFormat","currency","Currency","formattedDateStringBylocale","dateFormatByLocale","_salesLine$data","_salesLine$data2","_salesLine$data$produ3","_manufacturerObj$manu","_manufItemTypeNameObj","_context$actionContex2","_salesLine$data4","_salesLine$data5","_salesLine$data$produ4","_salesLine$data$produ5","_salesLine$data$produ6","_salesLine$data6","salesLineAttr","AttributeValues","productAttrManufactrValue","productAttrWeightValue","lineTotal","Number","GrossAmount","DiscountAmount","manufItemTypeNameObj","ExtensionProperties","Key","manufacturerObj","_salesLine$data3","urlPath","formatUrlPath","TextValue","Value","StringValue","pathName","url","requestUrl","pathname","isAddingPathWithUrl","addPathWithUrl","productUrl","origin","buyAgainButtonCloned","href","buyAgain","documentedDateTabelHeaderLabel","salesIDHeaderLabel","weightTabelHeaderLabel","manufacturerHeaderLabel","productTabelHeaderLabel","productNumberTabelHeaderLabel","ItemId","quantityTabelHeaderLabel","Quantity","netAmountTabelHeaderLabel","currencyFormat","grossAmountTabelHeaderLabel","TotalAmount","currencyTabelHeaderLabel","fulfilledTabelHeaderLabel","SalesStatusValue","orderStateLabel","actionTabelHeaderLabel","_salesLine$data7","_salesLine$data8","_salesLine$data$produ7","_manufacturerObj$manu2","_manufacturerObj$manu3","_manufItemTypeNameObj2","_manufItemTypeNameObj3","_context$actionContex3","_salesLine$data10","_salesLine$data11","_salesLine$data$produ8","_salesLine$data$produ9","_salesLine$data$produ10","_salesLine$data12","_salesLine$data9","showTimeslot","pickupProps","pickupDateTimeslot","OrderDetailsGroups","_ref4","groupsProps","groups","index","OrderDetailsOrderSummary","_ref5","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","discountAmount","deliveryMode","chargeAmount","subTotalJSXValue","subTotalAmount","itemProp","tabIndex","OrderDetailsPayment","_ref6","paymentMethodsProps","methods","OrderDetailsHelp","_ref7","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref8","_result$salesOrder","_result$salesOrder2","_bannerLink$linkUrl","viewModes","tableViewActions","table","placedBy","loading","orderInfomation","orderSummary","bannerImage","bannerLink","orderHydration","salesOrder","imageProps","imageSettings","contentBlockImage","Msdyn365","editProps","imagePropertyName","layout","msdyn365__moduleLayout","shouldSkipToMainImage","orderPlacedBy","StatusValue","DeliveryMode","ChargeAmount","linkUrl","destinationUrl","openInNewTab","ariaLabel","_renderForm","form","SearchForm","FormWrapper","cancelBtn","submitBtn","_renderKeywordSuggestions","KeywordSuggest","UlKeyword","keywordSuggestions","isLoadingAutoSuggest","isLoadingNode","text","_renderProductSuggestions","ProductSuggest","UlProduct","productSuggestions","isAuthenticated","LiProduct","id","AProduct","thumbnail","_renderCategorySuggestions","CategorySuggest","UlCategory","categorySuggestions","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","searchText","AutoSuggest","autosuggestCategory","autosuggestKeyword","autosuggestProduct","user","AccountCustomerBalanceTile","_initState","setState","content","ErrorComponent","apiGenericErrorMessage","get","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","isCustomerAccountPaymentEnabled","links","viewProps","Heading","headingTag","tag","isDetailsLinkDisplayed","LinksComponent","onTextChange","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","computed","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","forEach","link","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","role","additionalProperties","SignUpText","LoyaltySignUp","handleHeadingChange","handleMemberHeadingChange","memberHeading","_issueLoyalty","clicked","IssueLoyaltyInput","issueLoyalty","location","catch","debug","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","params","isEditor","status","onEdit","signInLink","Button","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","onClick","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","observer","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","modal","Modal","toggle","onToggle","applicationNode","isOpen","returnFocusRef","returnRef","modalHeader","ModalHeader","modalFooter","ModalFooter","modalBody","ModalBody","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onChange","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","isJoining","substring","qsps","qsp","splitQsp","isModalOpen","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","fullCard","update","GetLoyaltyCardInput","description","errorClassName","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","pattern","forId","htmlFor","moduleClassName","handleParagraphChange","signInDisclaimer","handleSignInHeadingChange","signInHeading","handleSignUpHeadingChange","signUpHeading","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","isInitialized","emailRegex","emailId","SA_FIELDS","AttributeFields","ID","errorMessages","requiredField_email","requriedEmailError","requiredField_password","requriedPasswordError","invalid_email","invalidEmailError","invalid_password","invalidPasswordError","unknown_error","unknownError","EmailRegex","defaultRegex","source","componentDidUpdate","viewState","isShowLoading","signIn","icon","SignInLoadingIconComponent","SignInLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","signInSection","signInSectionHeading","signInLocalAccount","localAccount","_renderInput","emailAddressLabelText","emailAddressAriaLabel","passwordLabelText","forgetPassword","SignInLinkComponent","forgotPasswordButtonAriaLabel","forgotPasswordButtonText","disclaimer","SignInErrorComponent","signInButton","SignInButtonComponent","loginButtonAriaLabel","loginButtonText","signInSocialAccount","socialAccounts","_renderSocialAccount","facebookButtonText","facebookButtonAriaLabel","facebookIcon","microsoftButtonText","microsoftButtonAriaLabel","microsoftIcon","signInB2BAccount","_renderB2BSocialAccount","b2bButtonText","b2bButtonAriaLabel","displayB2bAccountManagerSignin","signUpSection","signUpSectionHeading","signUpDescription","SignInDescriptionComponent","signUpDescriptionText","signUpLink","signUpButtonAriaLabel","signUpButtonText","labelText","wrapper","SignInLabelComponent","SignInInputComponent","iconImage","button","image","_createImageMarkup","SignInTextComponent","_displayB2bAccountManagerSignin","pictureClassName","SignInLoading","LocalAccount","SocialAccount","B2BAccount","BusinessPartnerPromotionTermsParagraph","titleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","horizontalPosition","verticalPosition","autoFocus","fade","termsOfServiceModalHeading","submitRequestLabel","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","StringExtensions","isNullOrEmpty","IsAdmin","_renderCartlines","cartLines","cartEmptyText","CartlinesWrapper","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","cartLine","_cartLine$cartlineId","cartlineId","toString","cartline","pickUpInStore","ContainerProps","defaultComponent","addToOrderTemplate","remove","addToWishlist","renderCartLinesGroupHeader","pickUpText","shippingText","emailShippingText","titleSeparate","emailDeliveryModeCode","_cartLine$pickUpInSto4","groupTitle","isBopisSelected","toLowerCase","renderCartLinesGroupTitle","_cartLine$pickUpInSto","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","deliveryOption","orgUnitName","_props$cart","_props$cart2","errorData","promotions","renderModuleAttributes","cart","hasInvoiceLine","promotionOptions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","multiplePickUpEnabled","cartLinesGroup","ArrayExtensions","hasElements","cartlines","_props$context$action","emailshippingText","EmailDeliveryModeCode","emptyCartText","renderCartLinesGroup","orderSummaryHeading","OrderSummaryWrapper","_renderInvoiceSummarylines","invoiceSummaryLines","OrderSummaryItems","invoices","giftCard","loyalty","orderTotal","invoiceSummaryLineitems","_renderOrderSummarylines","orderSummaryLines","promoCode","otherCharge","totalDiscounts","orderSummaryLineitems","OrderSummaryErrors","Wrapper","header","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderCustomerName","accountInformation","customer","FirstName","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","src","altText","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","q","h","lazyload","_categoryImage$imageS","ImageData","Image","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","document","body","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","ref","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","isDrawerOpen","colProps","toggleButtonProps","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","onTelemetryClick","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","BackTopFooter","backtoTopText","destination","BackToTop","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","navigationMenuSource","locale","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","category","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","_this$menuItemRef$cur","componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","currentViewModeState","onClickHandler","newViewModeState","viewModeDetailedViewAttributes","ViewMode","viewModeListViewAttributes","DetailedView","detailedViewOptionAriaLabel","ListView","listViewOptionAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","ProductComparisonState","instance","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","cookies","isConsentGiven","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_this$menuNode$curren2","_customUpdateViewport","customResizeThrottledEventHandler","hamburgerAriaLabel","isNullOrWhitespace","entries","parentMenuId","menu","one","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","timeout","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify"],"sourceRoot":""}