{"version":3,"file":"static/js/20.0847bc300e17b6ceac55.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/components/new-sign-up-button.tsx?ce78","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/components/new-sign-up-error.tsx?5bfb","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/components/new-sign-up-input.tsx?e5a5","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/components/new-sign-up-label.tsx?96f0","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/components/new-sign-up-loading-icon.tsx?eca8","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/components/new-sign-up-loading-message.tsx?9b52","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/components/new-sign-up-success.tsx?2dfb","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/new-sign-up.tsx?3c28","webpack://Msdyn365.Commerce.Online/./src/modules/new-sign-up/new-sign-up.view.tsx?fca0","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utilities/quantity/Quantity.tsx?c3db","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/buybox.view.tsx?fc20","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utils/getCustomDiscountPercentage.ts?8d75","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/checkout.view.tsx?ea45","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/header.view.tsx?2a15","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/components/navigation-menu-utilities.tsx?ca80","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/navigation-menu.view.tsx?2c75","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-confirmation.view.tsx?31ca","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/search.view.tsx?3a76"],"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 { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpButton {\r\n id?: string;\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n onClick?(event: React.MouseEvent): void;\r\n}\r\n\r\nconst SignUpButton: React.FC = ({ id, className, text, ariaLabel, disabled, onClick }) => (\r\n \r\n);\r\n\r\nexport default SignUpButton;\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 classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpErrorProps {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nconst SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\r\n const errorClassName = `${className}__${type}-error`;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default SignUpError;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpInputProps {\r\n id?: string;\r\n hasFocus?: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n type: any;\r\n value?: string;\r\n pattern?: string;\r\n required?: boolean;\r\n className: string;\r\n maxLength?: string;\r\n onChange?(event: React.ChangeEvent): void;\r\n}\r\n\r\nexport interface ISignUpInput {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nconst GetMaxLength = (maxLength?: string): number | undefined => {\r\n if (maxLength) {\r\n const parsedMaxLength = Number.parseInt(maxLength, 10);\r\n if (!isNaN(parsedMaxLength)) {\r\n return parsedMaxLength;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nconst SignUpInput: React.FC = ({ id, type, value, pattern, required, className, maxLength, onChange }) => (\r\n \r\n);\r\n\r\nexport default SignUpInput;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLabel {\r\n id: string;\r\n forId: string;\r\n className: string;\r\n text: string;\r\n}\r\n\r\nconst SignUpLabel: React.FC = ({ id, forId, className, text }) => (\r\n \r\n);\r\n\r\nexport default SignUpLabel;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLoadingIcon {\r\n className: string;\r\n}\r\n\r\nconst SignUpLoadingIcon: React.FC = ({ className }) =>
;\r\n\r\nexport default SignUpLoadingIcon;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLoadingMessage {\r\n className: string;\r\n message: string;\r\n}\r\n\r\nconst SignUpLoadingMessage: React.FC = ({ className, message }) => (\r\n
{message}
\r\n);\r\n\r\nexport default SignUpLoadingMessage;\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 classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpSuccess {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nconst SignUpSuccess: React.FC = ({ id, className, type = 'page', message }) => {\r\n const successClassName = `${className}__${type}-success`;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default SignUpSuccess;\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 { EmailRegex, PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps, INodeProps, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n// import { useState } from 'react';\r\n\r\nimport SignUpButtonComponent from './components/new-sign-up-button';\r\nimport SignUpErrorComponent from './components/new-sign-up-error';\r\nimport SignUpInputComponent from './components/new-sign-up-input';\r\nimport SignUpLabelComponent from './components/new-sign-up-label';\r\nimport SignUpLoadingIconComponent from './components/new-sign-up-loading-icon';\r\nimport SignUpLoadingMessageComponent from './components/new-sign-up-loading-message';\r\nimport SignUpSuccessComponent from './components/new-sign-up-success';\r\nimport { INewSignUpConfig, INewSignUpProps, INewSignUpResources } from './new-sign-up.props.autogenerated';\r\n\r\nexport interface ISignUpViewState {\r\n isShowLoading: boolean;\r\n}\r\n\r\nexport interface ISignUpItem {\r\n wrapper: INodeProps;\r\n key: string;\r\n label: React.ReactNode;\r\n errorMessage: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpEmailVerification {\r\n isRequired: boolean;\r\n email: ISignUpItem;\r\n buttonWrapper: INodeProps;\r\n buttons: React.ReactNode[];\r\n successMessage: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n verificationControlWrapper: INodeProps;\r\n}\r\n\r\n/**\r\n * SignUp Given Name Verification Interface.\r\n */\r\nexport interface ISignUpGivenNameVerification {\r\n isRequired: boolean;\r\n givenName: ISignUpItem;\r\n errorMessage: React.ReactNode[];\r\n verificationControlWrapper: INodeProps;\r\n}\r\n\r\n/**\r\n * SignUp Surname Verification Interface.\r\n */\r\nexport interface ISignUpSurnameVerification {\r\n isRequired: boolean;\r\n surname: ISignUpItem;\r\n errorMessage: React.ReactNode[];\r\n verificationControlWrapper: INodeProps;\r\n}\r\n\r\nexport interface ISignUpLocalAccount {\r\n localAccount: INodeProps;\r\n items: ISignUpItem[];\r\n emailVerification: ISignUpEmailVerification;\r\n givenNameVerification: ISignUpGivenNameVerification;\r\n surnameVerification: ISignUpSurnameVerification;\r\n buttons: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n disclaimer: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpLoading {\r\n modal: INodeProps;\r\n modalBody: INodeProps;\r\n icon: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpViewProps {\r\n className: string;\r\n viewState: ISignUpViewState;\r\n loading: ISignUpLoading;\r\n signUp: IModuleProps;\r\n defaultAADConainer: INodeProps;\r\n aadConainer: INodeProps;\r\n heading: React.ReactNode;\r\n signUpLocalAccount: ISignUpLocalAccount;\r\n config: INewSignUpConfig;\r\n resources: INewSignUpResources;\r\n regionCRM: string;\r\n LastConsentSource: string;\r\n locale: string;\r\n EcomSignUpLegalEntity: string;\r\n}\r\n\r\n/**\r\n *\r\n * SignUp component\r\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\r\n * Please ensure any change in module don't break contract with AAD.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass SignUp extends React.Component> {\r\n @observable private isGivenNameVerificationRequried: boolean;\r\n\r\n @observable private isSurnameVerificationRequried: boolean;\r\n\r\n private readonly moduleClassName: string = 'ms-sign-up';\r\n\r\n @observable private emailRegex: string;\r\n\r\n @observable private newPasswordRegex: string;\r\n\r\n @observable private reenterPasswordRegex: string;\r\n\r\n @observable private isEmailVerificationRequried: boolean;\r\n\r\n @observable private isInitialized: boolean;\r\n\r\n @observable private templateVersion: string;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private initializationTimer: any;\r\n\r\n constructor(props: INewSignUpProps) {\r\n super(props);\r\n\r\n this.emailRegex = EmailRegex.defaultRegex.source;\r\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\r\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\r\n this.isEmailVerificationRequried = false;\r\n this.isGivenNameVerificationRequried = false;\r\n this.isSurnameVerificationRequried = false;\r\n this.isInitialized = false;\r\n this.templateVersion = '';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._onInit();\r\n }\r\n\r\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\r\n public componentDidUpdate(): void {\r\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\r\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\r\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\r\n window['$element']['initialize']();\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: INewSignUpProps, nextState: ISignUpViewState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n public render(): JSX.Element {\r\n // Locale management\r\n const locale = this.props?.context?.request?.locale;\r\n\r\n const regionCRM: string =\r\n this.props.config.regionLanguageMapping?.find(regionMapping => regionMapping.pageLanguage === locale)?.regionCRM || locale;\r\n const LastConsentSource = this.props.config.Source;\r\n const EcomSignUpLegalEntity = this.props.config.EcomSignUpLegalEntity;\r\n\r\n const { config, resources } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n viewState: {\r\n isShowLoading: !this.isInitialized\r\n },\r\n signUp: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName, config.className)\r\n },\r\n loading: {\r\n modal: {\r\n tag: Modal,\r\n isOpen: true\r\n },\r\n modalBody: {\r\n tag: ModalBody\r\n },\r\n icon: ,\r\n message: \r\n },\r\n defaultAADConainer: {\r\n id: 'api',\r\n style: { display: 'none' }\r\n },\r\n aadConainer: {\r\n id: this.isInitialized ? 'api' : null,\r\n className: `${this.moduleClassName}__container`\r\n },\r\n heading: (\r\n \r\n ),\r\n signUpLocalAccount: this._renderLocalAccount(),\r\n locale: locale,\r\n regionCRM: regionCRM,\r\n LastConsentSource: LastConsentSource,\r\n EcomSignUpLegalEntity: EcomSignUpLegalEntity\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles heading content change event.\r\n * @param event - Content editable event.\r\n * @returns - Heading Text.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n /**\r\n * Handles paragraph content change event.\r\n * @param event - Content editable event.\r\n * @returns - Paragraph Text.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.disclaimer = event.target.value);\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public _onInit = () => {\r\n this._prePopulateData();\r\n this._updateErrorMessage();\r\n\r\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\r\n this.initializationTimer = setInterval(() => {\r\n this._isInitializationSuccessful();\r\n }, 100);\r\n setTimeout(() => {\r\n clearInterval(this.initializationTimer);\r\n }, 10_000);\r\n };\r\n\r\n // After successful AAD initialization, remove waiting and preload any data, if needed.\r\n private readonly _isInitializationSuccessful = () => {\r\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\r\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\r\n clearInterval(this.initializationTimer);\r\n this.isInitialized = true;\r\n }\r\n };\r\n\r\n private readonly _prePopulateData = () => {\r\n const resources: INewSignUpResources = this.props.resources || {};\r\n\r\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\r\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\r\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\r\n window['SA_FIELDS']['AttributeFields'].map(\r\n (obj: { ID: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string; VERIFY: boolean }) => {\r\n switch (obj.ID.toLowerCase()) {\r\n case 'emailverificationcontrol': {\r\n this.isEmailVerificationRequried = true;\r\n this.templateVersion = 'v2';\r\n break;\r\n }\r\n case 'email': {\r\n this.emailRegex = obj.PAT;\r\n this.isEmailVerificationRequried = obj.VERIFY;\r\n this.templateVersion = 'v1';\r\n break;\r\n }\r\n case 'givennameverificationcontrol': {\r\n this.isGivenNameVerificationRequried = true;\r\n break;\r\n }\r\n case 'givenname': {\r\n this.isGivenNameVerificationRequried = obj.VERIFY;\r\n break;\r\n }\r\n case 'surnameverificationcontrol': {\r\n this.isEmailVerificationRequried = true;\r\n break;\r\n }\r\n case 'surname': {\r\n this.isSurnameVerificationRequried = obj.VERIFY;\r\n break;\r\n }\r\n case 'newpassword': {\r\n this.newPasswordRegex = obj.PAT;\r\n break;\r\n }\r\n case 'reenterpassword': {\r\n this.reenterPasswordRegex = obj.PAT;\r\n break;\r\n }\r\n default:\r\n }\r\n\r\n switch (obj.UX_INPUT_TYPE.toLowerCase()) {\r\n case 'password': {\r\n obj.PAT_DESC = resources.invalidPasswordError;\r\n break;\r\n }\r\n case 'emailbox': {\r\n obj.PAT_DESC = resources.invalidEmailAddressError;\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n );\r\n }\r\n };\r\n\r\n private readonly _updateErrorMessage = () => {\r\n const resources: INewSignUpResources = this.props.resources || {};\r\n\r\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\r\n if (window && window['CONTENT']) {\r\n const errorMessages = {\r\n required_field: resources.requiredFieldMissingError\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\r\n Object.assign(window['CONTENT'], errorMessages);\r\n }\r\n };\r\n\r\n private readonly getValue = (v1Value: string, v2Value: string): string => {\r\n if (this.templateVersion) {\r\n return this.templateVersion === 'v1' ? v1Value : v2Value;\r\n }\r\n return '';\r\n };\r\n\r\n private _renderLocalAccount(): ISignUpLocalAccount {\r\n const { config, resources } = this.props;\r\n return {\r\n localAccount: {\r\n id: 'attributeList',\r\n className: `${this.moduleClassName}__account-items attr`\r\n },\r\n items: [\r\n this._renderInput('email', 'email', `${resources.emailAddressLabelText} *`, '255', this.emailRegex, true),\r\n // this._renderInput('email_rep', 'email', 'Repeat your email address', '255'),\r\n this._renderInput('newPassword', 'password', resources.passwordLabelText, undefined, this.newPasswordRegex, true),\r\n this._renderInput(\r\n 'reenterPassword',\r\n 'password',\r\n resources.confirmPasswordLabelText,\r\n undefined,\r\n this.reenterPasswordRegex,\r\n true\r\n ),\r\n this._renderInput('givenName', 'text', `${resources.firstNameLabelText} *`, resources.firstNameMaxLength, undefined, true),\r\n this._renderInput('surname', 'text', `${resources.lastNameLabelText} *`, resources.lastNameMaxLength, undefined, true),\r\n this._renderInput('postalCode', 'text', resources.addressZipCodeLabelOptional, '8'),\r\n this._renderInput('extension_Birthday', 'date', resources.birthdayLabelText),\r\n // TODO Manage spaces\r\n this._renderInput('phone_number', 'tel', resources.phoneLabelText, '15'),\r\n this._renderInput('extension_RegionCRM', 'text', 'RegionCRM'),\r\n this._renderInput('extension_LastConsentSource', 'text', 'LastConsentSource'),\r\n this._renderInput('extension_EcomSignUpLegalEntity', 'text', 'EcomSignUpLegalEntity'),\r\n this._renderInput('extension_GenericMarketing', 'checkbox', ''),\r\n this._renderInput('extension_Profiling', 'checkbox', ''),\r\n this._renderInput('extension_ThirdParty', 'checkbox', '')\r\n ],\r\n emailVerification: {\r\n isRequired: this.isEmailVerificationRequried,\r\n email: this._renderInput(\r\n this.getValue('email_ver_input', 'emailVerificationCode'),\r\n 'text',\r\n resources.verificationCodeLabelText,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'VerificationCode'\r\n ),\r\n verificationControlWrapper: {\r\n id: 'emailVerificationControl',\r\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\r\n },\r\n buttonWrapper: {\r\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\r\n 'data-claim_id': 'email'\r\n },\r\n buttons: [\r\n ,\r\n ,\r\n ,\r\n \r\n ],\r\n successMessage: [\r\n ,\r\n \r\n ],\r\n errorMessage: [\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n \r\n ]\r\n },\r\n givenNameVerification: {\r\n isRequired: this.isGivenNameVerificationRequried,\r\n givenName: this._renderInput(\r\n this.getValue('givenName_ver_input', 'givenNameVerificationCode'),\r\n 'text',\r\n resources.verificationCodeLabelText,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'VerificationCode'\r\n ),\r\n verificationControlWrapper: {\r\n id: 'givenNameVerificationControl',\r\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\r\n },\r\n errorMessage: [\r\n \r\n ]\r\n },\r\n surnameVerification: {\r\n isRequired: this.isSurnameVerificationRequried,\r\n surname: this._renderInput(\r\n this.getValue('surname_ver_input', 'surnameVerificationCode'),\r\n 'text',\r\n resources.verificationCodeLabelText,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'VerificationCode'\r\n ),\r\n verificationControlWrapper: {\r\n id: 'surnameVerificationControl',\r\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\r\n },\r\n errorMessage: [\r\n \r\n ]\r\n },\r\n buttons: [\r\n ,\r\n \r\n ],\r\n errorMessage: [\r\n ,\r\n ,\r\n ,\r\n \r\n ],\r\n disclaimer: config.disclaimer && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private _renderInput(\r\n id: string,\r\n type: string,\r\n labelText: string,\r\n maxLength?: string,\r\n pattern?: string,\r\n required?: boolean,\r\n value?: any,\r\n onChange?: any,\r\n cssClassName?: string\r\n ): ISignUpItem {\r\n const className = `${this.moduleClassName}__account-item`;\r\n return {\r\n wrapper: {\r\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\r\n },\r\n key: id,\r\n label: (\r\n \r\n ),\r\n errorMessage: (\r\n \r\n ),\r\n input: (\r\n \r\n )\r\n };\r\n }\r\n}\r\n\r\nexport default SignUp;\r\n","/* eslint-disable react/jsx-key */\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\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpGivenNameVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpSurnameVerification,\r\n ISignUpViewProps\r\n} from './new-sign-up';\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { trackVClubRegistration } from '../../themes/venchi/utilities/datalayer';\r\n\r\n// import { SHA256 } from 'crypto-js'; // To manage customdimensions GA from here if it doesn't work in the gtm script\r\n\r\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\r\n return (\r\n <>\r\n {successMessage &&\r\n successMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n {errorMessage &&\r\n errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n {buttons &&\r\n buttons.map((button: React.ReactNode) => {\r\n return <>{button};\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Handles validation of sign-up givenName.\r\n * @param event - Content editable event.\r\n * @param event.givenName - Event Given Name.\r\n * @param event.errorMessage - Event Error Message.\r\n * @returns - Error Message for Given Name.\r\n */\r\nconst SignUpGivenNameVerificationComponent: React.FC = ({ givenName, errorMessage }) => {\r\n return (\r\n <>\r\n \r\n {errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Handles validation of signUp surname.\r\n * @param event - Content editable event.\r\n * @param event.surname - Event surname.\r\n * @param event.errorMessage - Event Error Message.\r\n * @returns - Error Message for surname.\r\n */\r\nconst SignUpSurnameVerificationComponent: React.FC = ({ surname, errorMessage }) => {\r\n return (\r\n <>\r\n \r\n {errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = props => {\r\n const {\r\n localAccount,\r\n items,\r\n emailVerification,\r\n givenNameVerification,\r\n surnameVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer\r\n } = props.signUpLocalAccount;\r\n\r\n const locale = props.locale;\r\n const regionCRM = props.regionCRM;\r\n const EcomSignUpLegalEntity = props.EcomSignUpLegalEntity;\r\n let LastConsentSource: string;\r\n switch (props.LastConsentSource) {\r\n case 'FinanceOperationEU':\r\n LastConsentSource = 'Finance&Operation EU';\r\n break;\r\n case 'FinanceOperationUS':\r\n LastConsentSource = 'Finance&Operation US';\r\n break;\r\n default:\r\n LastConsentSource = 'Finance&Operation EU';\r\n }\r\n\r\n const [birthDate, setBirthDate] = React.useState('');\r\n const [formatDateState, setFormatDateState] = React.useState(true);\r\n const pattern = /^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^((16|[248][048]|[3579][26])00)|(1[6789]|[2-9][0-9])(0[48]|[13579][26]|[2468][048])\\/02\\/(0[1-9]|1[0-9]|2[0-9])$|^(1[6789]|[2-9][0-9])[0-9]{2}\\/02\\/(0[1-9]|1[0-9]|2[0-8])$/gm;\r\n const patternUS = /^((0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^02\\/(0[1-9]|1[0-9]|2[0-9])$/gm;\r\n\r\n const checkDate = (event: React.KeyboardEvent) => {\r\n const value = event.currentTarget.value;\r\n const today = new Date();\r\n if (value !== '' && (!value.match(locale !== 'en-US' ? pattern : patternUS) || today < new Date(value))) {\r\n setFormatDateState(false);\r\n } else {\r\n setFormatDateState(true);\r\n }\r\n if (locale === 'en-US') {\r\n setBirthDate(`1900/${value}`);\r\n }\r\n };\r\n if (typeof window !== 'undefined') {\r\n const signUpButton: HTMLElement = document.getElementById('continue') as HTMLElement;\r\n // console.log(document.getElementById('continue'));\r\n if (signUpButton !== undefined) {\r\n signUpButton.onclick = e => {\r\n if (!formatDateState) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n trackVClubRegistration();\r\n };\r\n }\r\n }\r\n\r\n const profiling_ref = React.useRef(null);\r\n const handleChange = (e: React.ChangeEvent) => {\r\n if (locale.toLowerCase() === 'en-us') {\r\n const { checked } = e.target;\r\n profiling_ref.current!.checked = checked;\r\n }\r\n };\r\n\r\n // DONE guest state session variable; check that user ID (the one that's NOT an FC) exists alongside the user not being auth (since if not auth = loyalty)\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignUpItem) => {\r\n switch (item.key) {\r\n case 'email':\r\n if (emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n const emailRepErrorText: string = props.resources.emailRepErrorText ?? null;\r\n return (\r\n <>\r\n {\r\n if (typeof window !== 'undefined') {\r\n const email: HTMLInputElement = document.getElementById(\r\n 'email'\r\n ) as HTMLInputElement;\r\n const email_rep: HTMLInputElement = document.getElementById(\r\n 'email_rep'\r\n ) as HTMLInputElement;\r\n const email_rep_error = document.getElementById(\r\n 'text-error'\r\n ) as HTMLParagraphElement;\r\n const email_rep_error_backup = document.getElementById(\r\n 'text-error-backup'\r\n ) as HTMLSpanElement;\r\n\r\n email_rep.pattern = email.value;\r\n // I hope the following works well with Azure\r\n email_rep.title = emailRepErrorText;\r\n\r\n if (email.value === email_rep.value) {\r\n if (email_rep_error !== null) {\r\n email_rep_error.textContent = ' ';\r\n } else {\r\n email_rep_error_backup.textContent = ' ';\r\n }\r\n } else {\r\n if (email_rep_error !== null) {\r\n email_rep_error.textContent = emailRepErrorText;\r\n } else {\r\n email_rep_error_backup.textContent = emailRepErrorText;\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n }\r\n />\r\n
\r\n \r\n {\r\n const email: HTMLInputElement = document.getElementById('email') as HTMLInputElement;\r\n const email_rep: HTMLInputElement = document.getElementById(\r\n 'email_rep'\r\n ) as HTMLInputElement;\r\n const email_rep_error = document.getElementById('text-error') as HTMLParagraphElement;\r\n const email_rep_error_backup = document.getElementById(\r\n 'text-error-backup'\r\n ) as HTMLSpanElement;\r\n\r\n email.pattern = email_rep.value;\r\n\r\n if (email.value === email_rep.value) {\r\n if (email_rep_error !== null) {\r\n email_rep_error.textContent = ' ';\r\n } else {\r\n email_rep_error_backup.textContent = ' ';\r\n }\r\n } else {\r\n if (email_rep_error !== null) {\r\n email_rep_error.textContent = emailRepErrorText;\r\n } else {\r\n email_rep_error_backup.textContent = emailRepErrorText;\r\n }\r\n }\r\n }}\r\n />\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n case 'givenName':\r\n if (givenNameVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n case 'surname':\r\n if (surnameVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n case 'extension_Birthday':\r\n return (\r\n <>\r\n
\r\n \r\n {/* TODO Test US elements */}\r\n {locale === 'en-US' ? (\r\n <>\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n \r\n \r\n ) : (\r\n <>\r\n {/* // TODO? Validate that it's not in the future, and possibly that it's after at least 18 years */}\r\n e.preventDefault()}\r\n onChange={() => {\r\n if (typeof window !== 'undefined') {\r\n const birthday_proxy: HTMLInputElement = document.getElementById(\r\n 'birthday'\r\n ) as HTMLInputElement;\r\n const birthday_hidden: HTMLInputElement = document.getElementById(\r\n 'extension_Birthday'\r\n ) as HTMLInputElement;\r\n birthday_proxy.onchange = event => {\r\n birthday_hidden.value = birthday_proxy.value;\r\n };\r\n }\r\n }}\r\n />\r\n e.preventDefault()}\r\n style={{ display: 'none' }}\r\n />\r\n \r\n )}\r\n
\r\n {props.config.BirthdayText ? (\r\n \r\n ) : null}\r\n \r\n );\r\n case 'postalCode':\r\n return (\r\n <>\r\n \r\n {props.config.PostalText ? (\r\n \r\n ) : null}\r\n \r\n );\r\n case 'phone_number':\r\n return (\r\n <>\r\n {\r\n if (typeof window !== 'undefined') {\r\n const phone_number_proxy: HTMLInputElement = document.getElementById(\r\n 'phone_number'\r\n ) as HTMLInputElement;\r\n const phone_number_hidden: HTMLInputElement = document.getElementById(\r\n 'extension_PhoneNumber'\r\n ) as HTMLInputElement;\r\n phone_number_proxy.onchange = event => {\r\n phone_number_hidden.value = phone_number_proxy.value;\r\n };\r\n }\r\n }}\r\n />\r\n }\r\n />\r\n \r\n {props.config.PhoneText ? (\r\n \r\n ) : null}\r\n \r\n );\r\n case 'extension_GenericMarketing':\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n case 'extension_Profiling':\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n case 'extension_ThirdParty':\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n case 'extension_RegionCRM':\r\n return (\r\n
\r\n \r\n
\r\n );\r\n case 'extension_LastConsentSource':\r\n return (\r\n
\r\n \r\n
\r\n );\r\n case 'extension_EcomSignUpLegalEntity':\r\n return (\r\n
\r\n \r\n
\r\n );\r\n default:\r\n return ;\r\n }\r\n })}\r\n {disclaimer}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(props)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","import { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport { debounce } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IQuantityProps } from './Quantity.props';\r\n\r\ninterface IQuantityState {\r\n currentInput: number;\r\n isUpdateing: boolean;\r\n}\r\n/**\r\n * Quantity Component - This component is used to add or remove quantity\r\n */\r\n@observer\r\nexport default class Quantity extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n min: 1,\r\n decrementGlyphClass: 'fas fa-minus',\r\n incrementGlyphClass: 'fas fa-plus'\r\n };\r\n\r\n private inputRef: React.RefObject = React.createRef();\r\n private payLoad: IPayLoad;\r\n\r\n constructor(props: IQuantityProps) {\r\n super(props);\r\n this.state = { currentInput: props.currentCount || 1, isUpdateing: false };\r\n this._onIncrement = this._onIncrement.bind(this);\r\n this._onDecrement = this._onDecrement.bind(this);\r\n this._handleChange = this._handleChange.bind(this);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\r\n }\r\n\r\n public componentDidUpdate(prevProps: IQuantityProps): void {\r\n if (\r\n !this.props.disabled &&\r\n this.state.currentInput !== this.props.currentCount &&\r\n prevProps.currentCount !== this.props.currentCount\r\n ) {\r\n this.setState({ currentInput: this.props.currentCount || 1 });\r\n }\r\n\r\n if (this.props.disabled && !this.state.isUpdateing) {\r\n this.setState({ isUpdateing: true });\r\n }\r\n\r\n if (!this.props.disabled && this.state.isUpdateing) {\r\n this.setState({ currentInput: this.props.currentCount || 1, isUpdateing: false });\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { min, max } = this.props;\r\n\r\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\r\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\r\n const decrementDisabled = this.state.currentInput <= (min || 1) || this.props.isGiftCard;\r\n const incrementDisabled = this.state.currentInput >= max || this.props.isGiftCard;\r\n const currentValue = this.state.currentInput;\r\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\r\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\r\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n let extraClassDecrement = '';\r\n if (decrementDisabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClassDecrement = 'disabled';\r\n } else if (this.props.disabled) {\r\n // this.props.disabled shows if the state is not succeded yet\r\n extraClassDecrement = 'transition';\r\n }\r\n let extraClassIncrement = '';\r\n if (incrementDisabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClassIncrement = 'disabled';\r\n } else if (this.props.disabled) {\r\n // this.props.disabled shows if the state is not succeded yet\r\n extraClassIncrement = 'transition';\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n private _onIncrement(): void {\r\n let invokeCallback = false;\r\n const currQuantity = this.state.currentInput;\r\n let updatedQuantity: number;\r\n\r\n if (currQuantity < this.props.max) {\r\n invokeCallback = true;\r\n updatedQuantity = currQuantity + 1;\r\n } else {\r\n invokeCallback = false;\r\n updatedQuantity = this.props.max;\r\n }\r\n\r\n if (invokeCallback && this.props.onChange) {\r\n if (this.props.onChange(updatedQuantity)) {\r\n this.setState({ currentInput: updatedQuantity });\r\n }\r\n }\r\n }\r\n\r\n private _onDecrement(): void {\r\n let invokeCallback = false;\r\n const currQuantity = this.state.currentInput;\r\n let updatedQuantity: number;\r\n\r\n if (currQuantity > 1) {\r\n invokeCallback = true;\r\n updatedQuantity = currQuantity - 1;\r\n } else {\r\n invokeCallback = false;\r\n updatedQuantity = 1;\r\n }\r\n\r\n if (invokeCallback && this.props.onChange) {\r\n if (this.props.onChange(updatedQuantity)) {\r\n this.setState({ currentInput: updatedQuantity });\r\n }\r\n }\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n const currentValue = parseInt(e.target.value, 10);\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n const inputElement =\r\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n\r\n if (currentValue > this.props.max) {\r\n this.setState({ currentInput: this.props.max }, () => {\r\n debounce(() => {\r\n // due of usage debouncer, we may ignore onChange return value\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }, 200)();\r\n });\r\n } else {\r\n this.setState({ currentInput: currentValue }, () => {\r\n debounce(() => {\r\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\r\n // due of usage debouncer, we may ignore onChange return value\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n\r\n if (inputElement) {\r\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\r\n inputElement.setAttribute('value', currentValue.toString());\r\n }\r\n }\r\n }, 200)();\r\n });\r\n }\r\n }\r\n\r\n private _validateMin = (): void => {\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\r\n this.setState({ currentInput: minValue }, () => {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n });\r\n } else {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n };\r\n}\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\n\r\n// Importing necessary modules and interfaces from various packages\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxData,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\nimport {\r\n IProductSpecificationProps as IProductSpecificationExtensionProps,\r\n IProductSpecificationConfig as IProductSpecificationExtensionConfig,\r\n IReassuranceItemsData as IReassuranceItemsExtensionData\r\n} from '../definition-extensions/product-specification.ext.props.autogenerated';\r\n// NOTE Commented the \"Add to MyVenchiMix\" button on PDP to facilitate A-B tests on the page\r\n// NOTE ref. https://dev.azure.com/venchi/Venchi.DigitalProducts/_workitems/edit/9624\r\n// NOTE uncomment whenever requested\r\n// import { getCategoryPathsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport * as React from 'react';\r\nimport { IBuyboxResources } from '@msdyn365-commerce-modules/buybox/dist/types/modules/buybox/buybox.props.autogenerated';\r\nimport { ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n// NOTE Commented the \"Add to MyVenchiMix\" button on PDP to facilitate A-B tests on the page\r\n// NOTE ref. https://dev.azure.com/venchi/Venchi.DigitalProducts/_workitems/edit/9624\r\n// NOTE uncomment whenever requested\r\n// import { getCategoriesUrlSync, Image, IImageData } from '@msdyn365-commerce/core';\r\nimport { Image, IImageData } from '@msdyn365-commerce/core';\r\nimport { ProductDimension } from '@msdyn365-commerce/retail-proxy';\r\nimport { insertBackInStock_CAPAsync_v2 } from '../../../actions/DataActionExtension.g';\r\nimport {\r\n IBuyboxProps as IBuyboxExtensionProps,\r\n IBuyboxResources as IBuyboxExtensionResources,\r\n IBuyboxConfig as IBuyboxExtensionConfig,\r\n IBadgeItemsData as IBadgeItemsExtensionData,\r\n BadgeItemsBadgeLabelColor as BadgeItemsBadgeLabelColorExtension\r\n} from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { Quantity } from '../utilities/quantity';\r\nimport axios from 'axios';\r\nimport { getCustomDiscountPercentage } from '../utils/getCustomDiscountPercentage';\r\nimport { trackAddToCartFromPDP, trackAddToWishlistFromPDP, trackViewItemFromPDP } from '../utilities/datalayer/index';\r\n\r\n// Defining interfaces for product specification and badge show types\r\ninterface productSpecificationData {\r\n Name: string;\r\n BooleanValue: boolean;\r\n TextValue: string;\r\n}\r\n\r\ninterface BadgeShowType {\r\n key: string;\r\n label: string;\r\n image: IImageData;\r\n color?: BadgeItemsBadgeLabelColorExtension;\r\n}\r\n\r\ninterface NutritionalData {\r\n label: string;\r\n qty1Label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n qty2Unit: string;\r\n qty2Value: number;\r\n subcategory: NutritionalSubcategoryData[];\r\n}\r\n\r\ninterface NutritionalSubcategoryData {\r\n label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n}\r\n\r\ninterface ProductLabel {\r\n label: string;\r\n imgLink: string;\r\n}\r\n\r\ninterface ReassuranceShowType {\r\n title: string;\r\n description: string;\r\n image: IImageData;\r\n}\r\n\r\n// Certification values enum\r\nenum CertificationValueEnum {\r\n RainforestAlliance = 'RAMB'\r\n}\r\n\r\n// Main BuyboxView component\r\nconst BuyboxView: React.FC &\r\n IBuyboxExtensionConfig &\r\n IProductSpecificationViewProps &\r\n IProductSpecificationExtensionProps &\r\n IProductSpecificationExtensionConfig> = props => {\r\n const {\r\n ModuleProps,\r\n MediaGalleryContainerProps,\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToOrderTemplate,\r\n addToWishlist,\r\n telemetryContent,\r\n configure,\r\n quantity,\r\n title,\r\n callbacks,\r\n state,\r\n resources,\r\n inventoryLabel,\r\n keyInPrice,\r\n quantityLimitsMessages,\r\n max\r\n } = props;\r\n\r\n const {\r\n // Extracting product availability and specification data from props\r\n // prettier-ignore\r\n // @ts-ignore\r\n data: { productAvailableQuantity: { result: productAvailableQuantity }, productSpecificationData: { result: productSpecificationData }\r\n }\r\n } = props;\r\n const availibilityCode = productAvailableQuantity ? productAvailableQuantity[0]?.StockLevelCode : '';\r\n\r\n // Mapping badge items from configuration\r\n // const badgesItems: BadgeShowType[] | undefined = props?.config?.badgeItems?.map((badge: IBadgeItemsExtensionData) => ({\r\n // key: badge.badgeName,\r\n // label: badge.badgeLabel,\r\n // color: badge.badgeLabelColor,\r\n // image: badge.badgeImage\r\n // }));\r\n // const badgesTag = badgesItems?.map(({ key }): string => key);\r\n const maxBadges = props?.config?.badgeMaxItems !== undefined ? Number(props.config.badgeMaxItems.replace('max_', '')) : 99;\r\n\r\n // Filtering badges to show based on product specification data\r\n const [badgesItemsState] = React.useState(\r\n props?.config?.badgeItems?.map((badge: IBadgeItemsExtensionData) => ({\r\n key: badge.badgeName,\r\n label: badge.badgeLabel,\r\n color: badge.badgeLabelColor,\r\n image: badge.badgeImage\r\n }))\r\n );\r\n const [badgesTagState] = React.useState(badgesItemsState?.map(({ key }): string => key));\r\n const [badgesToShowState] = React.useState([]);\r\n\r\n productSpecificationData?.map((row: productSpecificationData) => {\r\n const attributeName = (row.Name ?? '').replace('\\n', '').trim();\r\n // if the attribute exists, has the name of a product tag and its value is true, add it specs to the badges to display\r\n if (\r\n (row !== null && badgesTagState?.includes(attributeName) && row.BooleanValue === true) ||\r\n row.TextValue === CertificationValueEnum.RainforestAlliance\r\n ) {\r\n badgesToShowState.push(attributeName);\r\n }\r\n });\r\n\r\n // @ts-ignore\r\n const productSpecificationResult = props?.data?.productSpecificationData?.result;\r\n const specificationsList = ['Product description', 'Ingredients', 'Nutritional Values JSON'];\r\n const specificationsListOrder = { 'Product description': 1, Reassurance: 2, Ingredients: 3, 'Nutritional Values JSON': 4, Labels: 5 };\r\n const ingredientsAllAttributesList = ['Ingredients', 'Ingredients 2', 'Ingredients 3'];\r\n const labels = props.resources;\r\n\r\n // @ts-ignore\r\n const pTags = [];\r\n const pSpecifications = [];\r\n // @ts-ignore\r\n const ingredientsArray = [];\r\n let ingredientsString = '';\r\n\r\n const reassuranceItems: ReassuranceShowType[] = props?.slots?.productSpecification?.length\r\n ? // @ts-ignore\r\n (props?.slots?.productSpecification[0]?.props?.config?.reassuranceItems ?? []).map(\r\n (reassurance: IReassuranceItemsExtensionData) => {\r\n if (reassurance) {\r\n return {\r\n title: reassurance.reassuranceTitle,\r\n description: reassurance.reassuranceDescription,\r\n image: reassurance.reassuranceImage\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n )\r\n : [];\r\n\r\n const isProductAccordionOpened = props?.slots?.productSpecification?.length\r\n ? // @ts-ignore\r\n props?.slots?.productSpecification[0]?.props?.config?.productDescriptionAccordionOpened ?? false\r\n : false;\r\n\r\n const [accordionsState, setAccordionsState] = React.useState(isProductAccordionOpened ? 'Productdescription' : '');\r\n const [fetchingLabels, setFetchingLabels] = React.useState(false);\r\n const [productLabels, setProductLabels] = React.useState([\r\n {\r\n label: labels['product_specification_title_emea_label'] ?? 'EMEA label',\r\n imgLink: ''\r\n },\r\n {\r\n label: labels['product_specification_title_emea_warnings'] ?? 'EMEA warnings',\r\n imgLink: ''\r\n },\r\n {\r\n label: labels['product_specification_title_fda_label'] ?? 'FDA label',\r\n imgLink: ''\r\n }\r\n ]);\r\n\r\n productSpecificationResult?.map((row: productSpecificationData) => {\r\n if (row !== null && specificationsList.includes(row.Name) && row.TextValue !== '') {\r\n pSpecifications.push({\r\n name: row.Name,\r\n data: row,\r\n order: specificationsListOrder[row.Name as keyof typeof specificationsListOrder]\r\n });\r\n }\r\n if (row !== null && ingredientsAllAttributesList.includes(row.Name) && row.TextValue !== '') {\r\n ingredientsArray.push(row);\r\n }\r\n });\r\n pSpecifications.push({ name: 'Reassurance', order: specificationsListOrder.Reassurance });\r\n pSpecifications.push({ name: 'Labels', order: specificationsListOrder.Labels });\r\n pSpecifications.sort((a, b) => a.order - b.order);\r\n // @ts-ignore\r\n const productSku = props.data.product.result?.ItemId;\r\n // @ts-ignore\r\n const productPrimaryImageUrl = props.data.product.result?.PrimaryImageUrl;\r\n\r\n const addToCartEventHandler = () => {\r\n const product = props.data.product.result;\r\n const quantity = Number((document.getElementsByClassName('quantity-input')[0] as HTMLInputElement).value) || 0;\r\n\r\n if (props.data.productPrice.result?.CustomerContextualPrice && props.data.productPrice.result?.AdjustedPrice) {\r\n trackAddToCartFromPDP(\r\n props.context,\r\n product,\r\n quantity,\r\n props.data.productPrice.result!.CustomerContextualPrice!,\r\n props.data.productPrice.result!.AdjustedPrice!\r\n );\r\n }\r\n };\r\n\r\n const addToWishlistEventHandler = () => {\r\n if (props.data.productPrice.result?.CustomerContextualPrice && props.data.productPrice.result?.AdjustedPrice) {\r\n trackAddToWishlistFromPDP(\r\n props.context,\r\n props.data.product.result,\r\n props.data.productPrice.result!.CustomerContextualPrice!,\r\n props.data.productPrice.result!.AdjustedPrice!\r\n );\r\n }\r\n };\r\n\r\n // TODO: remove this after development\r\n // Debug product attributes\r\n React.useEffect(() => {\r\n console.log('*** product specification data');\r\n console.log({ productSpecificationData: productSpecificationData });\r\n const attributes = new Map();\r\n productSpecificationData?.map((row: productSpecificationData) => {\r\n const attributeName: string = (row.Name ?? '').replace('\\n', '').trim();\r\n const attributeValue: boolean | string = row.BooleanValue ?? row.TextValue ?? '';\r\n attributes.set(attributeName, attributeValue);\r\n });\r\n console.log('*** product attributes');\r\n console.log({ attributes: attributes });\r\n }, [productSpecificationData]);\r\n\r\n // TODO: remove this after development\r\n // Debug product attributes\r\n React.useEffect(() => {\r\n console.log('*** badges items ***');\r\n console.log({ badgesItemsState: badgesItemsState });\r\n }, [badgesItemsState]);\r\n\r\n // TODO: remove this after development\r\n // Debug product attributes\r\n React.useEffect(() => {\r\n console.log('*** badges tag ***');\r\n console.log({ badgesTagState: badgesTagState });\r\n }, [badgesTagState]);\r\n\r\n // TODO: remove this after development\r\n // Debug product attributes\r\n React.useEffect(() => {\r\n console.log('*** badges to show ***');\r\n console.log({ badgesToShowState: badgesToShowState });\r\n }, [badgesToShowState]);\r\n\r\n React.useEffect(() => {\r\n const product = props.data.product.result;\r\n\r\n if (props.data.productPrice.result?.CustomerContextualPrice && props.data.productPrice.result?.AdjustedPrice) {\r\n trackViewItemFromPDP(\r\n props.context,\r\n product,\r\n props.data.productPrice.result!.CustomerContextualPrice!,\r\n props.data.productPrice.result!.AdjustedPrice!\r\n );\r\n }\r\n\r\n document.querySelector('.msc-add-to-wishlist')?.addEventListener('click', addToWishlistEventHandler);\r\n document.querySelector('.msc-add-to-cart')?.addEventListener('click', addToCartEventHandler);\r\n }, []);\r\n\r\n // @ts-ignore\r\n ingredientsArray.map(row => {\r\n ingredientsString += row.TextValue || '';\r\n });\r\n\r\n const accordionOnClick = (accordion: string): void => {\r\n const accStates = accordionsState.split(',');\r\n if (accStates.includes(accordion)) {\r\n setAccordionsState('');\r\n } else {\r\n setAccordionsState(accordion);\r\n }\r\n };\r\n\r\n const isAccordionExpanded = (accordion: string): boolean => {\r\n const accStates = accordionsState.split(',');\r\n return accStates.includes(accordion);\r\n };\r\n\r\n const normalizeData = (data: NutritionalData[]): NutritionalData[] => {\r\n const resultData: NutritionalData[] = [];\r\n data.map((row: NutritionalData) => {\r\n if (row.qty1Value) {\r\n let category: NutritionalData | undefined;\r\n const subcategory: NutritionalSubcategoryData[] = [];\r\n if (row.subcategory) {\r\n row.subcategory.map((subRow: NutritionalSubcategoryData) => {\r\n if (subRow.qty1Value) {\r\n subcategory.push(subRow);\r\n }\r\n });\r\n }\r\n category = {\r\n ...row\r\n };\r\n if (subcategory.length) {\r\n category.subcategory = subcategory;\r\n } else if (category.subcategory) {\r\n // @ts-ignore\r\n delete category.subcategory;\r\n }\r\n resultData.push(category);\r\n }\r\n });\r\n return resultData;\r\n };\r\n\r\n const _renderNutritionalValues = (jData: any): JSX.Element | undefined => {\r\n const normalizedData = normalizeData(jData);\r\n if (normalizedData.length < 2) {\r\n return undefined;\r\n }\r\n return (\r\n
\r\n {normalizedData.map((row: NutritionalData) => (\r\n <>\r\n
\r\n {/* @ts-ignore */}\r\n
{labels[row.label] ?? ''}
\r\n
\r\n {/* @ts-ignore */}\r\n
{labels[row.qty1Label] ?? ''}
\r\n
{row.qty1Value ?? ''}
\r\n
{row.qty1Unit ?? ''}
\r\n
\r\n {row.qty2Value && (\r\n
\r\n
\r\n
\r\n
\r\n
{row.qty2Value ?? ''}
\r\n
{row.qty2Unit ?? ''}
\r\n
\r\n )}\r\n {row.subcategory &&\r\n row.subcategory.map((subRow: NutritionalSubcategoryData) => (\r\n
\r\n {/* @ts-ignore */}\r\n
{labels[subRow.label] ?? ''}
\r\n
\r\n
{subRow.qty1Value ?? ''}
\r\n
{subRow.qty1Unit ?? ''}
\r\n
\r\n ))}\r\n \r\n ))}\r\n
\r\n );\r\n };\r\n\r\n const _renderProductLabels = (productLabels: ProductLabel[]): JSX.Element => {\r\n return (\r\n
\r\n {productLabels\r\n .filter(label => label.imgLink !== '')\r\n .map((row: ProductLabel) => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n );\r\n };\r\n\r\n const _renderReassurance = (reassuranceItems: ReassuranceShowType[]): JSX.Element => {\r\n return (\r\n
\r\n {reassuranceItems.map((row: ReassuranceShowType, index: number) => {\r\n const isLast = index === reassuranceItems.length - 1;\r\n const imgSettings = row?.image?.imageSettings ?? undefined;\r\n return imgSettings ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {row.title}\r\n {row.description}\r\n
\r\n
\r\n ) : (\r\n undefined\r\n );\r\n })}\r\n
\r\n );\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!fetchingLabels) {\r\n setFetchingLabels(true);\r\n _getProductLabels(productSku, productPrimaryImageUrl).then((response: string[]) => {\r\n const newProductLabels = [...productLabels];\r\n productLabels.forEach((_, index: number) => {\r\n newProductLabels[index].imgLink = response[index];\r\n });\r\n setProductLabels(newProductLabels);\r\n });\r\n }\r\n });\r\n\r\n // @ts-ignore\r\n const productShortDescription = props?.data?.productSpecificationData?.result?.filter(\r\n (productDesc: { Name: string }) => productDesc.Name === 'Short product description'\r\n )[0]?.TextValue;\r\n\r\n return (\r\n \r\n
\r\n {props.mediaGallery}\r\n
\r\n
\r\n \r\n {title}\r\n {_renderPrice(props, resources)}\r\n {availibilityCode &&
{inventoryLabel}
}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity &&\r\n _renderQuantity(\r\n quantity,\r\n callbacks,\r\n props,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n max,\r\n telemetryContent\r\n )}\r\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist, props.resources)}\r\n
\r\n {/* NOTE Commented the \"Add to MyVenchiMix\" button on PDP to facilitate A-B tests on the page\r\n NOTE ref. https://dev.azure.com/venchi/Venchi.DigitalProducts/_workitems/edit/9624\r\n NOTE uncomment whenever requested */}\r\n {/* {_renderCartAndActionsPM(addToCart, addToWishlist, props.resources)} */}\r\n
\r\n {productShortDescription &&
{productShortDescription}
}\r\n {maxBadges ? (\r\n
\r\n {badgesItemsState\r\n ?.filter((badge: BadgeShowType) => badgesToShowState.includes(badge.key))\r\n ?.map((badge: BadgeShowType, index: number) => {\r\n if (index <= maxBadges - 1) {\r\n return _renderBadge(badge, props);\r\n }\r\n return '';\r\n })}\r\n
\r\n ) : null}\r\n
\r\n {props.data.product.result?.RecordId}\r\n {props.data.product.result?.ItemId}\r\n
\r\n {_renderTextBlock(props.slots.textBlocks)}\r\n
\r\n \r\n {pSpecifications.length ? (\r\n \r\n {pSpecifications.map(row => {\r\n const title = row.name;\r\n const titleId = title.replace(/\\s+/g, '');\r\n // @ts-ignore\r\n let titleLabel = labels[`product_specification_title_${title.replace(/\\s+/g, '_').toLowerCase()}`] ?? title;\r\n const ingredientsFinalString = ingredientsString;\r\n\r\n let accordionContent;\r\n if (title === 'Ingredients' && ingredientsFinalString) {\r\n accordionContent = ingredientsFinalString;\r\n } else if (title === 'Nutritional Values JSON') {\r\n try {\r\n // @ts-ignore\r\n const jData = JSON.parse(row.data.TextValue);\r\n accordionContent = _renderNutritionalValues(\r\n jData.nutritionalValueJSONType ? jData.nutritionalValueJSONType : jData\r\n );\r\n } catch (e) {\r\n return;\r\n }\r\n } else if (title === 'Reassurance' && reassuranceItems.length > 0) {\r\n accordionContent = _renderReassurance(reassuranceItems);\r\n } else if (title === 'Labels' && productLabels.filter(label => label.imgLink !== '').length > 0) {\r\n titleLabel = labels['product_specification_title_product_labels'] ?? titleLabel;\r\n accordionContent = _renderProductLabels(productLabels);\r\n // @ts-ignore;\r\n } else if (row.data && row.data.TextValue) {\r\n // @ts-ignore;\r\n accordionContent = row.data.TextValue;\r\n }\r\n\r\n if (!accordionContent) {\r\n return;\r\n }\r\n\r\n return (\r\n // tslint:disable-next-line:jsx-key\r\n
\r\n
\r\n accordionOnClick(titleId)}\r\n aria-expanded={isAccordionExpanded(titleId)}\r\n >\r\n

{titleLabel}

\r\n
\r\n \r\n
\r\n \r\n {accordionContent}\r\n
\r\n \r\n );\r\n })}\r\n {_renderSocialShare(props.slots && props.slots?.socialShare)}\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\n// tslint:disable-next-line:no-any\r\nconst _renderAddToBackInStore = (\r\n customerId?: string,\r\n channelId?: number,\r\n itemid?: string,\r\n dimensions?: ProductDimension[],\r\n actionContext?: any,\r\n resources?: IBuyboxResources & IBuyboxExtensionResources,\r\n emailAddress?: string,\r\n locale?: string\r\n): JSX.Element => {\r\n const cust = customerId ? customerId : '';\r\n const item = itemid ? itemid : '';\r\n const channel = channelId ? channelId : 0;\r\n const dims = dimensions ? dimensions : [];\r\n let color: string = '';\r\n let config: string = '';\r\n let size: string = '';\r\n let style: string = '';\r\n // prettier-ignore\r\n // @ts-ignore\r\n let message = resources.backInStockMessage ? resources.backInStockMessage : 'You will receive an email when the product is back in stock';\r\n let toHide = false;\r\n\r\n dims.forEach(dim => {\r\n if (dim.DimensionTypeValue === 1) {\r\n color = dim.DimensionValue?.DimensionId !== undefined ? dim.DimensionValue?.DimensionId : '';\r\n } else if (dim.DimensionTypeValue === 2) {\r\n config = dim.DimensionValue?.DimensionId !== undefined ? dim.DimensionValue?.DimensionId : '';\r\n } else if (dim.DimensionTypeValue === 3) {\r\n size = dim.DimensionValue?.DimensionId !== undefined ? dim.DimensionValue?.DimensionId : '';\r\n } else if (dim.DimensionTypeValue === 4) {\r\n style = dim.DimensionValue?.DimensionId !== undefined ? dim.DimensionValue?.DimensionId : '';\r\n }\r\n });\r\n\r\n toHide = cust !== '' ? false : true;\r\n const [stockMessage, setStockMessage] = React.useState(false);\r\n\r\n const _AddToBackInStore = async () => {\r\n insertBackInStock_CAPAsync_v2(\r\n { callerContext: actionContext },\r\n channel,\r\n cust,\r\n item,\r\n color,\r\n config,\r\n size,\r\n style,\r\n 1,\r\n emailAddress || '',\r\n locale || ''\r\n ).then(result => {\r\n message = result[0].Error ? result[0].Error : message;\r\n });\r\n setStockMessage(true);\r\n };\r\n const inactiveAccount = cust.includes('-');\r\n\r\n return (\r\n <>\r\n {toHide === false && (\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!textBlocks || textBlocks.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return <>{textBlocks[0]};\r\n};\r\n\r\nconst _renderPrice = (props: IBuyboxViewProps, resources: IBuyboxResources & IBuyboxExtensionResources): JSX.Element | undefined => {\r\n const custom_price = props.context.cultureFormatter.formatCurrency(props.data.productPrice.result?.AdjustedPrice?.toFixed(2) ?? '');\r\n const custom_discount_percentage = getCustomDiscountPercentage(props.data.productPrice.result?.DiscountLines);\r\n const custom_discounted_price = props.context.cultureFormatter.formatCurrency(\r\n props.data.productPrice.result?.CustomerContextualPrice?.toFixed(2) ?? ''\r\n );\r\n\r\n if (custom_discount_percentage) {\r\n // @ts-ignore\r\n const attributes = props.data.productSpecificationData.result;\r\n\r\n let omnibus_price = null;\r\n if (attributes) {\r\n // @ts-ignore\r\n omnibus_price = attributes.filter(attribute => attribute.Name.includes('Minimum Price Last 30 Days'))[0];\r\n }\r\n\r\n let omnibus_price_currency = '';\r\n if (omnibus_price && omnibus_price.CurrencyValue && omnibus_price.CurrencyCode) {\r\n omnibus_price_currency = props.context.cultureFormatter.formatCurrency(omnibus_price.CurrencyValue, omnibus_price.CurrencyCode);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {custom_price}\r\n {custom_discount_percentage}\r\n {custom_discounted_price}\r\n {omnibus_price_currency && (\r\n
\r\n \r\n {resources.omnibus_recent_price_label} \r\n {omnibus_price_currency}\r\n \r\n
\r\n )}\r\n
\r\n \r\n );\r\n }\r\n return (\r\n \r\n {custom_price}\r\n \r\n );\r\n};\r\n\r\n// NOTE Commented the \"Add to MyVenchiMix\" button on PDP to facilitate A-B tests on the page\r\n// NOTE ref. https://dev.azure.com/venchi/Venchi.DigitalProducts/_workitems/edit/9624\r\n// NOTE uncomment whenever requested\r\n// function _addToPickAndMix(\r\n// catUrl: string,\r\n// pmProductsList: any,\r\n// RecordId: number,\r\n// Name: string | undefined,\r\n// PrimaryImageUrl: string | undefined,\r\n// pQuantity: number,\r\n// Price: number,\r\n// ItemId: number\r\n// ): void {\r\n// pmProductsList[RecordId] = {\r\n// Id: RecordId,\r\n// Item: Name,\r\n// Qty: pQuantity,\r\n// UOM: '',\r\n// Price: Price,\r\n// Description: ItemId.toString(),\r\n// DataAreaId: '',\r\n// PrimaryImageUrl: PrimaryImageUrl\r\n// };\r\n// typeof window !== 'undefined' ? localStorage.setItem('pm_products', JSON.stringify(pmProductsList)) : undefined;\r\n// window.location.assign(catUrl);\r\n// }\r\n\r\nconst _renderCartAndActions = (\r\n addToCart?: IBuyboxAddToCartViewProps,\r\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\r\n addToWishlist?: IBuyboxAddToWishlistViewProps,\r\n resources?: IBuyboxResources & IBuyboxExtensionResources\r\n): JSX.Element | undefined => {\r\n if (!addToCart && !addToWishlist) {\r\n return undefined;\r\n }\r\n // @ts-ignore\r\n const props = addToCart?.button?.props;\r\n\r\n const euHostname = 'eu.venchi.com';\r\n const localeString = props?.context?.request?.locale ? props?.context?.request?.locale?.toLowerCase() : '';\r\n const sitePath = props?.context?.request?.sitePath ? props?.context?.request?.sitePath?.substring(1) : '';\r\n const hostname = props?.context?.request?.url?.requestUrl?.hostname || '';\r\n let locale: string;\r\n if (hostname.toLowerCase() === euHostname && sitePath === '') {\r\n locale = 'eu';\r\n } else {\r\n locale = sitePath !== '' ? sitePath : localeString;\r\n }\r\n\r\n return (\r\n
\r\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\r\n {addToWishlist && addToWishlist.errorBlock}\r\n
\r\n
\r\n {_renderAddToBackInStore(\r\n props.context.request.user.customerAccountNumber,\r\n props.context.request.apiSettings.channelId,\r\n props.data?.product?.ItemId,\r\n props.data?.product?.Dimensions,\r\n props.context?.actionContext,\r\n resources,\r\n props.context.request.user.emailAddress,\r\n locale\r\n )}\r\n {addToCart && addToCart.button}\r\n {addToOrderTemplate && addToOrderTemplate.button}\r\n
\r\n {addToWishlist && {addToWishlist && addToWishlist.button}}\r\n
\r\n {addToCart && addToCart.errorBlock}\r\n {props.context.request.user.customerAccountNumber !== null && !props.context.request.user.customerAccountNumber.includes('-') && (\r\n
\r\n {\r\n // @ts-ignore\r\n resources.backInStockAgreement\r\n }\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\n// NOTE Commented the \"Add to MyVenchiMix\" button on PDP to facilitate A-B tests on the page\r\n// NOTE ref. https://dev.azure.com/venchi/Venchi.DigitalProducts/_workitems/edit/9624\r\n// NOTE uncomment whenever requested\r\n// const _renderCartAndActionsPM = (\r\n// addToCart?: IBuyboxAddToCartViewProps,\r\n// addToWishlist?: IBuyboxAddToWishlistViewProps,\r\n// resources?: IBuyboxResources & IBuyboxExtensionResources\r\n// ): JSX.Element | undefined => {\r\n// if (!addToCart && !addToWishlist) {\r\n// return undefined;\r\n// }\r\n// // @ts-ignore\r\n// const props = addToCart?.button?.props;\r\n// const productId = props?.data?.product?.RecordId;\r\n// const channelId = props?.context?.request?.channel?.RecordId;\r\n// const categoryPathLookups = [{ ProductId: productId }];\r\n// const [catUrl, setCatUrl] = React.useState('');\r\n// const [isPm, setIsPm] = React.useState(false);\r\n// const _productCategory = async () => {\r\n// const categoryPathResults = await getCategoryPathsAsync(props?.context?.actionContext, channelId, 0, categoryPathLookups);\r\n// categoryPathResults &&\r\n// categoryPathResults[0] &&\r\n// categoryPathResults[0]?.CategoryPath?.map((catPath, i) => {\r\n// const categoryUrl = getCategoriesUrlSync(catPath, props?.context?.actionContext);\r\n// if (categoryUrl && categoryUrl[1] && categoryUrl[1].Name === 'Pick&Mix') {\r\n// setIsPm(true);\r\n// setCatUrl(categoryUrl[1].Url ? categoryUrl[1].Url : '');\r\n// }\r\n// });\r\n// return;\r\n// };\r\n// React.useEffect(() => {\r\n// void _productCategory();\r\n// }, []);\r\n// // tslint:disable-next-line:no-shadowed-variable\r\n// const _addToPM = (\r\n// catUrl: string,\r\n// RecordId: number,\r\n// Name: string,\r\n// PrimaryImageUrl: string,\r\n// AdjustedPrice: number,\r\n// Qty: number,\r\n// ItemId: number\r\n// ) => {\r\n// const localPm = localStorage && localStorage.getItem('pm_products');\r\n// const localPmProds = localPm && localPm !== null ? localPm : JSON.stringify({});\r\n// const pmProductsList = JSON.parse(localPmProds);\r\n// const _addToPm = () => {\r\n// _addToPickAndMix(catUrl, pmProductsList, RecordId, Name, PrimaryImageUrl, AdjustedPrice, Qty, ItemId);\r\n// };\r\n// return (\r\n// <>\r\n// \r\n// \r\n// );\r\n// };\r\n// /* @ts-ignore */\r\n// const product_qty: product_qty = addToCart?.button?.props?.quantity;\r\n// return (\r\n//
\r\n// {isPm ? (\r\n//
\r\n// {_addToPM(\r\n// catUrl,\r\n// props.data?.product?.RecordId,\r\n// props.data?.product?.Name,\r\n// props.data?.product?.PrimaryImageUrl,\r\n// product_qty,\r\n// props.data?.product?.AdjustedPrice,\r\n// props.data?.product?.ItemId\r\n// )}\r\n//
\r\n// ) : (\r\n// ''\r\n// )}\r\n//
\r\n// );\r\n// };\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return {dropdowns.map(_renderConfigureDropdown)};\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IBuyboxProps,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxResources & IBuyboxExtensionResources,\r\n quantityLimitsMessages: React.ReactNode,\r\n max: number | undefined,\r\n telemetryContent?: ITelemetryContent\r\n): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const { resources } = props;\r\n\r\n const { quantity } = state;\r\n\r\n if (state.isCustomPriceSelected) {\r\n props.data;\r\n }\r\n const onChange = (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n };\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n {heading}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderBadge = (badge: BadgeShowType, props: IBuyboxViewProps) => {\r\n const imgSettings = badge?.image?.imageSettings ?? undefined;\r\n if (!imgSettings) {\r\n return undefined;\r\n }\r\n return (\r\n
\r\n \r\n {badge.label}\r\n
\r\n );\r\n};\r\n\r\nconst _getProductLabels = async (productId?: string, baseImagePath?: string): Promise => {\r\n if (productId && baseImagePath) {\r\n const results: string[] = [];\r\n const imgBaseUrlArray = decodeURIComponent(baseImagePath).split('/');\r\n imgBaseUrlArray.pop();\r\n\r\n const imgUrls = [\r\n [...imgBaseUrlArray, `${productId}_000_006.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_007.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_008.jpg`].join('/')\r\n ];\r\n for (let i = 0; i < 3; i = i + 1) {\r\n try {\r\n const response = await axios.get(imgUrls[i]);\r\n results.push(response?.status === 200 ? imgUrls[i] : '');\r\n } catch (e) {\r\n results.push('');\r\n }\r\n }\r\n return results;\r\n }\r\n return ['', '', ''];\r\n};\r\n\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n return <>{socialShare[0]};\r\n};\r\n\r\nexport default BuyboxView;\r\n","import { DiscountLine } from \"@msdyn365-commerce/retail-proxy\";\r\n\r\nconst getNormalizedDiscountPercentage = (percentage ?: number) : number => {\r\n if(!percentage) return 0;\r\n return percentage / 100;\r\n}\r\n\r\nexport const getCustomDiscountPercentage = (discountLines ?: DiscountLine[]) : string | undefined => {\r\n if(!discountLines || discountLines.length < 1) return;\r\n const normalizedDiscountedPrice = discountLines.reduce(\r\n (accumulator, discountLine) => accumulator * (1 - getNormalizedDiscountPercentage(discountLine.Percentage)), 1);\r\n return `-${100 - (Math.round(normalizedDiscountedPrice * 100))}%`;\r\n}\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 ICheckoutViewProps,\r\n IEmailDelivery,\r\n ILineItem,\r\n ILineItemDeliveryGroup,\r\n ILineItems,\r\n IOrderSummary,\r\n IPickUpAtStore\r\n} from '@msdyn365-commerce-modules/checkout';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { ICheckoutResources as ICheckoutResourcesExt } from '../definition-extensions/checkout.ext.props.autogenerated';\r\nimport { find } from 'lodash';\r\n\r\nimport * as React from 'react';\r\nimport {\r\n setCheckoutCartInLocalStorage,\r\n setOrderPlacedStatusLocalStorage\r\n} from '../utilities/datalayer/helpers';\r\nimport {\r\n trackAddShippingInfo,\r\n trackAddPaymentInfo,\r\n} from '../utilities/datalayer/index';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => {label};\r\n\r\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => {\r\n return (\r\n \r\n {item}\r\n {pickUpAtStore && }\r\n {emailDelivery && }\r\n \r\n );\r\n};\r\n\r\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\r\n \r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({\r\n LineItemDeliveryGroup,\r\n LineItemList,\r\n heading,\r\n lineItems,\r\n lineItemWraper,\r\n lineItemWraperIcon\r\n}) => (\r\n \r\n {lineItemWraperIcon}\r\n {lineItemWraper}\r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const LineItemsComponent: React.FC = ({\r\n LineItems,\r\n Header,\r\n heading,\r\n editLink,\r\n itemsForPickup,\r\n itemsForShip,\r\n itemsForEmail,\r\n itemsGroupWithMulitplePickupMode\r\n}) => (\r\n \r\n \r\n {heading}\r\n {editLink}\r\n \r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\r\n {itemsGroupWithMulitplePickupMode !== undefined\r\n ? itemsGroupWithMulitplePickupMode.map((item, index) => {\r\n return ;\r\n })\r\n : null}\r\n \r\n);\r\n\r\nconst _renderCustomTaxLine = (taxAmount: number | null, props: ICheckoutViewPropsExt): JSX.Element | null => {\r\n const { taxLabel, toBeCalculatedText } = props.resources;\r\n\r\n return (\r\n
\r\n

