{"version":3,"file":"static/js/12.822c0aef257dd44341e7.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-text.tsx?4fc1","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-attributes.tsx?af03","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-description.tsx?e47a","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-links.tsx?36e8","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/fm-account-profile.tsx?311c","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/fm-account-profile.view.tsx?890b","webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.tsx?12c8","webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.view.tsx?638f","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-details.view.tsx?d810","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-history.view.tsx?1eff","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/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/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","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/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","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/cart.view.tsx?3909","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","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileText {\r\n className: string;\r\n text: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\r\n\r\nexport default IAccountProfileText;\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 MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\r\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IFmAccountProfileData } from '../fm-account-profile.data';\r\nimport { IFmAccountProfileProps } from '../fm-account-profile.props.autogenerated';\r\nimport TextComponent from './fm-account-profile-text';\r\n\r\ninterface IAttributePropertiesType {\r\n Name?: string;\r\n IsMandatory?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileAttributesProps {\r\n accountProfileProps: IFmAccountProfileProps;\r\n}\r\n\r\nexport enum AccountAttributeDataTypeValue {\r\n Decimal = 3,\r\n Integer = 4,\r\n Text = 5,\r\n TrueFalse = 6\r\n}\r\n\r\nexport interface IAttributePayloadData {\r\n recordId?: number;\r\n name?: string;\r\n dataTypeValue?: number;\r\n isEnumeration?: boolean;\r\n lowerBoundValue?: number;\r\n upperBoundValue?: number;\r\n decimalValue?: number;\r\n integerValue?: number;\r\n textValue?: string;\r\n booleanValue?: boolean;\r\n isMandatory?: boolean;\r\n defaultValue?: string;\r\n}\r\n\r\nexport interface IAccountProfileAttributesState extends React.ComponentState {\r\n editAttributes: boolean;\r\n phone: string;\r\n vatNumber: string;\r\n attributes: IDictionary;\r\n attributeError: IDictionary;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfileAttributes class.\r\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\r\n */\r\n@observer\r\nclass AccountProfileAttributes extends React.Component {\r\n private readonly attributePayloadData: IAttributePayloadData[];\r\n\r\n @observable private isUpdatingAttributes: boolean = false;\r\n\r\n @observable private gotException: boolean = false;\r\n\r\n private hasError: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private initialAttributes: IDictionary;\r\n\r\n private initialCustomerAttributes?: CustomerAttribute[];\r\n\r\n private initialPhone: string;\r\n\r\n private initialVatNumber: string;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly editRef: React.RefObject;\r\n\r\n private readonly attributesContainerRef: React.RefObject;\r\n\r\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\r\n\r\n private readonly maxIntegerLimit: number = 2_100_000_000;\r\n\r\n private readonly minIntegerLimit: number = -2_100_000_000;\r\n\r\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\r\n\r\n private readonly minDecimalLimit: number = -7_900_000_000_000;\r\n\r\n private readonly maxStringLength: number = 1000;\r\n\r\n private readonly maxVATNumberLength: number = 20;\r\n\r\n private readonly maxPhoneLength: number = 25;\r\n\r\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n\r\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\r\n\r\n constructor(props: IAccountProfileAttributesProps) {\r\n super(props);\r\n this.state = {\r\n editAttributes: false,\r\n phone: '',\r\n vatNumber: '',\r\n attributes: {},\r\n attributeError: {}\r\n };\r\n this.initialAttributes = {};\r\n this.initialCustomerAttributes = [];\r\n this.initialPhone = '';\r\n this.initialVatNumber = '';\r\n this.attributePayloadData = [];\r\n const telemetryPageName =\r\n (this.props.accountProfileProps &&\r\n this.props.accountProfileProps.context &&\r\n this.props.accountProfileProps.context.request &&\r\n this.props.accountProfileProps.context.request.telemetryPageName) ||\r\n '';\r\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\r\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\r\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n this.editRef = React.createRef();\r\n this.attributesContainerRef = React.createRef();\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._buildPayloadData();\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n reaction(\r\n () => this.props.accountProfileProps.data.customerInformation.result,\r\n () => {\r\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\r\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n }\r\n );\r\n reaction(\r\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\r\n () => {\r\n this._buildPayloadData();\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IAccountProfileAttributesProps, nextState: IAccountProfileAttributesState): boolean {\r\n if (this.state === nextState && this.props.accountProfileProps.data === nextProps.accountProfileProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return this._renderAttributes();\r\n }\r\n\r\n private readonly _renderAttributes = (): JSX.Element | null => {\r\n const { config, data, resources } = this.props.accountProfileProps;\r\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\r\n const additionalInformationSectionHeading =\r\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\r\n const showAttributes = config.showAttributes || '';\r\n const attributes = showAttributes.split(',');\r\n const elements = attributes.map(att => {\r\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\r\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\r\n ) || { RecordId: 0 };\r\n return this._renderAttribute(attributeDefinition);\r\n });\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\r\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\r\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\r\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n const customerInformation = data.customerInformation.result;\r\n\r\n this.isEditAsyncCustomerFeatureEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\r\n\r\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\r\n const disableBtn: boolean =\r\n (this.props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (customerInformation?.IsAsyncCustomer || false) &&\r\n !this.isEditAsyncCustomerFeatureEnabled;\r\n return (\r\n \r\n {config.additionalInformationSectionHeading && (\r\n \r\n )}\r\n {config.showPhone && this._renderPhone()}\r\n {config.showVatNumber && this._renderVatNumber()}\r\n {elements}\r\n {this.gotException && (\r\n
\r\n \r\n
\r\n )}\r\n {!edit && (\r\n \r\n {resources.attributesEditButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesSaveButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesCancelButtonText}\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderPhone = (): JSX.Element | null => {\r\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {phoneSectionHeading && }\r\n \r\n {this._renderError('Phone')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderVatNumber = (): JSX.Element | null => {\r\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {vatNumberSectionHeading && }\r\n \r\n {this._renderError('VATNumber')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\r\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n case AccountAttributeDataTypeValue.Decimal:\r\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.Text:\r\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n return this._renderBoolean(customAttribute, className, editAttributes);\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n private readonly _renderIntegerDecimalInput = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderTextInputOrSelect = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n let displayName: string = attributeProps.Name || '';\r\n if (displayName === 'Birthday') {\r\n displayName = this.props.accountProfileProps.resources.birthdayHeadingText;\r\n }\r\n if (isEnumeration && customAttribute.EnumerationDetails) {\r\n const value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n return (\r\n
\r\n \r\n \r\n {hasNoValue && (\r\n \r\n )}\r\n {customAttribute.EnumerationDetails.map(option => {\r\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\r\n return (\r\n \r\n {option.EnumerationValue}\r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (this.props.accountProfileProps.config.source === 'FinanceOperationUS' && customAttribute.Name === 'Birthday') {\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n }\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderBoolean = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n let value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n const render = !(hasNoValue && !editAttributes);\r\n value = value || 'false';\r\n const toggleState = (value === 'true' && 'enable') || 'disable';\r\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\r\n const ariaPressed = (value === 'true' && true) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n let toggleValue = 'false';\r\n if (value === 'true') {\r\n toggleValue = 'false';\r\n } else {\r\n toggleValue = 'true';\r\n }\r\n\r\n return (\r\n \r\n \r\n {render && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\r\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\r\n const hasError = !StringExtensions.isNullOrWhitespace(error);\r\n if (hasError) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n return {\r\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\r\n IsMandatory: isMandatory\r\n };\r\n };\r\n\r\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ phone: value });\r\n };\r\n\r\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ vatNumber: value });\r\n };\r\n\r\n private readonly _enableAttributes = () => {\r\n this.hasError = false;\r\n\r\n // To clear exception messages\r\n this.gotException = false;\r\n this.setState({ editAttributes: true, attributeError: {} });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n if (this.attributesContainerRef.current) {\r\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\r\n this.attributeClassName\r\n );\r\n if (attributes && attributes.length > 0) {\r\n this._setFocus(attributes[0] as HTMLElement);\r\n }\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _disableAttributes = () => {\r\n this.setState({\r\n editAttributes: false,\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onUSBdayChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = `1900/${event.target.value}`;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\r\n event: React.MouseEvent\r\n ) => {\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.currentTarget.selectedOptions[0].value;\r\n const index = event.currentTarget.selectedOptions[0].index;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n },\r\n selectedIndex: {\r\n ...this.state.selectedIndex,\r\n [name]: index\r\n }\r\n });\r\n };\r\n\r\n private readonly _getAttributes = () => {\r\n const { config, data } = this.props.accountProfileProps;\r\n const showAttributes = config.showAttributes || '';\r\n const showAttributesArray = showAttributes.split(',');\r\n const customer = data.customerInformation.result;\r\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\r\n const attributes: IDictionary = {};\r\n\r\n showAttributesArray.forEach(showAttribute => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\r\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\r\n let value: string = '';\r\n if (attribute && attribute.AttributeValue) {\r\n const name = (attribute && attribute.Name) || '';\r\n switch (attribute.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n if (attribute.AttributeValue.IntegerValue) {\r\n value = String(attribute.AttributeValue.IntegerValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n if (attribute.AttributeValue.DecimalValue) {\r\n value = String(attribute.AttributeValue.DecimalValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n if (attribute.AttributeValue.StringValue) {\r\n value = attribute.AttributeValue.StringValue;\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n if (attribute.AttributeValue.BooleanValue !== null) {\r\n value = String(attribute.AttributeValue.BooleanValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n }\r\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\r\n attributes[showAttribute] = '';\r\n }\r\n if (value.length === 0 && defaultValue) {\r\n attributes[showAttribute] = String(defaultValue);\r\n }\r\n });\r\n if (Object.keys(this.initialAttributes).length === 0) {\r\n this.initialAttributes = attributes;\r\n }\r\n this.setState({ attributes });\r\n };\r\n\r\n // eslint-disable-next-line\r\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\r\n const { resources } = this.props.accountProfileProps;\r\n const { phone, vatNumber } = this.state;\r\n const attributeError: IDictionary = {};\r\n let hasError: boolean = false;\r\n let hasValue: boolean = true;\r\n for (const [key, value] of Object.entries(this.state.attributes)) {\r\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\r\n if (payloadData) {\r\n switch (payloadData.dataTypeValue) {\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const decimalValue = Number(value);\r\n if (isNaN(decimalValue)) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (decimalValue > this.maxDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (decimalValue < this.minDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.decimalValue = decimalValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Integer:\r\n const integerValue = Number(value);\r\n if (isNaN(integerValue) || value.includes('.')) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (integerValue > this.maxIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (integerValue < this.minIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.integerValue = integerValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n let trimValue = '';\r\n if (!StringExtensions.isNullOrWhitespace(value)) {\r\n trimValue = value.trim();\r\n }\r\n if (trimValue.length > this.maxStringLength) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputStringMaxLengthErrorText,\r\n payloadData.name,\r\n this.maxStringLength\r\n );\r\n hasError = true;\r\n }\r\n if (!hasError) {\r\n payloadData.textValue = trimValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n payloadData.booleanValue = value === 'true';\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n\r\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\r\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\r\n hasError = true;\r\n }\r\n\r\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\r\n const attribute = custmerAttributes.find(att => att.Name === key);\r\n const index = custmerAttributes.findIndex(att => att.Name === key);\r\n\r\n if (index !== -1 && !hasValue) {\r\n custmerAttributes.splice(index, 1);\r\n }\r\n\r\n if (!hasError && hasValue) {\r\n if (attribute) {\r\n attribute.Attribute = undefined;\r\n attribute.DataTypeValue = payloadData.dataTypeValue;\r\n attribute.Name = payloadData.name;\r\n attribute.RecordId = payloadData.recordId;\r\n attribute.Units = undefined;\r\n attribute.AttributeValue = {\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n };\r\n attribute.ExtensionProperties = [];\r\n attribute.NameTranslations = [];\r\n } else {\r\n custmerAttributes.push({\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\r\n Attribute: undefined,\r\n DataTypeValue: payloadData.dataTypeValue,\r\n KeyName: payloadData.name,\r\n Name: payloadData.name,\r\n RecordId: payloadData.recordId,\r\n Units: undefined,\r\n AttributeValue: {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n },\r\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\r\n ExtensionProperties: [],\r\n 'NameTranslations@odata.type':\r\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\r\n NameTranslations: []\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (phone.trim().length > this.maxPhoneLength) {\r\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\r\n hasError = true;\r\n } else {\r\n customer.Phone = phone.trim();\r\n }\r\n\r\n if (vatNumber.trim().length > this.maxVATNumberLength) {\r\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\r\n hasError = true;\r\n } else {\r\n customer.VatNumber = vatNumber.trim();\r\n }\r\n\r\n this.hasError = hasError;\r\n this.setState({ attributeError });\r\n };\r\n\r\n private readonly _saveAttributes = async () => {\r\n const { context, data } = this.props.accountProfileProps;\r\n const customer = data.customerInformation.result;\r\n\r\n let source: string;\r\n switch (this.props.accountProfileProps.config.source) {\r\n case 'FinanceOperationEU':\r\n source = 'Finance&Operation EU';\r\n break;\r\n case 'FinanceOperationUS':\r\n source = 'Finance&Operation US';\r\n break;\r\n default:\r\n source = 'Finance&Operation EU';\r\n }\r\n customer?.Attributes?.forEach(attribute => {\r\n if (attribute.Name === 'Source') {\r\n attribute.AttributeValue!.StringValue = source;\r\n attribute.ExtensionProperties![7].Value!.StringValue = source;\r\n }\r\n });\r\n\r\n if (customer && context) {\r\n this._addOrUpdateAttribute(customer);\r\n // console.log(customer.Attributes![3].AttributeValue?.StringValue);\r\n const input = new updateCustomerAttributesInput(\r\n customer.AccountNumber,\r\n customer.Attributes || [],\r\n context.request.apiSettings,\r\n customer.Phone,\r\n customer.VatNumber\r\n );\r\n\r\n this.isUpdatingAttributes = true;\r\n this.gotException = false;\r\n\r\n if (!this.hasError) {\r\n this.setState({ editAttributes: false });\r\n try {\r\n await updateCustomerAttributes(input, context.actionContext);\r\n // eslint-disable-next-line\r\n } catch (error) {\r\n this.gotException = true;\r\n customer.Attributes = this.initialCustomerAttributes;\r\n if (context.telemetry) {\r\n context.telemetry.exception(error as Error);\r\n context.telemetry.debug('Unable to update customer attributes');\r\n }\r\n this.setState({\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n }\r\n this.setState({ editAttributes: false });\r\n if (!this.gotException) {\r\n this.initialAttributes = this.state.attributes;\r\n this.initialCustomerAttributes = customer.Attributes;\r\n this.initialPhone = this.state.phone;\r\n this.initialVatNumber = this.state.vatNumber;\r\n }\r\n }\r\n\r\n this.isUpdatingAttributes = false;\r\n\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n }\r\n };\r\n\r\n private readonly _setFocus = (element: HTMLElement | null) => {\r\n element?.focus();\r\n };\r\n\r\n private readonly _buildPayloadData = () => {\r\n const { data } = this.props.accountProfileProps;\r\n const attributeDefinitions = data.attributeDefinitions.result || [];\r\n const attributes: IDictionary = {};\r\n\r\n attributeDefinitions.forEach(attributeDefinition => {\r\n const attributePayloadData: IAttributePayloadData = {};\r\n attributePayloadData.recordId = attributeDefinition.RecordId;\r\n attributePayloadData.name = attributeDefinition.Name;\r\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\r\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\r\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\r\n switch (attributeDefinition.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\r\n if (attributePayloadData.name && defaultIntegerValue) {\r\n attributePayloadData.defaultValue = String(defaultIntegerValue);\r\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\r\n if (attributePayloadData.name && defaultDecimalValue) {\r\n attributePayloadData.defaultValue = String(defaultDecimalValue);\r\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\r\n if (attributePayloadData.name && defaultStringValue) {\r\n attributePayloadData.defaultValue = defaultStringValue;\r\n attributes[attributePayloadData.name] = defaultStringValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n const defaultBooleanValue =\r\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\r\n if (attributePayloadData.name) {\r\n attributePayloadData.defaultValue = String(defaultBooleanValue);\r\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n this.attributePayloadData.push(attributePayloadData);\r\n });\r\n Object.keys(attributes).length > 0 && this.setState({ attributes });\r\n };\r\n\r\n private readonly _getCustomerPhoneAndVatNumber = () => {\r\n const customer = this.props.accountProfileProps.data.customerInformation.result;\r\n const phone = (customer && customer.Phone) || '';\r\n const vatNumber = (customer && customer.VatNumber) || '';\r\n this.setState({ phone, vatNumber });\r\n if (this.initialPhone.length === 0) {\r\n this.initialPhone = phone;\r\n }\r\n if (this.initialVatNumber.length === 0) {\r\n this.initialVatNumber = vatNumber;\r\n }\r\n };\r\n}\r\n\r\nexport default AccountProfileAttributes;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileDescription {\r\n className: string;\r\n description: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\r\n

{description}

\r\n);\r\n\r\nexport default IAccountProfileDescription;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ILinkData } from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nconst AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n linkdata.forEach((link, index) => {\r\n payLoad.contentAction.etext = link.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: link.isDisabled ? 'ms-account-profile__section-link-disable' : 'ms-account-profile__section-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n\r\nexport default AccountProfileLinks;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n ArrayExtensions,\r\n updateCustomerPersonalization,\r\n updateCustomerPersonalizationInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IFmAccountProfileData } from './fm-account-profile.data';\r\nimport {\r\n IFmAccountProfileProps,\r\n IEmailAddressSectionHeadingData,\r\n IHeadingData,\r\n INameSectionHeadingData\r\n} from './fm-account-profile.props.autogenerated';\r\nimport AccountProfileAttributes from './components/fm-account-profile-attributes';\r\nimport DescriptionComponent from './components/fm-account-profile-description';\r\nimport LinksComponent, { ILinksData } from './components/fm-account-profile-links';\r\nimport TextComponent from './components/fm-account-profile-text';\r\n\r\nexport interface IAccountPreference {\r\n accountPreference: INodeProps;\r\n heading: React.ReactNode;\r\n buttonWrapper: INodeProps;\r\n buttonYesText: React.ReactNode;\r\n buttonNoText: React.ReactNode;\r\n button: React.ReactNode;\r\n description: React.ReactNode;\r\n onUpdateAccountPreference(preferenceType?: string): void;\r\n}\r\n\r\nexport interface IAccountPreferences {\r\n accountPreferences: INodeProps;\r\n heading?: React.ReactNode;\r\n personalization: IAccountPreference;\r\n extraPreferences?: IAccountPreference[];\r\n}\r\n\r\nexport interface IAccountProfileItem {\r\n AccountProfileItem: INodeProps;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountCustomerAttributes {\r\n customerAttributes?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountProfileViewProps extends IFmAccountProfileProps {\r\n AccountProfile: IModuleProps;\r\n accountProfileWrapper?: INodeProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n emailSection: IAccountProfileItem;\r\n nameSection: IAccountProfileItem;\r\n preferenceSection: IAccountPreferences;\r\n customerAttributesWrapper?: INodeProps;\r\n customerAttributesSection?: IAccountCustomerAttributes;\r\n infoMessageBar?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfile component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountProfile extends React.Component> {\r\n @observable private isUpdatingPreference: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n private readonly payLoad: IPayLoad;\r\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n\r\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\r\n\r\n constructor(props: IFmAccountProfileProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IFmAccountProfileProps): boolean {\r\n if (this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config, resources, data } = this.props;\r\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\r\n\r\n const { editButtonText, editButtonAriaLabel } = resources;\r\n const customerInformation = data.customerInformation.result;\r\n\r\n this.isEditAsyncCustomerFeatureEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\r\n\r\n const invalidAsyncCustomerState: boolean =\r\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (customerInformation?.IsAsyncCustomer || false) &&\r\n !this.isEditAsyncCustomerFeatureEnabled;\r\n\r\n // As per the design, phone and vat numbers are part of the profile attributes section\r\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\r\n const editLink: ILinksData = {\r\n linkUrl: {\r\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\r\n },\r\n linkText: editButtonText,\r\n ariaLabel: editButtonAriaLabel,\r\n isDisabled: invalidAsyncCustomerState\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n AccountProfile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-profile', config.className)\r\n },\r\n infoMessageBar: invalidAsyncCustomerState && (\r\n \r\n ),\r\n accountProfileWrapper: {\r\n className: classnames('ms-account-profile-wrapper')\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n emailSection: this._renderEmailSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\r\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\r\n customerInformation && customerInformation.Email\r\n ),\r\n nameSection: this._renderNameSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\r\n nameSectionHeading as INameSectionHeadingData,\r\n this.getDescription(customerInformation),\r\n Msdyn365.isOboRequest(this.props.context.request) ? undefined : [editLink]\r\n ),\r\n preferenceSection: this._renderPreferenceSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\r\n invalidAsyncCustomerState,\r\n customerInformation\r\n ),\r\n customerAttributesWrapper: {\r\n className: classnames('ms-account-profile__attributes-wrapper')\r\n },\r\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes()\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n public handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\r\n\r\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.nameSectionHeading!.text = event.target.value);\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.resources.editButtonText) {\r\n this.props.resources.editButtonText = event.target.value;\r\n }\r\n };\r\n\r\n @computed get editProfileUrl(): string {\r\n return get(this.props, 'context.request.user.editProfileUrl', '');\r\n }\r\n\r\n private getDescription(customerInformation: Customer | undefined): string {\r\n let description = '';\r\n if (customerInformation !== undefined) {\r\n if (customerInformation.FirstName) {\r\n description += customerInformation.FirstName;\r\n }\r\n if (customerInformation.LastName) {\r\n description += customerInformation.FirstName ? ` ${customerInformation.LastName}` : customerInformation.LastName;\r\n }\r\n }\r\n return description;\r\n }\r\n\r\n private _renderEmailSection(\r\n className: string,\r\n heading?: IEmailAddressSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && heading.text && (\r\n \r\n ),\r\n links: links && links.length > 0 && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private _renderNameSection(\r\n className: string,\r\n heading?: INameSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n if (!ArrayExtensions.hasElements(links)) {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n links: (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private readonly onClickEventHandler = (className: string) => async () => {\r\n return this._updateAccountPersonalization(className);\r\n };\r\n\r\n private _renderPreferenceSection(\r\n className: string,\r\n invalidAsyncCustomerState: boolean,\r\n customerInformation?: Customer\r\n ): IAccountPreferences | null {\r\n const {\r\n personalizationDescription,\r\n personalizationEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n webTrackingEnableButtonAriaLabel\r\n } = this.props.resources;\r\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\r\n const { enableDataAnalytics } = this.props.context.request.features;\r\n const extraPreferences: IAccountPreference[] = [];\r\n\r\n if (!customerInformation) {\r\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // Show browser activity login preference if switch is enabled AND a heading is provided\r\n enableDataAnalytics &&\r\n webTrackingSectionHeading &&\r\n extraPreferences.push(\r\n this._renderPreference(\r\n 'web-tracking',\r\n webTrackingSectionHeading as IHeadingData,\r\n webTrackingEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n customerInformation.OptOutWebActivityTracking || false,\r\n invalidAsyncCustomerState\r\n )\r\n );\r\n\r\n return {\r\n accountPreferences: {\r\n className\r\n },\r\n heading: preferencesSectionHeading && (\r\n \r\n ),\r\n personalization: this._renderPreference(\r\n 'personalization',\r\n personalizationSectionHeading as IHeadingData,\r\n personalizationEnableButtonAriaLabel,\r\n personalizationDescription,\r\n customerInformation.OptOutPersonalization || false,\r\n invalidAsyncCustomerState\r\n ),\r\n extraPreferences: extraPreferences || undefined\r\n };\r\n }\r\n\r\n private readonly _renderPreference = (\r\n className: string,\r\n sectionHeading: IHeadingData,\r\n enableAriaLabel: string,\r\n description: string,\r\n isOptOut: boolean,\r\n disableBtn: boolean\r\n ) => {\r\n const { toggleDisableText, toggleEnableText } = this.props.resources;\r\n const toggleState = isOptOut ? 'disable' : 'enable';\r\n const onClickHandler = this.onClickEventHandler(className);\r\n this.payLoad.contentAction.etext = sectionHeading.text;\r\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n\r\n return {\r\n accountPreference: {\r\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\r\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\r\n })\r\n },\r\n heading: sectionHeading && (\r\n \r\n ),\r\n buttonWrapper: {\r\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\r\n // Disable the toggle completely if customer is async.\r\n 'ms-account-profile__toggle-disabled': disableBtn\r\n })\r\n },\r\n buttonYesText: ,\r\n buttonNoText: ,\r\n button: (\r\n \r\n ),\r\n description: ,\r\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\r\n };\r\n };\r\n\r\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\r\n const customerInformation = this.props.data.customerInformation.result;\r\n\r\n if (customerInformation) {\r\n const {\r\n telemetry,\r\n context: { request, actionContext }\r\n } = this.props;\r\n\r\n let isOptOutPersonalization = false;\r\n let input;\r\n\r\n switch (preferenceType) {\r\n case 'web-tracking':\r\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n break;\r\n case undefined:\r\n case 'personalization':\r\n default:\r\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n }\r\n\r\n this.isUpdatingPreference = true;\r\n\r\n try {\r\n await updateCustomerPersonalization(input, actionContext);\r\n // eslint-disable-next-line\r\n } catch (error) {\r\n if (telemetry) {\r\n telemetry.exception(error as Error);\r\n telemetry.debug('Unable to update customer personalization');\r\n }\r\n }\r\n\r\n this.isUpdatingPreference = false;\r\n }\r\n };\r\n\r\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\r\n return ;\r\n };\r\n}\r\n\r\nexport default AccountProfile;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n IAccountPreference,\r\n IAccountPreferences,\r\n IAccountProfileItem,\r\n IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/account-profile/./account-profile';\r\nimport { IFmAccountProfileProps } from './fm-account-profile.props.autogenerated';\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities/';\r\n\r\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {extraPreferences &&\r\n extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC> = props => {\r\n const {\r\n AccountProfile,\r\n accountProfileWrapper,\r\n heading,\r\n emailSection,\r\n nameSection,\r\n preferenceSection,\r\n customerAttributesWrapper,\r\n customerAttributesSection\r\n } = props;\r\n React.useEffect(() => {\r\n if (document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing')[1].innerHTML =\r\n props.context.request.locale.toLowerCase() !== 'en-us'\r\n ? format(props.resources.htmlGenericMarketing, props.config.privacyPolicyURL)\r\n : props.config.textGenericMarketing;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-Profiling').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-Profiling')[1].innerHTML = format(\r\n props.resources.htmlProfiling,\r\n props.config.privacyPolicyURL\r\n );\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-ThirdParty').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-ThirdParty')[1].innerHTML = format(\r\n props.resources.htmlThirdParty,\r\n props.config.privacyPolicyURL\r\n );\r\n }\r\n\r\n const bd_input: HTMLInputElement = document.getElementsByClassName(\r\n 'ms-account-profile__attributes-element ms-account-profile__attributes_input ms-account-profile__attributes_input-edit-false ms-account-profile__Birthday-input'\r\n )[0] as HTMLInputElement;\r\n if (bd_input && props.context.request.canonicalDomain !== 'us.venchi.com') {\r\n document.getElementsByClassName('ms-account-profile__attributes-edit-button msc-btn')[0].addEventListener('click', () => {\r\n bd_input.setAttribute('type', 'date');\r\n });\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n {heading}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {accountProfileWrapper && (\r\n \r\n \r\n \r\n {customerAttributesWrapper && (\r\n {customerAttributesSection}\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccountProfileView;\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 * as React from 'react';\r\n\r\nimport { IGenericPopupProps } from './generic-popup.props.autogenerated';\r\n\r\nimport classnames from 'classnames';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface IGenericPopupState {\r\n popupVisible: boolean;\r\n recallVisible: boolean;\r\n}\r\n\r\nexport interface IGenericPopupViewProps extends IGenericPopupProps<{}>, IGenericPopupState {\r\n onDismissRecall(): void;\r\n onDismissPopup(): void;\r\n handleTextRecall(): void;\r\n classNamePopup: string;\r\n classNameRecall: string;\r\n}\r\n\r\n/**\r\n *\r\n * GenericPopup component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass GenericPopup extends React.PureComponent, IGenericPopupState> {\r\n public state: IGenericPopupState = {\r\n popupVisible: false,\r\n recallVisible: false\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n // const { closeButtonAriaLabel, closeButtonLabel } = this.props.resources;\r\n const { className } = this.props.config;\r\n const { popupVisible, recallVisible } = this.state;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n classNamePopup: classnames('venchi_popup'),\r\n classNameRecall: classnames('venchi-recall', 'slide-in', className),\r\n popupVisible, // State data\r\n recallVisible, // State data\r\n onDismissRecall: this._onDismissRecall, // Methods\r\n onDismissPopup: this._onDismissPopup, // Methods\r\n handleTextRecall: this._displayPopupNow\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly _onDismissRecall = (): void => {\r\n this.createCookieRecall();\r\n this.setState({ recallVisible: false });\r\n };\r\n\r\n private readonly _onDismissPopup = (): void => {\r\n if (this.props.config.recallEnabled || false) {\r\n switch (this.props.config.recallShowAfterPopup) {\r\n case 'afterPopup':\r\n setTimeout(this._displayRecallNow, 3000);\r\n break;\r\n case 'afterPageReload':\r\n default:\r\n break;\r\n }\r\n }\r\n this.setState({\r\n popupVisible: false\r\n });\r\n };\r\n\r\n private readonly _displayRecallNow = (): void => {\r\n this.setState({\r\n popupVisible: false,\r\n recallVisible: true\r\n });\r\n };\r\n\r\n private readonly _displayPopupNow = (): void => {\r\n if (this.props.config.cookieCheckbox) {\r\n this.createCookie();\r\n }\r\n this.setState({\r\n popupVisible: true,\r\n recallVisible: false\r\n });\r\n };\r\n\r\n public async componentDidMount() {\r\n const cookie = new Cookies();\r\n if (this.props.config.hidePopupIfCookieIsSet) {\r\n if (!cookie.get(`${this.props.config.modalId}-shown`)) {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n } else {\r\n if (this.props.config.recallEnabled && !cookie.get(`${this.props.config.modalId}-recall-hidden`)) {\r\n setTimeout(this._displayRecallNow, 1000 * (this.props.config.delayRecall || 0));\r\n }\r\n }\r\n } else {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n }\r\n }\r\n\r\n private createCookie() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.expireDays >= 1) {\r\n var date = new Date();\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n // @ts-ignore\r\n date.setDate(date.getDate() + (this.props.config.expireDays || 0));\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-shown`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-shown`, true);\r\n }\r\n }\r\n\r\n private createCookieRecall() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.recallDismissableForDays >= 1) {\r\n var date = new Date();\r\n // @ts-ignore\r\n date.setDate(\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n date.getDate() + (this.props.config.recallDismissableForDays || 0)\r\n );\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true);\r\n }\r\n }\r\n}\r\n\r\nexport default GenericPopup;\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 * as React from 'react';\r\nimport { IGenericPopupViewProps } from './generic-popup';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst GenericPopupView: React.FC = props => {\r\n const {\r\n slots,\r\n popupVisible,\r\n recallVisible,\r\n classNamePopup,\r\n classNameRecall,\r\n onDismissRecall,\r\n onDismissPopup,\r\n handleTextRecall\r\n } = props;\r\n const { modalId, recallDismissable, modalHeader, recallText } = props.config;\r\n const { closeButtonAriaLabel, closeButtonLabel } = props.resources;\r\n\r\n React.useEffect(() => {\r\n if (popupVisible) {\r\n //@ts-ignore\r\n const label = props.config.modalName || 'Generic';\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'displayed',\r\n eventLabel: label\r\n });\r\n }\r\n }, [popupVisible]);\r\n\r\n const handleClose = React.useCallback(() => {\r\n const popupElement = document.querySelector('.venchi_popup');\r\n const form = popupElement?.getElementsByTagName('form');\r\n\r\n if (form?.length && popupVisible) {\r\n const label = props.config.modalName;\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'click_close',\r\n eventLabel: label\r\n });\r\n }\r\n onDismissPopup();\r\n }, [onDismissPopup, popupVisible, props]);\r\n\r\n return (\r\n <>\r\n \r\n {modalHeader}\r\n
\r\n \r\n
\r\n
{slots.content}
\r\n
\r\n
\r\n
\r\n
\r\n {recallVisible ? (\r\n
\r\n \r\n {recallDismissable ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n
\r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GenericPopupView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n channelName,\r\n channelAddress\r\n}) => (\r\n \r\n {channelName}\r\n {channelAddress}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n \r\n {salesLine}\r\n {buyAgainButton}\r\n \r\n);\r\n\r\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count, trackingInfo, shippedStatusCheck }) => (\r\n \r\n {heading}\r\n {count}\r\n {/* shippedStatusCheck === 'shipped' ? null : trackingInfo */}\r\n \r\n);\r\n\r\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\r\n \r\n {salesLine.salesStatus}\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\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nconst _renderCustomTaxLine = (taxAmount: number): JSX.Element | null => {\r\n //const { estimatedTaxLabel, yetToBeCalculatedText} = props.resources;\r\n\r\n return (\r\n
\r\n

\r\n Tax\r\n \r\n {taxAmount}\r\n \r\n

\r\n
\r\n )\r\n}\r\n\r\nexport const OrderSummary: 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 ...other\r\n}) => {\r\n // @ts-ignore\r\n const locale = other.locale;\r\n // @ts-ignore\r\n const taxAmount = other.taxAmount;\r\n \r\n return (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {locale.toLowerCase() == 'en-gb' && taxAmount > 0 ? _renderCustomTaxLine(taxAmount) : tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n );\r\n};\r\n\r\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const Help: 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 salesOrder,\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n // prettier-ignore\r\n // @ts-ignore\r\n const customTrackingNumber = salesOrder?.ExtensionProperties?.filter((tracking: { Key: string }) => tracking.Key === 'trackingId_CAP')[0]?.Value.StringValue;\r\n // prettier-ignore\r\n // @ts-ignore\r\n const customTrackingStatus = salesOrder?.ExtensionProperties?.filter((tracking: { Key: string }) => tracking.Key === 'trakingStatus_CAP')[0]?.Value.StringValue;\r\n\r\n const locale = moduleProps.moduleProps.context.request.locale;\r\n // @ts-ignore\r\n const salesOrderData = moduleProps?.moduleProps?.data?.orderHydration?.result?.salesOrder;\r\n const taxAmount = salesOrderData?.TaxAmount;\r\n const extraOrdersSummaryEu = {\r\n locale: locale,\r\n taxAmount: taxAmount\r\n };\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {salesOrder && customTrackingNumber && (\r\n
\r\n Tracking Number: {customTrackingNumber === '' ? 'Not yet available.' : customTrackingNumber}\r\n {customTrackingStatus !== '' ? ({customTrackingStatus}) : ''}\r\n
\r\n )}\r\n {groups && }\r\n \r\n {orderSummary && }\r\n {payment && }\r\n \r\n {help && }\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 * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHeader,\r\n IList,\r\n IOrderHistoryViewProps,\r\n IOrderInformation,\r\n ISalesOrder\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo\r\n}) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n {salesLine.salesLine}\r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => {\r\n // @ts-ignore\r\n const dataPrice = orderInfomation.amount !== null ? orderInfomation.amount.props.data.price.CustomerContextualPrice : 0;\r\n const orderType = dataPrice < 0 ? 'order--return' : 'order--default';\r\n return (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {orderDetailsLink}\r\n \r\n );\r\n};\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n <>\r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\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 * 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 { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
    {error}
    ;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\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 {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress,\n note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

    \n {message}\n

    \n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\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 { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\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 ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
    \n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
    \n {isBopisSelected && (\n
    \n {cartLine.pickUpInStore.orgUnitName}\n \n
    \n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
    \n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
    \n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
    \n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

    \n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

    \n ) : null}\n

    {countTitle}

    \n
    \n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else 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, resources, count)}\n
    \n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): 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 cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
    \n );\n })}\n
    \n );\n }\n return props.cartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\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 * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module 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 * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module 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 {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module 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 * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

    \n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

    \n );\n return (\n
    \n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
    {props.orderSummaryLineitems?.orderTotal}
    \n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \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 \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
    \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 * 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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n note,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n"],"names":["_ref","className","text","React","AccountAttributeDataTypeValue","AccountProfileAttributes","constructor","props","super","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","config","data","resources","this","accountProfileProps","attributeDefinitions","result","additionalInformationSectionHeading","elements","showAttributes","split","map","att","attributeDefinition","find","attribute","IsHidden","Name","toLocaleLowerCase","RecordId","_renderAttribute","edit","state","editAttributes","payLoad","contentAction","etext","attributesEditButtonText","getTelemetryAttributes","telemetryContent","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","customerInformation","featureState","feature","IsEnabled","disableBtn","context","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","ref","attributesContainerRef","classnames","Text","tag","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","Button","Object","assign","onClick","_enableAttributes","innerRef","editRef","title","disabled","_saveAttributes","_disableAttributes","phoneSectionHeading","heading","replace","type","onChange","_onPhoneChange","value","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","attributes","IsMandatory","isEnumeration","IsEnumeration","birthdayHeadingText","EnumerationDetails","hasNoValue","id","_onAttributeSelect","key","selected","option","EnumerationValue","source","_onUSBdayChange","undefined","maxLength","render","toggleState","arialabel","format","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","error","attributeError","StringExtensions","isNullOrWhitespace","role","attributePayloadData","name","isMandatory","event","target","setState","MsDyn365","isBrowser","setTimeout","current","getElementsByClassName","length","_setFocus","initialAttributes","initialPhone","initialVatNumber","_objectSpread","currentTarget","selectedOptions","index","selectedIndex","_getAttributes","showAttributesArray","customer","custmerAttributes","Attributes","forEach","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","Number","isNaN","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","push","KeyName","Phone","VATNumber","VatNumber","async","_customer$Attributes","input","updateCustomerAttributesInput","AccountNumber","request","apiSettings","updateCustomerAttributes","actionContext","initialCustomerAttributes","telemetry","exception","debug","element","focus","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","telemetryPageName","friendlyName","getTelemetryObject","getPayloadObject","componentDidMount","reaction","shouldComponentUpdate","nextProps","nextState","__decorate","observable","observer","description","_mapEditableLinks","linkdata","editableLinks","link","linkText","editableLink","ariaLabel","isDisabled","linkUrl","destinationUrl","openInNewTab","additionalProperties","links","requestContext","onTextChange","Msdyn365","editProps","AccountProfile","isUpdatingPreference","handleHeadingChange","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","handleLinkTextChange","linkIndex","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","onEdit","buttonWrapper","buttonYesText","buttonNoText","button","toString","DescriptionComponent","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","_this$props$context$a","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","get","viewProps","moduleProps","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","renderView","FirstName","LastName","AccountProfileItem","LinksComponent","ArrayExtensions","hasElements","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","computed","AccountPreferencesSection","Node","AccountPreferenceSection","preferenceSecton","_ref2","AccountProfileSection","_ref3","document","innerHTML","locale","toLowerCase","htmlGenericMarketing","privacyPolicyURL","textGenericMarketing","htmlProfiling","htmlThirdParty","bd_input","canonicalDomain","addEventListener","setAttribute","Module","GenericPopup","popupVisible","recallVisible","_onDismissRecall","createCookieRecall","_onDismissPopup","recallEnabled","recallShowAfterPopup","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","classNamePopup","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","cookie","Cookies","hidePopupIfCookieIsSet","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","options","expires","set","recallDismissableForDays","slots","recallDismissable","modalHeader","recallText","closeButtonAriaLabel","closeButtonLabel","_window$dataLayer","_window$dataLayer$pus","label","modalName","window","dataLayer","call","eventCategory","eventAction","eventLabel","handleClose","popupElement","querySelector","form","getElementsByTagName","_window$dataLayer2","_window$dataLayer2$pu","Modal","isOpen","onClosed","ModalHeader","toggle","ModalBody","renderModuleAttributes","content","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","GroupDelivery","deliveryProps","trackingInfo","shippedStatusCheck","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","LineId","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","other","_objectWithoutProperties","_excluded","taxAmount","style","marginBottom","itemProp","_renderCustomTaxLine","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","_salesOrder$Extension","_salesOrder$Extension2","_moduleProps$modulePr","salesOrder","alert","loading","orderInfomation","orderSummary","payment","help","customTrackingNumber","filter","tracking","Key","customTrackingStatus","salesOrderData","orderHydration","extraOrdersSummaryEu","TaxAmount","OrderHistoryOrderInfomation","OrderHistoryGroupDelivery","processing","OrderHistoryGroup","OrderHistoryGroups","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderDetailsLink","dataPrice","price","CustomerContextualPrice","orderType","OrderHistoryList","listProps","salesOrders","orderHistoryProps","header","emptyMessage","backToShoppingLink","list","moreButton","AccountCustomerBalanceTile","_initState","ErrorComponent","apiGenericErrorMessage","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","isCustomerAccountPaymentEnabled","Heading","headingTag","isDetailsLinkDisplayed","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","issueLoyalty","then","location","catch","message","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","params","isEditor","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","modal","onToggle","applicationNode","returnFocusRef","returnRef","modalFooter","ModalFooter","modalBody","cancelButton","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","qsp","splitQsp","isModalOpen","hideToggle","serviceTerms","modalToggle","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","BusinessPartnerPromotionTermsParagraph","titleClassName","moduleClassName","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","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","horizontalPosition","verticalPosition","autoFocus","fade","termsOfServiceModalHeading","submitRequestLabel","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","ObjectExtensions","isNullOrUndefined","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","onTelemetryClick","CookieCompliance","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","AlertProps","Content","acceptButton","setConsentCookie","reload","renderCustomerName","accountInformation","_renderReactFragment","items","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","promotionalImage","src","altText","promotionalContent","item","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","body","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","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","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","note","errors","isCashAndCarryTransaction","viewModes","tableViewActions","table","placedBy","Iframe","iframeRef","srcURL","URL","protocol","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","IFrameView","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","isMobile","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","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","category","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","componentDidUpdate","_this$menuItemRef$cur","children","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","newViewModeState","viewModeDetailedViewAttributes","ViewMode","viewModeListViewAttributes","DetailedView","detailedViewOptionAriaLabel","ListView","listViewOptionAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","product","catalogId","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","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","PickupInStore","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","deliveryOption","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","cart","totalItemsInCart","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","channel","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","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","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","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify"],"sourceRoot":""}