\r\n {taxLabel}\r\n\r\n {\r\n taxAmount && taxAmount > 0 ? `${taxAmount}` : toBeCalculatedText\r\n }\r\n

\r\n
\r\n )\r\n}\r\n\r\nconst OrderSummaryComponent: React.FC = ({ heading, lines, ...other }) => {\r\n // @ts-ignore\r\n const locale = other.locale;\r\n // @ts-ignore\r\n const props = other.props;\r\n // @ts-ignore\r\n const taxAmount = other.taxAmount;\r\n\r\n return (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.subtotal}\r\n {lines.shipping}\r\n {lines.otherCharge}\r\n {locale.toLowerCase() == 'en-gb' ? _renderCustomTaxLine(taxAmount, props) : lines.tax}\r\n {lines.totalDiscounts}\r\n {lines.loyalty}\r\n {lines.giftCard}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\ninterface ICheckoutViewPropsExt extends ICheckoutViewProps {\r\n resources: ICheckoutResourcesExt;\r\n}\r\n// tslint:disable-next-line:max-func-body-length\r\nconst CheckoutView: React.FC = props => {\r\n const {\r\n canShow,\r\n checkoutProps,\r\n headerProps,\r\n hasSalesOrder,\r\n bodyProps,\r\n mainProps,\r\n mainControlProps,\r\n sideProps,\r\n sideControlFirstProps,\r\n sideControlSecondProps,\r\n termsAndConditionsProps,\r\n orderConfirmation,\r\n loading,\r\n alert,\r\n title,\r\n guidedForm,\r\n orderSummary,\r\n lineItems,\r\n placeOrderButton,\r\n termsAndConditions,\r\n keepShoppingButton\r\n } = props;\r\n\r\n const locale = props.checkoutProps.moduleProps.context.request.locale;\r\n const taxAmount = props?.data?.checkout?.result?.checkoutCart?.cart?.TaxAmount;\r\n\r\n const extraOrdersSummaryEu = {\r\n taxAmount: taxAmount,\r\n locale: locale,\r\n props: props\r\n };\r\n const [greeting, setGreeting] = React.useState({\r\n status: false,\r\n greetingMessageCAP: '',\r\n greetingSignCAP: ''\r\n });\r\n\r\n const [listenersAdded, setListenersAdded] = React.useState(false);\r\n\r\n\r\n const getCartProps = async () => {\r\n const activeCartState = await getCartState(props.context?.actionContext);\r\n const checkoutCartState = props?.data?.checkout?.result?.checkoutCart;\r\n // prettier-ignore\r\n // @ts-ignore\r\n const extPropsToRemove = checkoutCartState?.cart?.ExtensionProperties?.filter((fieldVal: { Key: string }) => fieldVal.Key === 'ExtPropsRemove_CAP')[0]?.Value?.BooleanValue;\r\n // prettier-ignore\r\n if (extPropsToRemove === true) {\r\n const extKeysToRemove = ['ActiveCartId_CAP', 'CheckoutCartId_CAP', 'GreetingMessage_CAP', 'GreetingSign_CAP', 'billing', 'Type_CAP', 'Country_CAP', 'City_CAP', 'ZipCode_CAP', 'OrgName_CAP',\r\n 'VatNum_CAP', 'FiscalCode_CAP', 'PEC_CAP', 'SDI_CAP', 'InvoiceCustAccount_CAP', 'Street_CAP', 'StreetNumber_CAP', 'FirstName_CAP', 'LastName_CAP'];\r\n\r\n const removeExtProps = async () => {\r\n const extProps = checkoutCartState?.cart?.ExtensionProperties;\r\n const extPropsToEmpty = [];\r\n if (extProps) {\r\n for (const propToRemove of extKeysToRemove) {\r\n if (find(extProps, obj => obj.Key === propToRemove)) {\r\n extPropsToEmpty.push({\r\n Key: propToRemove,\r\n Value: {}\r\n });\r\n }\r\n }\r\n extPropsToEmpty.push({\r\n Key: 'ExtPropsRemove_CAP',\r\n Value: {\r\n BooleanValue: false\r\n }\r\n });\r\n }\r\n await activeCartState?.updateExtensionProperties({ newExtensionProperties: extPropsToEmpty });\r\n await checkoutCartState?.updateExtensionProperties({ newExtensionProperties: extPropsToEmpty });\r\n };\r\n void removeExtProps();\r\n } else {\r\n // prettier-ignore\r\n // @ts-ignore\r\n const greetingMessageCAP = checkoutCartState?.cart?.ExtensionProperties?.filter((greetingVal: { Key: string }) => greetingVal.Key === 'GreetingMessage_CAP')[0]?.Value?.StringValue;\r\n // prettier-ignore\r\n // @ts-ignore\r\n const greetingSignCAP = checkoutCartState?.cart?.ExtensionProperties?.filter((greetingVal: { Key: string }) => greetingVal.Key === 'GreetingSign_CAP')[0]?.Value?.StringValue;\r\n setGreeting({\r\n status:\r\n (greetingMessageCAP !== null && greetingMessageCAP !== undefined && greetingMessageCAP !== '') ||\r\n (greetingSignCAP !== null && greetingSignCAP !== undefined && greetingSignCAP !== ''),\r\n greetingMessageCAP: greetingMessageCAP !== undefined ? greetingMessageCAP : '',\r\n greetingSignCAP: greetingSignCAP !== undefined ? greetingSignCAP : ''\r\n });\r\n }\r\n };\r\n\r\n const addPaymentSectionEventTracking = () => {\r\n const paymentMethodsSection = document.querySelector('[data-m-t=\"checkout-section-container\"]')\r\n \r\n if (!paymentMethodsSection) {\r\n return\r\n }\r\n\r\n const onIntersection: IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n // Trigger the event when the section becomes visible\r\n trackAddPaymentInfo(\r\n props.context,\r\n props.data.checkout.result?.checkoutCart.cart,\r\n props.data.products.result || [] as SimpleProduct[]\r\n )\r\n\r\n // Optionally disconnect the observer if you only need the event to fire once\r\n observer.disconnect()\r\n }\r\n })\r\n }\r\n\r\n const observerOptions: IntersectionObserverInit = {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: 0.5, // Trigger when 50% of the section is visible\r\n }\r\n\r\n const observer: IntersectionObserver = new IntersectionObserver(onIntersection, observerOptions)\r\n observer.observe(paymentMethodsSection)\r\n\r\n return () => {\r\n observer.disconnect()\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n let cleanupFunctions: Function[] = []; // Array to hold all cleanup functions\r\n \r\n if (canShow && !listenersAdded) {\r\n // Send gtm event\r\n trackAddShippingInfo(\r\n props.context,\r\n props.data.checkout.result?.checkoutCart.cart,\r\n props.data.products.result || [] as SimpleProduct[]\r\n )\r\n\r\n addPaymentSectionEventTracking()\r\n\r\n void getCartProps();\r\n const handlePlaceOrderClick = () => {\r\n setOrderPlacedStatusLocalStorage(true);\r\n setCheckoutCartInLocalStorage(props.data.checkout.result?.checkoutCart.cart)\r\n };\r\n \r\n // Find all buttons and add event listeners\r\n const placeOrderButtons = document.querySelectorAll('.ms-checkout__btn-place-order');\r\n placeOrderButtons.forEach((button) => {\r\n button.addEventListener('click', handlePlaceOrderClick);\r\n \r\n // Add to cleanupFunctions array\r\n cleanupFunctions.push(() => button.removeEventListener('click', handlePlaceOrderClick));\r\n });\r\n // Check if there is at least one button to observe\r\n if (placeOrderButtons.length > 0) {\r\n setListenersAdded(true);\r\n const observer = new MutationObserver((mutationsList) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'attributes' && mutation.target instanceof Element && mutation.target.classList.contains('is-busy')) {\r\n setOrderPlacedStatusLocalStorage(true);\r\n setCheckoutCartInLocalStorage(props.data.checkout.result?.checkoutCart.cart)\r\n }\r\n }\r\n });\r\n\r\n // Observe the first button\r\n observer.observe(placeOrderButtons[0], { attributes: true });\r\n\r\n // Add observer disconnect to the cleanup functions\r\n cleanupFunctions.push(() => observer.disconnect());\r\n }\r\n }\r\n \r\n // Return a cleanup function that runs all cleanup functions\r\n return () => cleanupFunctions.forEach((clean) => clean());\r\n }, [canShow]); // Ensure listenersAdded is also a dependency if its value can change\r\n\r\n return (\r\n \r\n {!hasSalesOrder && {title}}\r\n {!hasSalesOrder && (\r\n \r\n {loading}\r\n {alert}\r\n {canShow && (\r\n
\r\n
\r\n \r\n {guidedForm}\r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n
\r\n
\r\n \r\n {orderSummary && }\r\n \r\n {termsAndConditions}\r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n {greeting.status ? (\r\n
\r\n

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

\r\n
\r\n
\r\n {' '}\r\n {greeting.greetingMessageCAP}\r\n
\r\n
\r\n {greeting.greetingSignCAP}\r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n {/* tslint:disable-next-line:react-a11y-anchors */}\r\n

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

\r\n
\r\n )}\r\n
\r\n {/* tslint:disable-next-line:react-a11y-anchors */}\r\n

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

\r\n
\r\n\r\n {lineItems && }\r\n\r\n \r\n {termsAndConditions}\r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n {hasSalesOrder && orderConfirmation}\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutView;\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 classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { Collapse, Drawer, Module, Node, Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { CartLine, CommerceProperty, Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { reaction } from 'mobx';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\n\r\nimport { trackClickMenu, trackLogin, trackUserData } from '../utilities/datalayer';\r\nimport { getAddToCartCategoryHierarchyAndListName } from '../utilities/datalayer/helpers';\r\n\r\nconst headerView: React.FC> = props => {\r\n const [isUserDataTracked, setIsUserDataTracked] = React.useState(false);\r\n\r\n const clickMenuLinkEventHandler = (e: any) => {\r\n const emojiRegex = /[\\p{Emoji}]/u;\r\n const linkText = e.target.innerText.replace(emojiRegex, '');\r\n\r\n trackClickMenu(linkText, '', '');\r\n };\r\n\r\n React.useEffect(() => {\r\n const currentURLPathName = props.context.request.url.requestUrl.pathname.replace(/\\/$/, '');\r\n\r\n // Remove the session storage in PLP\r\n if (currentURLPathName.endsWith('.c')) {\r\n sessionStorage.removeItem('venchiProductCategoryHierarchy');\r\n sessionStorage.removeItem('venchiProductListName');\r\n }\r\n\r\n if (!props.config.hideHeader) {\r\n const menuLinksDesktop = document.querySelectorAll('.ms-header__desktop-view .ms-nav__list__item__link');\r\n const menuLinksMobile = document.querySelectorAll('nav.ms-nav.mobile-vp.mobile-view > .ms-nav__list__item__link');\r\n\r\n // @ts-ignore\r\n const menuLinks = [...menuLinksDesktop, ...menuLinksMobile];\r\n\r\n menuLinks.forEach(menuLink => {\r\n menuLink.parentElement.addEventListener('click', clickMenuLinkEventHandler);\r\n });\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (props.data.cart.result?.cart) {\r\n // GTM tracking\r\n if (!isUserDataTracked) {\r\n trackUserData(props.context, props.data.accountInformation.result, !!props.data.cart.result?.cart.LoyaltyCardId);\r\n trackLogin(props.context.request.user.isAuthenticated);\r\n\r\n setIsUserDataTracked(true);\r\n }\r\n\r\n const siteLanguageExtProp = props.data.cart.result?.cart.ExtensionProperties?.filter(e => e.Key === 'SiteLanguage_Ven')[0];\r\n const currentSiteLanguage = props.context.actionContext.requestContext.locale;\r\n\r\n const addSiteLanguageExtProp = async () => {\r\n const siteLanguageExtProp = [\r\n {\r\n Key: 'SiteLanguage_Ven',\r\n Value: {\r\n StringValue: currentSiteLanguage\r\n }\r\n }\r\n ];\r\n\r\n const currentCartState = await getCartState(props.context?.actionContext);\r\n await currentCartState.updateExtensionProperties({ newExtensionProperties: siteLanguageExtProp });\r\n };\r\n\r\n // Abandoned cart language\r\n if (!siteLanguageExtProp || siteLanguageExtProp.Value?.StringValue !== currentSiteLanguage) {\r\n addSiteLanguageExtProp();\r\n }\r\n }\r\n }, [props.data.cart.result?.cart]);\r\n\r\n if (!props.config.hideHeader && typeof window !== 'undefined') {\r\n const [scrolled, setScrolled] = React.useState(false);\r\n const handleScroll = () => {\r\n const offset = window.scrollY;\r\n offset > 5 ? setScrolled(true) : setScrolled(false);\r\n };\r\n scrolled ? document.body.classList.add('headerIsSticky') : document.body.classList.remove('headerIsSticky');\r\n React.useEffect(() => {\r\n window.addEventListener('scroll', handleScroll);\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n const menuTopDesktop = document.getElementsByClassName('menu--top desktop')[0];\r\n const desktopMenuTop = document.getElementsByClassName('menu--top_ctn')[0];\r\n if (document.getElementsByClassName('menu--top mobile').length) {\r\n const menuTopMobile = document.getElementsByClassName('menu--top mobile')[0];\r\n const mobileMenu = document.getElementsByClassName('mobile menus')[0];\r\n mobileMenu.appendChild(menuTopMobile);\r\n }\r\n desktopMenuTop.appendChild(menuTopDesktop);\r\n }\r\n }, []);\r\n }\r\n const cartLines = React.useRef([]);\r\n const isCartLineInitialStatusSaved = React.useRef(false);\r\n\r\n React.useEffect(() => {\r\n const disposeReaction = reaction(\r\n () => props.data.cart.result?.isProductAddedToCart!,\r\n async (isCartLineAdded: boolean) => {\r\n if (isCartLineAdded) {\r\n const cartLinesToPatch = props.data.cart.result?.cart.CartLines?.filter(\r\n c =>\r\n !cartLines.current.includes(c.LineId!) &&\r\n !c.ExtensionProperties?.filter(e => e.Key === 'venchiProductCategoryHierarchy')[0] &&\r\n !c.ExtensionProperties?.filter(e => e.Key === 'venchiProductListName')[0]\r\n );\r\n const { categoryHierarchy, listname } = getAddToCartCategoryHierarchyAndListName();\r\n if (!categoryHierarchy && !listname) {\r\n return;\r\n }\r\n const cartLinesUpdated: CartLine[] = cartLinesToPatch\r\n ? cartLinesToPatch?.map(c => {\r\n let commerceProperties: CommerceProperty[] = c.ExtensionProperties ? c.ExtensionProperties : [];\r\n commerceProperties = [];\r\n commerceProperties.push(\r\n {\r\n Key: 'venchiProductListName',\r\n Value: { StringValue: listname }\r\n },\r\n {\r\n Key: 'venchiProductCategoryHierarchy',\r\n Value: { StringValue: categoryHierarchy }\r\n }\r\n );\r\n return {\r\n ...c,\r\n ExtensionProperties: commerceProperties\r\n };\r\n })\r\n : [];\r\n if (cartLinesUpdated.length) {\r\n props.data.cart.result\r\n ?.updateCartLines({\r\n updatedCartLinesObject: cartLinesUpdated\r\n })\r\n .then(v => {\r\n if (v.status === 'SUCCESS') {\r\n cartLines.current = props.data.cart.result?.cart.CartLines?.map(c => c.LineId!) || [];\r\n }\r\n });\r\n }\r\n } else if (!isCartLineInitialStatusSaved.current) {\r\n cartLines.current = props.data.cart.result?.cart.CartLines?.map(c => c.LineId!) || [];\r\n isCartLineInitialStatusSaved.current = true;\r\n }\r\n }\r\n );\r\n\r\n return () => {\r\n // Clean up the reaction when the component unmounts\r\n disposeReaction(); // Dispose of the reaction to avoid memory leaks\r\n };\r\n }, []);\r\n\r\n if (props.config.hideHeader) {\r\n return <>;\r\n }\r\n\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer } = props;\r\n\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {/* @ts-ignore */}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n {_renderAccountBlock(props, false)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {props.navIcon}\r\n {props.logo}\r\n
\r\n
{_renderReactFragment(props.menuBar)}
\r\n
\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n {_renderReactFragment(props.siteOptions)}\r\n
\r\n
\r\n
\r\n
\r\n {_renderCollapseMenu(props)}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.preferredStore}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n {_renderStoreLocatorButton(props)}\r\n \r\n {props.logo}\r\n \r\n {_renderReactFragment(props.search)}\r\n {_renderAccountBlock(props, false)}\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.navIcon}\r\n {props.logo}\r\n \r\n \r\n {/* {_renderReactFragment(props.search)} */}\r\n {_renderStoreLocatorButton(props)}\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n \r\n \r\n \r\n {_renderCollapseMenu(props)}\r\n {_renderReactFragment(props.menuBar)}\r\n {props?.slots?.header_gwp && props?.slots?.header_gwp}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nfunction _renderCollapseMenu(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n const { mobileMenuCollapsed, Divider, MobileMenuLinksContainer } = props;\r\n if (typeof window !== 'undefined') {\r\n mobileMenuCollapsed === true ? document.body.classList.remove('no-scroll') : document.body.classList.add('no-scroll');\r\n }\r\n //FIXME invert the condition\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n return (\r\n \r\n {_renderReactFragment(props.search)}\r\n \r\n
\r\n
{_renderReactFragment(props.menuBar)}
\r\n {_renderMobileAccountBlock(props, true)}\r\n {/* @ts-ignore */}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n
\r\n \r\n {_renderReactFragment(props.search)}\r\n {/* {_renderMobileAccountBlock(props, true)} */}\r\n \r\n \r\n
{_renderReactFragment(props.menuBar)}
\r\n \r\n {/* //TODO remove */}\r\n {_renderMobileAccountBlock(props, true)}\r\n {/* {props.wishListIconMobile} */}\r\n \r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\nfunction _renderStoreLocatorButton(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n if (\r\n props.config.storeLocatorPageLink == undefined ||\r\n props.config.storeLocatorPageLink.destinationUrl == undefined ||\r\n props.config.storeLocatorLabel == undefined\r\n ) {\r\n return <>;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {props.config.storeLocatorLabel}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default headerView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\r\n\r\n/**\r\n * Represent navigation menu state interface.\r\n */\r\nexport interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: Msdyn365.IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n drawerKeyValue: Msdyn365.IDictionary;\r\n //isOnlyMobile: boolean;\r\n //isNavOpen: boolean;\r\n}\r\n\r\n//TODO clean\r\n/* interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n categoryImageAltText: string;\r\n drawerKeyValue: IDictionary;\r\n mobileViewLabelText?: string;\r\n }\r\n */\r\n\r\n/**\r\n * NavMenuConstants enum.\r\n */\r\nexport enum NavMenuConstants {\r\n zero = 0,\r\n one = 1,\r\n two = 2,\r\n three = 3,\r\n four = 4,\r\n escapeKey = 27,\r\n rootMenu = 1\r\n}\r\n\r\n/**\r\n * GridSizes.\r\n */\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * Get category image.\r\n * @param props - Navigation menu props.\r\n * @param categoryImage - Category Image.\r\n * @param alttext - AltText String.\r\n * @returns Returns Node.\r\n */\r\nexport const getCategoryImage = (\r\n props: INavigationMenuViewProps & INavigationMenuProps<{}>,\r\n categoryImage: string,\r\n alttext: string\r\n): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n\r\n // FROM Adventure-works\r\n // xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n // sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n // md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\r\n // lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n};\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\nimport classnames from 'classnames';\r\nimport { INavigationMenuProps, ICmsNavItemsData } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Drawer,\r\n ICollapseProps,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n IDrawerState\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, { IImageData } from '@msdyn365-commerce/core';\r\nimport { getCategoryImage, INavigationState, NavMenuConstants } from './components/navigation-menu-utilities';\r\n\r\nimport { trackClickMenu } from '../utilities/datalayer';\r\n\r\ntype MenuSearchResult = {\r\n item: IMenuItemData;\r\n parents: string[];\r\n} | null;\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent, INavigationState> {\r\n private currentLevel: number = 0;\r\n\r\n private readonly _positionInSetOffset: number = 1;\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n private readonly menuNode: React.RefObject;\r\n \r\n private readonly telemetryContent: ITelemetryContent;\r\n private readonly promotionalImage: IImageData[] = [];\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n constructor(props: INavigationMenuViewProps & INavigationMenuProps<{}>) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, drawerKeyValue: {} };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this._layout2022closeSubmenu = this._layout2022closeSubmenu.bind(this);\r\n this._layout2022escFunction = this._layout2022escFunction.bind(this);\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 const { menuItemData } = this.props;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n return null;\r\n });\r\n }\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n //FIXME change if\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022) {\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n } else {\r\n document.body && document.addEventListener('keydown', (this._layout2022escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._layout2022handleClickOutside);\r\n }\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n //FIXME change if\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022) {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside);\r\n } else {\r\n document.body && document.removeEventListener('keydown', (this._layout2022escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._layout2022handleClickOutside);\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n /**\r\n * Method to render mobile menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\r\n //FIXME invert the condition\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022)\r\n return this._renderDrawerMenu(menuItem);\r\n else return this._layout2022renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\r\n })}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render desktop menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n //FIXME invert condition\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022)\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n else\r\n return (\r\n \r\n \r\n {this._layout2022renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return {linkText};\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { DivContainer, MenuList, showCategoryImage } = this.props;\r\n this.currentLevel = 1;\r\n if (showCategoryImage) {\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n /////////////////////////////////////////////////\r\n /////// LAYOUT 2022 ////////////////////////////\r\n ////////////////////////////////////////////////\r\n\r\n /**\r\n * Method to render drawer menu.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\r\n return this._layout2022renderDrawer(menuItem, setSize, posinset, true);\r\n }\r\n return this._layout2022renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\r\n }\r\n\r\n /**\r\n * Method to render drawer component.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number, firstLevel?: boolean): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const keyValue = this.state.drawerKeyValue;\r\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\r\n const keys = keyValue !== undefined ? keyValue : {};\r\n const { isMobileView } = this.props;\r\n\r\n let isDrawerOpen = false;\r\n if (keys[buttonText]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\r\n\r\n\r\n const bottomLinkData: ICmsNavItemsData[] = firstLevel ? this.props.config.cmsNavItems?.filter(navItem => navItem.linkText === buttonText) || [] : [];\r\n const bottomAllLink: IMenuItemData = {\r\n linkText: bottomLinkData[0]?.bottomLinkText || \"\",\r\n linkURL: bottomLinkData[0]?.bottomLinkUrl?.destinationUrl || \"\",\r\n shouldOpenNewTab: false,\r\n }\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n return this._layout2022renderDrawer(\r\n menuSubItem,\r\n bottomAllLink.linkText === \"\" ? menuItem.subMenu?.length : menuItem.subMenu!.length + 1,\r\n currentPos + this._positionInSetOffset\r\n );\r\n }\r\n return this._layout2022renderDrawerLink(\r\n menuSubItem,\r\n bottomAllLink.linkText === \"\" ? menuItem.subMenu?.length : menuItem.subMenu!.length + 1,\r\n currentPos + this._positionInSetOffset\r\n );\r\n })}\r\n {bottomAllLink.linkText === \"\" ? <> :\r\n this._layout2022renderDrawerLink(\r\n bottomAllLink,\r\n menuItem.subMenu!.length + 1,\r\n menuItem.subMenu!.length + this._positionInSetOffset\r\n )\r\n }\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link.\r\n * @param linkText -Text on Menu link.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderLinkText(\r\n linkText: string | undefined,\r\n setSize: number | undefined,\r\n posinset: number | undefined\r\n ): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer link.\r\n * @param item -Single Menuitem.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._layout2022renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._layout2022renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to generate menu.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n this.setState({ parentMenu: undefined });\r\n break;\r\n }\r\n menuItem = this._layout2022getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._layout2022createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._layout2022createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n /**\r\n * Method to get data for submenu.\r\n * @param item -Single Menuitem.\r\n * @returns IMenuItemData.\r\n */\r\n private _layout2022getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item?.id });\r\n return subMenus[i];\r\n }\r\n const found = this._layout2022getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to create item list.\r\n * @param menuItemData -Single Menuitem.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022createMenuItemList(menuItemData: IMenuItemData, index?: number, level?: number): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._layout2022renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined, menuItemData.linkText);\r\n }\r\n return (\r\n <>\r\n {this._layout2022renderButtonMenuItem(menuItemData)}\r\n {this._layout2022renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined, menuItemData.linkText, true)}\r\n \r\n );\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._layout2022renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._layout2022renderSpanMenuItem(menuItemData, menuItemData.id, true);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _layout2022renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean, nameParentElement?: string, firstLevel?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const subMenuLevel = 3;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\r\n\r\n // Const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n //this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n //this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n\r\n const bottomLinkData: ICmsNavItemsData[] = nameParentElement ? this.props.config.cmsNavItems?.filter(navItem => navItem.linkText === nameParentElement) || [] : [];\r\n const bottomLinkDataFiltered: ICmsNavItemsData[] = bottomLinkData.filter(navItem => navItem.bottomLinkText != undefined) || [];\r\n const bottomLinkPresent: boolean = firstLevel && bottomLinkDataFiltered.length > 0 || false;\r\n const bottomMenuLink: JSX.Element | null = bottomLinkPresent\r\n ? this._layout2022renderLinkMenuItem({\r\n linkText: bottomLinkData[0]?.bottomLinkText || \"\",\r\n linkURL: bottomLinkData[0]?.bottomLinkUrl?.destinationUrl || \"\",\r\n shouldOpenNewTab: false,\r\n })\r\n : null;\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n\r\n let menuItem: JSX.Element | null;\r\n\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._layout2022renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL\r\n ? this._layout2022renderLinkMenuItem(option, idx)\r\n : this._layout2022renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._layout2022renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._layout2022renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu, bottomLinkPresent, bottomMenuLink);\r\n }\r\n\r\n /**\r\n * Method to render button menu item.\r\n * @param option -Single Menuitem.\r\n * @param activeMenu -Active menu number.\r\n * @param index -Active menu index.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to find an item in menu items\r\n * @param menu\r\n * @param itemId\r\n * @param parents\r\n * @returns\r\n */\r\n private findItemAndParents(\r\n menuItems: IMenuItemData[],\r\n itemId: number | undefined,\r\n parents: string[]\r\n ) : MenuSearchResult {\r\n if (!itemId || !menuItems.length) return null\r\n\r\n for (let item of menuItems) {\r\n if (item.id === itemId && item.subMenu?.length === 0) {\r\n return { item, parents }\r\n }\r\n\r\n if (item.subMenu && item.subMenu.length > 0) {\r\n const result = this.findItemAndParents(item.subMenu, itemId, [...parents, item.linkText || ''])\r\n\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render link menu item.\r\n * @param option -Single Menuitem.\r\n * @param index -Active menu index.\r\n * @param hoverEffect -Active menu effect.\r\n * @param isParent -Is parent menu.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private sendEventGA(option: IMenuItemData, isMobileView: boolean) {\r\n // New Approach\r\n const clickedItem = this.findItemAndParents(this.props.menuItemData, option.id, [])\r\n\r\n if (clickedItem) {\r\n trackClickMenu(clickedItem.parents[0] || '', clickedItem.parents[1] || '', clickedItem.item.linkText || '')\r\n }\r\n }\r\n\r\n private _layout2022renderLinkMenuItem(\r\n option: IMenuItemData,\r\n index?: number,\r\n hoverEffect: boolean = true,\r\n isParent: boolean = false,\r\n setSize?: number,\r\n posinset?: number\r\n ): JSX.Element | null {\r\n const { Link, isMobileView } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n {\r\n this.sendEventGA(option, isMobileView);\r\n onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\r\n }}\r\n >\r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render promotional link.\r\n * @param linkText -Link text.\r\n * @param linkUrl -Link url.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render span menu item.\r\n * @param option -Single Menu Item.\r\n * @param index -Index.\r\n * @param isParent -Is parent menu.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render menu.\r\n * @param level -Menu level.\r\n * @param menuOptions -Menu lists.\r\n * @param currentItem -Menu current.\r\n * @param submenu -Mneu has submenu or not.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean, bottomLinkAvail?: boolean, bottomLink?: JSX.Element | null): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\r\n const categoryImageDisplay =\r\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n const promotionalContentDisplay =\r\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass =\r\n this.currentLevel > NavMenuConstants.two || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n\r\n return (\r\n \r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n
\r\n {categoryImageDisplay &&\r\n ArrayExtensions.hasElements(categoryImages) &&\r\n categoryImages.map(item => (\r\n \r\n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n {promotionalContentDisplay &&\r\n this._layout2022renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
\r\n {bottomLinkAvail ?\r\n (<>\r\n
\r\n
\r\n {bottomLink}\r\n
\r\n )\r\n : <> \r\n\r\n }\r\n\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to handle dropdwon change.\r\n * @param data -Menuitem data.\r\n * @param parentId -Menu parent.\r\n * @returns Jsx element.\r\n */\r\n private readonly _layout2022handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n if (this.props.showCategoryImage) {\r\n this._layout2022updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._layout2022resetFocus();\r\n };\r\n\r\n /**\r\n * Method to call when focus lost from menu.\r\n */\r\n private readonly _layout2022resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _layout2022handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n this.setState({\r\n activeMenu: undefined,\r\n categoryImage: null\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle close submenu event.\r\n */\r\n private _layout2022closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined });\r\n }\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param event -HTML event.\r\n */\r\n private readonly _layout2022escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n if (!this.props.isMobileView) {\r\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\r\n for (const item of navDrawerList) {\r\n const navDrawerButton = item.firstChild as HTMLButtonElement;\r\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\r\n navDrawerButton.focus();\r\n }\r\n }\r\n }\r\n this._layout2022closeSubmenu();\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param drawerState -HTML event.\r\n */\r\n private readonly _layout2022onDrawerChange = (drawerState: IDrawerState) => {\r\n const { drawerKeyValue } = this.state;\r\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\r\n const newPair = { [drawerText]: drawerState.isOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _layout2022updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n ////////////////////////////////////////\r\n ////////// CLASS///////////////////////\r\n //////////////////////////////////\r\n}\r\nexport default NavigationMenuView;\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\n\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-sales-line';\r\nimport { IOrderConfirmationViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/./order-confirmation';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { find } from 'lodash';\r\n\r\nimport {\r\n IHelp,\r\n IOrderSummary,\r\n IPaymentMethods\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { trackPurchase } from '../utilities/datalayer';\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n receiptEmail,\r\n createdDate,\r\n channelReferenceId\r\n}) => (\r\n \r\n {createdDate}\r\n {channelReferenceId}\r\n {receiptEmail}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n {salesLine}\r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo,\r\n pickupDateTimeslot\r\n}) => (\r\n \r\n {heading}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {delivery && delivery.shippingItemsToYou}\r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: 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 OrderConfirmationOrderSummary: 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 OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderConfirmationHelp: 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 OrderConfirmationView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n data,\r\n slots\r\n}) => {\r\n // const updateExtProps = async (modprops: IModuleProps) => {\r\n // const currentCartState = await getCartState(modprops.moduleProps.context?.actionContext);\r\n // const cartLines = currentCartState?.cart?.CartLines;\r\n // if (!cartLines || (cartLines && cartLines.length === 0)) {\r\n // console.log(currentCartState?.cart?.CartLines?.length);\r\n // const removeExtProps = [\r\n // {\r\n // Key: 'ExtPropsRemove_CAP',\r\n // Value: {\r\n // BooleanValue: true\r\n // }\r\n // }\r\n // ];\r\n // await currentCartState.updateExtensionProperties({ newExtensionProperties: removeExtProps });\r\n // }\r\n // };\r\n\r\n // React.useEffect(() => {\r\n // void updateExtProps(moduleProps);\r\n // }, []);\r\n\r\n const setRemoveData = async (modprops: IModuleProps) => {\r\n const currentCartState = await getCartState(modprops.moduleProps.context?.actionContext)\r\n const extProps = currentCartState?.cart?.ExtensionProperties;\r\n const extPropsToRemove = extProps && find(extProps, obj => obj.Key === 'ExtPropsRemove_CAP')?.Value?.BooleanValue;\r\n const cartLines = currentCartState?.cart?.CartLines;\r\n // console.log(\"setRemoveData function\");\r\n if (!cartLines || (cartLines && cartLines.length === 0)) {\r\n // prettier-ignore\r\n // @ts-ignore\r\n const extKeysToRemove = ['ActiveCartId_CAP', 'CheckoutCartId_CAP', 'GreetingMessage_CAP', 'GreetingSign_CAP', 'billing', 'Type_CAP', 'Country_CAP', 'City_CAP', 'ZipCode_CAP', 'OrgName_CAP',\r\n 'VatNum_CAP', 'FiscalCode_CAP', 'PEC_CAP', 'SDI_CAP', 'InvoiceCustAccount_CAP', 'Street_CAP', 'StreetNumber_CAP', 'FirstName_CAP', 'LastName_CAP'];\r\n const extPropsToEmpty = [];\r\n // console.log(\"Cleaning Extension properties of cart\");\r\n if (extProps) {\r\n for (const propToRemove of extKeysToRemove) {\r\n if (find(extProps, obj => obj.Key === propToRemove)) {\r\n extPropsToEmpty.push({\r\n Key: propToRemove,\r\n Value: {}\r\n });\r\n }\r\n }\r\n if (extPropsToRemove === true){\r\n extPropsToEmpty.push({\r\n Key: 'ExtPropsRemove_CAP',\r\n Value: {\r\n BooleanValue: false\r\n }\r\n });\r\n }\r\n }\r\n if (extPropsToEmpty.length !== 0) {\r\n await currentCartState.updateExtensionProperties({ newExtensionProperties: extPropsToEmpty });\r\n }\r\n else {\r\n // console.log(\"no extension property to clean found\");\r\n }\r\n }\r\n };\r\n React.useEffect(() => {\r\n trackPurchase(\r\n data.orderHydration.result?.salesOrder,\r\n data.orderHydration.result?.products || []\r\n )\r\n\r\n void setRemoveData(moduleProps);\r\n }, []);\r\n\r\n const locale = moduleProps.moduleProps.context.request.locale;\r\n // @ts-ignore\r\n const salseOrderData = moduleProps?.moduleProps?.data?.orderHydration?.result?.salesOrder;\r\n const taxAmount = salseOrderData?.TaxAmount;\r\n const extraOrdersSummaryEu = {\r\n taxAmount: taxAmount,\r\n locale: locale\r\n };\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {backToShoppingLink}\r\n {groups && }\r\n {payment && }\r\n {orderSummary && }\r\n {help && }\r\n {slots &&\r\n slots.commisionJunction &&\r\n React.cloneElement(slots.commisionJunction[0] as React.ReactElement, {\r\n salesOrder: data.orderHydration.result?.salesOrder\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISearchCategoryViewProps,\r\n ISearchFormViewProps,\r\n ISearchKeywordViewProps,\r\n ISearchProductViewProps\r\n} from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\n\r\nimport { trackSearch } from '../utilities/datalayer';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label,\r\n isLoadingAutoSuggest,\r\n isLoadingNode\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper, searchText)}\r\n \r\n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (\r\n form: ISearchFormViewProps,\r\n SearchForm: INodeProps,\r\n FormWrapper: INodeProps,\r\n searchText: string\r\n) => {\r\n const handleSubmitWrapper = (event: any) => {\r\n if (FormWrapper.onSubmit) {\r\n FormWrapper.onSubmit(event);\r\n }\r\n\r\n trackSearch(searchText)\r\n }\r\n\r\n const updatedFormWrapper = {\r\n ...FormWrapper,\r\n onSubmit: handleSubmitWrapper\r\n };\r\n \r\n return (\r\n \r\n \r\n {form.input}\r\n {form.cancelBtn}\r\n {form.submitBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n productSuggestions.items.map((item, index) => {\r\n // @ts-ignore\r\n if (item?.price?.props?.data?.price?.CustomerContextualPrice != 0)\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n else return null;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;\r\n"],"names":["_ref","id","className","text","ariaLabel","disabled","onClick","React","Button","type","message","errorClassName","classnames","role","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","value","pattern","required","onChange","name","undefined","forId","htmlFor","successClassName","SignUp","constructor","props","super","moduleClassName","handleHeadingChange","event","this","config","heading","target","handleParagraphChange","disclaimer","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","resources","map","obj","ID","toLowerCase","isEmailVerificationRequried","templateVersion","emailRegex","PAT","VERIFY","isGivenNameVerificationRequried","isSurnameVerificationRequried","newPasswordRegex","reenterPasswordRegex","UX_INPUT_TYPE","PAT_DESC","invalidPasswordError","invalidEmailAddressError","errorMessages","required_field","requiredFieldMissingError","Object","assign","getValue","v1Value","v2Value","EmailRegex","defaultRegex","source","PasswordRegex","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","data","render","_this$props","_this$props$config$re","locale","context","request","regionCRM","regionLanguageMapping","find","regionMapping","pageLanguage","LastConsentSource","Source","EcomSignUpLegalEntity","viewProps","_objectSpread","viewState","isShowLoading","signUp","moduleProps","loading","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","SignUpLoadingIconComponent","SignUpLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","Msdyn365","editProps","onEdit","requestContext","signUpLocalAccount","_renderLocalAccount","renderView","localAccount","items","_renderInput","emailAddressLabelText","passwordLabelText","confirmPasswordLabelText","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","addressZipCodeLabelOptional","birthdayLabelText","phoneLabelText","emailVerification","isRequired","email","verificationCodeLabelText","verificationControlWrapper","buttonWrapper","buttons","SignUpButtonComponent","key","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","successMessage","SignUpSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","errorMessage","SignUpErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","givenNameVerification","givenName","requiredFieldMissingSummaryError","surnameVerification","surname","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","passwordEntryMismatchError","fieldIncorrectError","labelText","cssClassName","wrapper","label","SignUpLabelComponent","input","SignUpInputComponent","__decorate","observable","observer","SignUpItem","Node","SignUpEmailVerification","_ref2","button","SignUpGivenNameVerificationComponent","_ref3","SignUpSurnameVerificationComponent","_ref4","LocalAccount","birthDate","setBirthDate","formatDateState","setFormatDateState","patternUS","signUpButton","document","getElementById","onclick","e","preventDefault","stopPropagation","trackVClubRegistration","profiling_ref","handleChange","checked","current","item","_props$resources","_props$resources2","_props$resources3","_props$resources4","_props$resources5","_props$resources6","_props$resources$emai","emailRepErrorText","email_rep","email_rep_error","email_rep_error_backup","title","textContent","emailRepeatLabelText","color","endsWith","onKeyUp","currentTarget","today","Date","match","checkDate","onPaste","birthday_proxy","birthday_hidden","onchange","BirthdayText","PostalText","phone_number_proxy","phone_number_hidden","PhoneText","hideMarketing","defaultChecked","preflagMarketing","htmlGenericMarketing","privacyPolicyURL","dangerouslySetInnerHTML","__html","format","USmarketingText","hideProfiling","preflagProfiling","ref","htmlProfiling","hideThirdParty","preflagThirdParty","htmlThirdParty","error","index","SignUpLoading","_ref5","Module","Quantity","inputRef","_validateMin","minValue","min","currentInput","setState","currentCount","isUpdateing","_onIncrement","bind","_onDecrement","_handleChange","payLoad","getPayloadObject","telemetryContent","prevProps","max","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","currentValue","contentAction","etext","TelemetryConstant","DecrementQuantity","decrementAttributes","getTelemetryAttributes","IncrementQuantity","incrementAttributes","extraClassDecrement","extraClassIncrement","decrementButtonAriaLabel","tabIndex","onBlur","inputQuantityAriaLabel","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","inputElement","HTMLInputElement","_debounce","setAttribute","toString","defaultProps","CertificationValueEnum","_renderTextBlock","textBlocks","length","_renderPrice","_props$data$productPr7","_props$data$productPr8","_props$data$productPr9","_props$data$productPr10","_props$data$productPr11","custom_price","cultureFormatter","formatCurrency","productPrice","result","AdjustedPrice","toFixed","custom_discount_percentage","discountLines","normalizedDiscountedPrice","reduce","accumulator","discountLine","percentage","Percentage","Math","round","getCustomDiscountPercentage","DiscountLines","custom_discounted_price","CustomerContextualPrice","attributes","productSpecificationData","omnibus_price","filter","attribute","Name","includes","omnibus_price_currency","CurrencyValue","CurrencyCode","omnibus_recent_price_label","textDecoration","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","_addToCart$button","_props$context","_props$context2","_props$context3","_props$context4","_props$context5","_props$data3","_props$data4","_props$context6","localeString","sitePath","substring","url","requestUrl","hostname","errorBlock","_renderAddToBackInStore","customerId","channelId","itemid","dimensions","actionContext","emailAddress","cust","channel","dims","size","backInStockMessage","toHide","forEach","dim","_dim$DimensionValue","_dim$DimensionValue2","DimensionTypeValue","DimensionValue","DimensionId","_dim$DimensionValue3","_dim$DimensionValue4","_dim$DimensionValue5","_dim$DimensionValue6","_dim$DimensionValue7","_dim$DimensionValue8","stockMessage","setStockMessage","inactiveAccount","hidden","async","insertBackInStock_CAPAsync_v2","callerContext","then","Error","outOfStockText","notifyMeWhenAvailable","user","customerAccountNumber","apiSettings","product","ItemId","Dimensions","backInStockAgreement","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderQuantity","quantityComponent","callbacks","extentionResources","quantityLimitsMessages","quantity","isCustomPriceSelected","newValue","updateQuantity","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderBadge","badge","_badge$image$imageSet","_badge$image","imgSettings","image","imageSettings","Image","fallBackSrc","altText","gridSettings","loadFailureBehavior","_getProductLabels","productId","baseImagePath","results","imgBaseUrlArray","decodeURIComponent","split","pop","imgUrls","join","i","response","axios","push","status","_renderSocialShare","socialShare","_productAvailableQuan","_props$config","_props$config2","_props$data","_props$slots","_props$slots$productS","_props$slots2","_props$slots3","_props$slots$productS2","_props$slots4","_labels$product_speci","_labels$product_speci2","_labels$product_speci3","_props$data$product$r","_props$data$product$r2","_props$data2","_badgesItemsState$fil","_props$data$product$r3","_props$data$product$r4","_props$slots5","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","inventoryLabel","productAvailableQuantity","availibilityCode","StockLevelCode","maxBadges","badgeMaxItems","replace","badgesItemsState","badgeItems","badgeName","badgeLabel","badgeLabelColor","badgeImage","badgesTagState","badgesToShowState","row","_row$Name","attributeName","trim","BooleanValue","TextValue","RainforestAlliance","productSpecificationResult","specificationsList","specificationsListOrder","Reassurance","Ingredients","Labels","ingredientsAllAttributesList","labels","pSpecifications","ingredientsArray","ingredientsString","reassuranceItems","slots","productSpecification","reassurance","reassuranceTitle","description","reassuranceDescription","reassuranceImage","isProductAccordionOpened","productDescriptionAccordionOpened","accordionsState","setAccordionsState","fetchingLabels","setFetchingLabels","productLabels","setProductLabels","imgLink","order","sort","a","b","productSku","productPrimaryImageUrl","PrimaryImageUrl","addToCartEventHandler","_props$data$productPr","_props$data$productPr2","getElementsByClassName","trackAddToCartFromPDP","addToWishlistEventHandler","_props$data$productPr3","_props$data$productPr4","trackAddToWishlistFromPDP","console","log","Map","_row$Name2","_row$BooleanValue","attributeValue","set","_props$data$productPr5","_props$data$productPr6","_document$querySelect","_document$querySelect2","trackViewItemFromPDP","querySelector","addEventListener","isAccordionExpanded","accordion","normalizeData","resultData","qty1Value","category","subcategory","subRow","newProductLabels","_","productShortDescription","productDesc","mediaGallery","RecordId","_labels","titleId","titleLabel","accordionContent","jData","JSON","parse","normalizedData","_labels$row$label","_labels$row$qty1Label","_row$qty1Value","_row$qty1Unit","_row$qty2Value","_row$qty2Unit","qty1Label","qty1Unit","qty2Value","qty2Unit","_labels$subRow$label","_subRow$qty1Value","_subRow$qty1Unit","_renderNutritionalValues","nutritionalValueJSONType","_row$image$imageSetti","_row$image","isLast","_renderReassurance","_labels$product_speci4","href","rel","_renderProductLabels","accordionOnClick","PickUpAtStoreComponent","PickUpAtStore","location","EmailDeliveryComponent","EmailDelivery","LineItemComponent","LineItem","pickUpAtStore","emailDelivery","LineItemGroupComponent","LineItemDeliveryGroup","LineItemList","lineItems","lineItem","LineId","LineItemGroupComponentWithMultiplePickUp","lineItemWraper","lineItemWraperIcon","LineItemComponentWithMultiplePickUp","_ref6","PickUpAtStoreComponentWithMultiplePickUp","_ref7","LineItemsComponent","_ref8","LineItems","Header","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","OrderSummaryComponent","_ref9","lines","other","_objectWithoutProperties","_excluded","taxAmount","subtotal","shipping","otherCharge","_renderCustomTaxLine","taxLabel","toBeCalculatedText","marginBottom","tax","totalDiscounts","loyalty","giftCard","orderTotal","canShow","checkoutProps","headerProps","hasSalesOrder","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","orderConfirmation","alert","guidedForm","orderSummary","placeOrderButton","termsAndConditions","keepShoppingButton","extraOrdersSummaryEu","checkout","checkoutCart","cart","TaxAmount","greeting","setGreeting","greetingMessageCAP","greetingSignCAP","listenersAdded","setListenersAdded","cleanupFunctions","_props$data$checkout$2","trackAddShippingInfo","products","addPaymentSectionEventTracking","paymentMethodsSection","IntersectionObserver","onIntersection","entries","entry","_props$data$checkout$","isIntersecting","trackAddPaymentInfo","disconnect","root","rootMargin","threshold","observe","_checkoutCartState$ca","activeCartState","getCartState","checkoutCartState","ExtensionProperties","fieldVal","Key","Value","extKeysToRemove","_checkoutCartState$ca2","extProps","extPropsToEmpty","propToRemove","_find","updateExtensionProperties","newExtensionProperties","removeExtProps","_checkoutCartState$ca3","_checkoutCartState$ca4","greetingVal","StringValue","getCartProps","handlePlaceOrderClick","_props$data$checkout$3","setOrderPlacedStatusLocalStorage","setCheckoutCartInLocalStorage","placeOrderButtons","querySelectorAll","removeEventListener","MutationObserver","mutationsList","mutation","_props$data$checkout$4","Element","classList","contains","clean","greetingTitle","greetingMessage","greetingSign","addGreetingText","insertModifyYourPromoCode","_renderCollapseMenu","mobileMenuCollapsed","Divider","MobileMenuLinksContainer","_props$slots9","_props$slots10","_props$slots7","_props$slots8","body","remove","add","layout2022","Collapse","_renderReactFragment","search","menuBar","_renderMobileAccountBlock","countrySelector","renderCustomerName","accountInformation","customer","FirstName","renderForMobile","AccountInfoDropdownParentContainer","signOutLink","signInLink","accountLinks","accountClassName","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","link","_renderAccountBlock","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","slot","_renderStoreLocatorButton","_props$config$storeLo","storeLocatorPageLink","destinationUrl","storeLocatorLabel","_props$data$cart$resu4","isUserDataTracked","setIsUserDataTracked","clickMenuLinkEventHandler","linkText","innerText","trackClickMenu","pathname","sessionStorage","removeItem","hideHeader","menuLink","parentElement","_props$data$cart$resu","_props$data$cart$resu3","_siteLanguageExtProp$","_props$data$cart$resu2","trackUserData","LoyaltyCardId","trackLogin","isAuthenticated","siteLanguageExtProp","currentSiteLanguage","addSiteLanguageExtProp","currentCartState","scrolled","setScrolled","handleScroll","offset","scrollY","menuTopDesktop","desktopMenuTop","menuTopMobile","appendChild","cartLines","isCartLineInitialStatusSaved","disposeReaction","reaction","_props$data$cart$resu5","isProductAddedToCart","isCartLineAdded","_props$data$cart$resu6","cartLinesToPatch","CartLines","c","_c$ExtensionPropertie","_c$ExtensionPropertie2","categoryHierarchy","listname","getAddToCartCategoryHierarchyAndListName","cartLinesUpdated","commerceProperties","_props$data$cart$resu7","updateCartLines","updatedCartLinesObject","v","_props$data$cart$resu8","_props$data$cart$resu9","HeaderTag","HeaderContainer","HeaderTopBarContainer","_props$slots6","preferredStore","logo","wishListIconDesktop","cartIcon","navIcon","header_gwp","siteOptions","NavMenuConstants","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","promotionalImage","supportedLevel","four","_handleDropdownToggle","parentId","isMobileView","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","menuNode","focus","_handleClickOutside","_escFunction","keyCode","_closeSubmenu","_layout2022handleDropdownToggle","showCategoryImage","_layout2022updateCategoryImage","imageSource","_layout2022resetFocus","_layout2022handleClickOutside","categoryImage","_layout2022escFunction","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_layout2022closeSubmenu","_layout2022onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","categoryImageSource","option","src","ArrayExtensions","hasElements","promotionalContent","additionalProperties","linkUrl","getTelemetryObject","telemetryPageName","friendlyName","telemetry","menuItemData","subMenu","imagesource","MsDyn365","isBrowser","componentWillUnmount","_renderMobileMenu","_renderDesktopMenu","Navigation","menuItem","posinset","_layout2022renderDrawerMenu","_renderDrawerMenu","MenuList","_layout2022renderDisplay","_renderDisplay","_renderDrawer","_renderLinkMenuItem","_renderLinkText","menuSubItem","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","levelClassName","menuOptions","idx","hasOptions","_renderMenu","onFocus","Link","onTelemetryClick","Span","level","currentItem","DivContainer","setSize","_layout2022renderDrawer","_layout2022renderLinkMenuItem","firstLevel","_this$props$config$cm","_bottomLinkData$","_bottomLinkData$2","keyValue","keys","isDrawerOpen","colProps","bottomLinkData","cmsNavItems","navItem","bottomAllLink","bottomLinkText","bottomLinkUrl","shouldOpenNewTab","toggleButtonProps","onToggle","collapseProps","_layout2022renderLinkText","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_layout2022renderDrawerLink","_layout2022renderSpanMenuItem","menuItemDatum","_layout2022getFromSubMenu","_layout2022createMenuItemList","_layout2022renderSubMenu","_layout2022renderButtonMenuItem","IsSubMenu","nameParentElement","_this$props$config$cm2","_bottomLinkData$3","_bottomLinkData$4","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","bottomLinkDataFiltered","bottomLinkPresent","bottomMenuLink","haveSubmenu","_layout2022renderMenu","findItemAndParents","menuItems","itemId","parents","_item$subMenu","sendEventGA","clickedItem","isParent","arguments","_layout2022renderPromotionalLink","submenu","bottomLinkAvail","bottomLink","_this$state$categoryI","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","two","one","categoryImages","StringExtensions","isNullOrWhitespace","imagesContainerKey","_item$src","_item$additionalPrope","getCategoryImage","alttext","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_props$config$categor","imageData","categoryImageSettings","OrderConfirmationOrderInfomation","orderInformationProps","receiptEmail","createdDate","channelReferenceId","OrderConfirmationSalesLine","salesLineProps","salesLine","buyAgainButton","OrderConfirmationGroupDelivery","deliveryProps","count","processing","address","trackingInfo","pickupDateTimeslot","OrderConfirmationGroup","groupProps","delivery","salesLinesProps","salesLines","shippingItemsToYou","OrderConfirmationGroups","groupsProps","groups","group","OrderConfirmationOrderSummary","orderSummaryProps","totalAmount","earnedPoints","itemProp","OrderConfirmationPayment","paymentMethodsProps","methods","OrderConfirmationHelp","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_moduleProps$modulePr","_data$orderHydration$3","backToShoppingLink","orderInfomation","payment","help","_data$orderHydration$","_data$orderHydration$2","trackPurchase","orderHydration","salesOrder","_modprops$moduleProps","_currentCartState$car","_find2","_currentCartState$car2","modprops","extPropsToRemove","setRemoveData","salseOrderData","commisionJunction","_renderForm","form","SearchForm","FormWrapper","searchText","updatedFormWrapper","onSubmit","trackSearch","cancelBtn","submitBtn","_renderKeywordSuggestions","KeywordSuggest","UlKeyword","keywordSuggestions","isLoadingAutoSuggest","isLoadingNode","_renderProductSuggestions","ProductSuggest","UlProduct","productSuggestions","_item$price","price","LiProduct","AProduct","thumbnail","_renderCategorySuggestions","CategorySuggest","UlCategory","categorySuggestions","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","autosuggestCategory","autosuggestKeyword","autosuggestProduct"],"sourceRoot":""}