{"version":3,"file":"static/js/7.14911946dcd2a501b8bc.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-order-history-tile/components/aaa_account-order-history-tile-description.tsx?170b","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-order-history-tile/components/aaa_account-order-history-tile-links.tsx?b3cb","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-order-history-tile/aaa_account-order-history-tile.tsx?eb5c","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-order-history-tile/aaa_account-order-history-tile.view.tsx?c6a4","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-saveddesign-tile/components/aaa_account-saveddesign-tile-description.tsx?51a9","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-saveddesign-tile/components/aaa_account-saveddesign-tile-links.tsx?2fa1","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-saveddesign-tile/aaa_account-saveddesign-tile.tsx?c20b","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-saveddesign-tile/aaa_account-saveddesign-tile.view.tsx?4704","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_contact-us-form/aaa_contact-us-form.tsx?5cad","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_contact-us-form/aaa_contact-us-form.view.tsx?eb1e","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_subscribe/aaa_subscribe.tsx?d70a","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_subscribe/aaa_subscribe.view.tsx?302e","webpack://Msdyn365.Commerce.Online/./src/modules/pop-up/pop-up.tsx?7d3f","webpack://Msdyn365.Commerce.Online/./src/modules/pop-up/pop-up.view.tsx?32bb","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/checkout-customer-account-payment.view.tsx?aac8","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/order-details.view.tsx?4c63","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-button.tsx?e1d9","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-error.tsx?7f8a","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-input.tsx?5bbe","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-label.tsx?4988","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.tsx?13a2","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.view.tsx?e2f8","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/search-bar.tsx?63c1","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/data-grid.tsx?ddec","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/business-partner-users-table.tsx?c677","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/business-partners-table.tsx?8b1d","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/business-partners.tsx?57a6","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/business-partners.view.tsx?b34e","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.tsx?9ac6","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.view.tsx?a99d","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/components/links.tsx?c969","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/tile-list-item.tsx?114a","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/tile-list-item.view.tsx?19a8","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/carticon.component.tsx?3c7c","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountWishlistTileDescription {\r\n description: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\r\n

{description}

\r\n);\r\n\r\nexport default IAccountWishlistTileDescription;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../aaa_account-order-history-tile.props.autogenerated';\r\n\r\nexport interface IAccountWishlistTileLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n linkdata.forEach((link, index) => {\r\n payLoad.contentAction.etext = link.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-account-wishlist-tile__link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n\r\nexport default AccountWishlistTileLinks;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IAaaAccountOrderHistoryTileData } from './aaa_account-order-history-tile.data';\r\nimport { IAaa_accountOrderHistoryTileProps } from './aaa_account-order-history-tile.props.autogenerated';\r\nimport DescriptionComponent from './components/aaa_account-order-history-tile-description';\r\nimport LinksComponent from './components/aaa_account-order-history-tile-links';\r\nimport { getRequestOrderHistoryB2CAsync } from '../../dataActions/DataActionExtension.g';\r\n\r\nexport interface IAccountWishlistTileViewProps extends IAaa_accountOrderHistoryTileProps {\r\n AccountWishlistTile: IModuleProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountWishlist component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AccountOrderHistoryTile extends React.PureComponent, any> {\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n constructor(props: IAaa_accountOrderHistoryTileProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.state = {\r\n orderHistoryCount: 0\r\n };\r\n }\r\n public componentDidMount() {\r\n void this.getOrderHistoryCount();\r\n }\r\n\r\n private readonly getOrderHistoryCount = async () => {\r\n const { context } = this.props;\r\n if (context.actionContext.requestContext.user.isAuthenticated) {\r\n const orderHistorys: any = await getRequestOrderHistoryB2CAsync(\r\n {\r\n callerContext: this.props.context.actionContext,\r\n queryResultSettings: {}\r\n },\r\n ''\r\n );\r\n this.setState({ orderHistoryCount: orderHistorys.RequestOrder.length });\r\n }\r\n };\r\n public render(): JSX.Element | null {\r\n const { config, resources } = this.props;\r\n const { className, heading, links } = config;\r\n const { accountOrderHistoryTileDescription } = resources;\r\n const description = accountOrderHistoryTileDescription.replace(\r\n '{count}',\r\n this.state.orderHistoryCount ? this.state.orderHistoryCount : 'no'\r\n );\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n AccountWishlistTile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-order-history-tile', config.className)\r\n },\r\n heading: heading && heading.text && (\r\n \r\n ),\r\n links: links && links.length > 0 && (\r\n \r\n ),\r\n description: \r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[linkIndex]) {\r\n this.props.config.links[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n}\r\n\r\nexport default AccountOrderHistoryTile;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAccountWishlistTileViewProps } from './aaa_account-order-history-tile';\r\n\r\nconst AccountWishlistTileView: React.FC = props => {\r\n const { AccountWishlistTile, heading, description, links } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nexport default AccountWishlistTileView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountWishlistTileDescription {\r\n description: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\r\n

{description}

\r\n);\r\n\r\nexport default IAccountWishlistTileDescription;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../aaa_account-saveddesign-tile.props.autogenerated';\r\n\r\nexport interface IAccountWishlistTileLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n linkdata.forEach((link, index) => {\r\n payLoad.contentAction.etext = link.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-account-wishlist-tile__link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n\r\nexport default AccountWishlistTileLinks;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IAaaAccountSaveddesignTileData } from './aaa_account-saveddesign-tile.data';\r\nimport { IAaa_accountSaveddesignTileProps } from './aaa_account-saveddesign-tile.props.autogenerated';\r\nimport DescriptionComponent from './components/aaa_account-saveddesign-tile-description';\r\nimport LinksComponent from './components/aaa_account-saveddesign-tile-links';\r\nimport { getSavedDesignsAsync } from '../../dataActions/DataActionExtension.g';\r\n\r\nexport interface IAccountWishlistTileViewProps extends IAaa_accountSaveddesignTileProps {\r\n AccountWishlistTile: IModuleProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountWishlist component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AccountSavedDesignTile extends React.PureComponent, any> {\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n constructor(props: IAaa_accountSaveddesignTileProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.state = {\r\n savedDesignCount: 0\r\n };\r\n }\r\n public componentDidMount() {\r\n void this.getSavedDesignCount();\r\n }\r\n\r\n private readonly getSavedDesignCount = async () => {\r\n const { context } = this.props;\r\n if (context.actionContext.requestContext.user.isAuthenticated) {\r\n const savedDesigns: any = await getSavedDesignsAsync({\r\n callerContext: this.props.context.actionContext,\r\n queryResultSettings: {}\r\n });\r\n this.setState({ savedDesignCount: savedDesigns.Result.length });\r\n }\r\n };\r\n public render(): JSX.Element | null {\r\n const { config, resources } = this.props;\r\n const { className, heading, links } = config;\r\n const { accountSavedDesignTileDescription } = resources;\r\n const description = format(accountSavedDesignTileDescription || 'You have {0} items in the Wishlist.', this.state.savedDesignCount);\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n AccountWishlistTile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-saveddesign-tile', config.className)\r\n },\r\n heading: heading && heading.text && (\r\n \r\n ),\r\n links: links && links.length > 0 && (\r\n \r\n ),\r\n description: \r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[linkIndex]) {\r\n this.props.config.links[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n}\r\n\r\nexport default AccountSavedDesignTile;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAccountWishlistTileViewProps } from './aaa_account-saveddesign-tile';\r\n\r\nconst AccountWishlistTileView: React.FC = props => {\r\n const { AccountWishlistTile, heading, description, links } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nexport default AccountWishlistTileView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IAaaContactUsFormData } from './aaa_contact-us-form.data';\r\nimport { IAaa_contactUsFormProps } from './aaa_contact-us-form.props.autogenerated';\r\nimport { contactusAsync } from '../../dataActions/DataActionExtension.g';\r\n\r\nexport interface IAaa_contactUsFormViewProps extends IAaa_contactUsFormProps {\r\n setFromField: any;\r\n onSubmit: any;\r\n state: any;\r\n}\r\n\r\n/**\r\n *\r\n * Aaa_contactUsForm component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Aaa_contactUsForm extends React.PureComponent, any> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n boutiqueName: '',\r\n boutiqueLocation: '',\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n phone: '',\r\n description: ''\r\n };\r\n }\r\n private setFromField = (field: string, value: string) => {\r\n this.setState({ [field]: value });\r\n };\r\n private onSubmit = async () => {\r\n const payload = {\r\n BoutiqueName: this.state.boutiqueName,\r\n BoutiqueLocation: this.state.boutiqueLocation,\r\n FirstName: this.state.firstName,\r\n LastName: this.state.lastName,\r\n Email: this.state.email,\r\n Phone: this.state.phone,\r\n Description: this.state.description,\r\n Mobile: '',\r\n ReasonForContact: ''\r\n };\r\n await contactusAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }, payload);\r\n this.setState({ boutiqueName: '', boutiqueLocation: '', firstName: '', lastName: '', phone: '', email: '', description: '' });\r\n };\r\n public render(): JSX.Element | null {\r\n const viewProps: IAaa_contactUsFormViewProps = {\r\n ...(this.props as IAaa_contactUsFormProps),\r\n setFromField: this.setFromField,\r\n state: this.state,\r\n onSubmit: this.onSubmit\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default Aaa_contactUsForm;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAaa_contactUsFormViewProps } from './aaa_contact-us-form';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IAaa_contactUsFormViewProps) => {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n props.setFromField('boutiqueName', e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n props.setFromField('boutiqueLocation', e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n props.setFromField('firstName', e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n props.setFromField('lastName', e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n props.setFromField('email', e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n props.setFromField('phone', e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n \r\n props.setFromField('description', e.target.value)}\r\n />\r\n
\r\n
\r\n props.onSubmit()}\r\n disabled={!props.state.email}\r\n >\r\n {'Submit'}\r\n \r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { subscribeAction, SubscribeDataInput } from '../../dataActions/subscribe-data.action';\r\nimport { IAaa_subscribeConfig, IAaa_subscribeProps } from './aaa_subscribe.props.autogenerated';\r\n\r\ninterface ISubscribeState {\r\n email: string;\r\n}\r\n\r\n/**\r\n * Subscribe view props.\r\n */\r\nexport interface ISubscribeViewProps extends IAaa_subscribeProps, ISubscribeState {\r\n subscribe: IModuleProps;\r\n subscribeContainer: INodeProps;\r\n heading: React.ReactNode;\r\n text: React.ReactNode;\r\n submitButton?: INodeProps;\r\n submitButtonLabelText?: string;\r\n subscribeForm?: INodeProps;\r\n emailInput?: INodeProps;\r\n handleText(): void;\r\n}\r\n\r\n/**\r\n * Subscribe component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class Subscribe extends React.PureComponent, ISubscribeState> {\r\n private readonly _emailAddressInputRef: React.RefObject;\r\n\r\n public constructor(props: ISubscribeViewProps) {\r\n super(props);\r\n this._emailAddressInputRef = React.createRef();\r\n this._buttonSubscribe = this._buttonSubscribe.bind(this);\r\n }\r\n\r\n public state: ISubscribeState = {\r\n email: ''\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph } = this.props.config;\r\n\r\n const moduleClassName = 'ms-subscribe';\r\n\r\n const subscribeParagraph = paragraph && (\r\n \r\n );\r\n\r\n const subscribeHeading = heading && (\r\n \r\n );\r\n const viewProps = {\r\n ...this.props,\r\n handleText: this.handleTextChange,\r\n subscribe: {\r\n moduleProps: this.props,\r\n className: moduleClassName\r\n },\r\n subscribeContainer: {\r\n className: 'ms-subscribe__details'\r\n },\r\n heading: subscribeHeading,\r\n text: subscribeParagraph,\r\n subscribeForm: {\r\n className: 'ms-subscribe__details__form',\r\n tag: 'form',\r\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\r\n name: 'subscribeForm',\r\n role: 'form',\r\n autoComplete: 'off'\r\n },\r\n emailInput: {\r\n className: 'ms-subscribe__details__form__email',\r\n tag: 'input',\r\n ref: this._emailAddressInputRef,\r\n type: 'email',\r\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\r\n value: this.state.email,\r\n placeholder: this.props.resources.subscribeEmailPlaceholderText,\r\n onChange: this.handleChange('emailInput')\r\n },\r\n submitButton: {\r\n className: 'ms-subscribe__details__form__submit',\r\n tag: Button,\r\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\r\n type: 'submit',\r\n onClick: this._buttonSubscribe,\r\n title: this.props.resources.subscribeButtonLabel\r\n },\r\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\r\n };\r\n\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n /**\r\n * Handle text change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handle paragraph change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n\r\n private handleChange = (inputText: string) => (e: React.ChangeEvent) => {\r\n const value = e.target.value;\r\n switch (inputText) {\r\n case 'emailInput': {\r\n this.setState({ email: value });\r\n break;\r\n }\r\n default: {\r\n console.log('No input box changes');\r\n }\r\n }\r\n };\r\n\r\n private _buttonSubscribe(): void {\r\n this.setState(\r\n previousState => {\r\n return {\r\n ...previousState\r\n };\r\n },\r\n () => {\r\n const emailAddress = this._emailAddressInputRef.current ? this._emailAddressInputRef.current.value : '';\r\n if (this.isEmailValid(emailAddress)) {\r\n const request: SubscribeDataInput = new SubscribeDataInput(emailAddress);\r\n subscribeAction(request, this.props.context.actionContext)\r\n .then(result => {\r\n this.setState({ email: '' });\r\n })\r\n .catch(error => {\r\n this.props.telemetry.exception(error);\r\n this.props.telemetry.debug('Failed to call async subscribe');\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n private isEmailValid = (email: string): boolean => {\r\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@']+(\\.[^<>()\\[\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n };\r\n}\r\n\r\nexport default Subscribe;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISubscribeViewProps } from './aaa_subscribe';\r\n\r\n/**\r\n * Override form action and button action below.\r\n * @param event - The form event.\r\n */\r\nconst onSubmit = (event: React.FormEvent): void => {\r\n event.preventDefault();\r\n};\r\n\r\n/**\r\n * View component.\r\n * @param props - The view properties.\r\n * @returns - Returns nothing.\r\n */\r\nexport const subscribeView: React.FC = props => {\r\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\r\n return (\r\n \r\n \r\n {heading}\r\n {text}\r\n \r\n \r\n \r\n {props.submitButtonLabelText}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default subscribeView;\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 { Button, IModuleProps, INodeProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { setPopUpState } from './actions';\r\nimport { IPopUpData } from './pop-up.data';\r\nimport { IPopUpProps } from './pop-up.props.autogenerated';\r\n\r\n/**\r\n * Pop up view props.\r\n */\r\nexport interface IPopUpViewProps extends IPopUpProps {\r\n moduleProps: IModuleProps;\r\n headerContainerProps: INodeProps;\r\n headerProps?: React.ReactNode;\r\n bodyContainerProps: INodeProps;\r\n bodyContent: React.ReactNode;\r\n className: string;\r\n onDismiss(): void;\r\n}\r\n\r\n/**\r\n *\r\n * PopUp component.\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass PopUp extends React.PureComponent> {\r\n public componentDidMount(): void {\r\n const {\r\n config: { isCookieEnabled, shouldPopUpOnLoad },\r\n context: {\r\n actionContext,\r\n app: {\r\n config: { popUpCookieName }\r\n }\r\n }\r\n } = this.props;\r\n\r\n if (shouldPopUpOnLoad) {\r\n const popUpState = { isOpen: true };\r\n const cookieName = (popUpCookieName as string) || '_msdyn365__popUp_';\r\n if (!isCookieEnabled || !this._isActionTaken(cookieName)) {\r\n actionContext.update(setPopUpState(popUpState), popUpState);\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { className, heading, isBackDropStatic },\r\n resources\r\n } = this.props;\r\n\r\n let isDialogOpen = true;\r\n if (this.props.context.actionContext.requestContext.user.isAuthenticated) {\r\n isDialogOpen = false;\r\n }\r\n isDialogOpen = this._isCookieAvailable('_msdyn365__user_visited');\r\n if (isDialogOpen) {\r\n // set cookie...\r\n this.props.context.request.cookies.set('_msdyn365__user_visited', 'User Visited');\r\n }\r\n\r\n // is auth **bAAA\r\n const viewProps = {\r\n ...this.props,\r\n onDismiss: this._onDismiss,\r\n moduleProps: {\r\n tag: Modal,\r\n moduleProps: this.props,\r\n className: classnames('ms-pop-up', className),\r\n autoFocus: true,\r\n backdrop: isBackDropStatic ? 'static' : true,\r\n fade: true,\r\n isOpen: isDialogOpen,\r\n 'aria-label': heading ?? resources.popUpAriaLabel,\r\n onClosed: this._onDismiss,\r\n horizontalPosition: 'center',\r\n verticalPosition: 'center',\r\n toggle: this._onDismiss\r\n },\r\n headerContainerProps: {\r\n tag: ModalHeader,\r\n className: 'ms-pop-up__modal-header',\r\n toggle: this._onDismiss\r\n },\r\n headerProps: heading && (\r\n \r\n ),\r\n bodyContainerProps: {\r\n tag: ModalBody,\r\n className: 'ms-pop-up__modal-body'\r\n },\r\n bodyContent: (\r\n \r\n {this.props.config.content}\r\n \r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle the heading change event.\r\n * @param event - Content Editable Event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading = event.target.value;\r\n };\r\n\r\n /**\r\n * _isActionTaken method - To check cookie value.\r\n * @param cookieName - Cookie name.\r\n * @returns - Boolean value for existence of cookie or it's value itself.\r\n */\r\n private readonly _isActionTaken = (cookieName: string): boolean => {\r\n const cookie = this.props.context.request.cookies;\r\n const popUpCookie = cookie.get(cookieName) as Msdyn365.ICookieValue<{}> | undefined;\r\n\r\n if (popUpCookie === undefined || popUpCookie.value === 'false') {\r\n return false;\r\n }\r\n\r\n return !!popUpCookie.value;\r\n };\r\n private readonly _isCookieAvailable = (cookieName: string | undefined): boolean => {\r\n const cookie = this.props.context.request.cookies;\r\n if (!cookieName) {\r\n return true;\r\n }\r\n const popUpCookie = cookie.get(cookieName) as Msdyn365.ICookieValue<{}> | undefined;\r\n return popUpCookie === undefined || !popUpCookie.value;\r\n };\r\n\r\n /**\r\n * _onDismiss method - To dismiss pop up.\r\n */\r\n private readonly _onDismiss = (): void => {\r\n const popUpState = { isOpen: false };\r\n this.props.context.actionContext.update(setPopUpState(popUpState), popUpState);\r\n };\r\n\r\n /**\r\n * _getPopUpContent method - To get pop up content.\r\n * @param item - Pop up item.\r\n * @param index - Index.\r\n * @returns - Pop up content as react element.\r\n */\r\n // private readonly _getPopUpContent = (item: React.ReactNode, index: number): React.ReactNode => {\r\n // return (\r\n // \r\n // {React.cloneElement(item as React.ReactElement)}\r\n // \r\n // \r\n // );\r\n // };\r\n private redirectToSignIn() {\r\n if (this.props.context.actionContext.requestContext.user.signInUrl) {\r\n window.location.href = this.props.context.actionContext.requestContext.user.signInUrl;\r\n }\r\n }\r\n}\r\n\r\nexport default PopUp;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IPopUpViewProps } from './pop-up';\r\n\r\n/**\r\n * View component.\r\n * @param props - The view properties.\r\n * @returns - Pop up view.\r\n */\r\nexport const popUpView: React.FC = props => {\r\n const { moduleProps, headerContainerProps, headerProps, bodyContainerProps, bodyContent } = props;\r\n\r\n return (\r\n \r\n {headerProps}\r\n {bodyContent}\r\n \r\n );\r\n};\r\n\r\nexport default popUpView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./checkout-customer-account-payment';\r\nimport { IAccountPaymentEditViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./components/get-account-payment-form-edit-mode';\r\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./components/get-account-payment-form-summary-mode';\r\n\r\nexport const SummaryForm: React.FC = ({\r\n formProps,\r\n label,\r\n paymentAmount,\r\n addPaymentButton,\r\n appliedLine,\r\n bottomBorder\r\n}) => (\r\n \r\n <>\r\n {label}\r\n {addPaymentButton}\r\n {paymentAmount}\r\n {appliedLine}\r\n {/* {bottomBorder} */}\r\n \r\n \r\n);\r\n\r\nexport const EditForm: React.FC = ({\r\n formProps,\r\n inputLabel,\r\n inputAmount,\r\n addPaymentButton,\r\n customerName,\r\n customerAccountNumber,\r\n customerSince,\r\n accountCredit,\r\n alert,\r\n accountDetails,\r\n appliedLine,\r\n bottomBorder\r\n}) => (\r\n \r\n <>\r\n {/* {customerName}\r\n {customerAccountNumber}\r\n {customerSince} */}\r\n {accountCredit}\r\n {accountDetails}\r\n {inputLabel}\r\n {alert}\r\n {addPaymentButton}\r\n {inputAmount}\r\n {/* {addPaymentButton} */}\r\n {appliedLine}\r\n {/* {bottomBorder} */}\r\n \r\n \r\n);\r\n\r\nconst CheckoutCustomerAccountView: React.FC = props => {\r\n const { checkoutCustomerAccount, summaryView, editView, moduleState } = props;\r\n return (\r\n \r\n {moduleState.isReady && summaryView && }\r\n {!moduleState.isReady && editView && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutCustomerAccountView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n channelName,\r\n channelAddress\r\n}) => (\r\n \r\n {channelName}\r\n {channelAddress}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\r\n \r\n {salesLine}\r\n {buyAgainButton}\r\n {errors}\r\n \r\n);\r\n\r\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\r\n \r\n {heading}\r\n {count}\r\n \r\n);\r\n\r\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\r\n \r\n {delivery && }\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\r\n \r\n {!isCashAndCarryTransaction && salesLine.salesStatus}\r\n \r\n ))}\r\n \r\n )}\r\n {!delivery.showTimeslot && address}\r\n {delivery.showTimeslot && (\r\n \r\n {address}\r\n {delivery.pickupDateTimeslot}\r\n \r\n )}\r\n \r\n \r\n);\r\n\r\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n viewModes,\r\n tableViewActions,\r\n table,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {tableViewActions}\r\n {viewModes}\r\n {table}\r\n {groups && }\r\n \r\n {orderSummary && }\r\n {payment && }\r\n \r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpButtonProps {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n link?: string;\n telemetryContent: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const SignUpButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n link,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent, text);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n

{message}

\n \n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InputType } from '../business-sign-up';\n\nexport interface IBusinessSignUpInputProps {\n id?: string;\n type: InputType;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IBusinessSignUpInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nexport const SignUpInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n onChange,\n fieldReference\n}) => {\n if (type === InputType.TextArea) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default SignUpInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessSignUpLabelProps {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nexport const SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, getUrlSync, RichTextComponent, Text } from '@msdyn365-commerce/core';\nimport { Address, BusinessPartnerProspect } from '@msdyn365-commerce/retail-proxy';\nimport { createProspectAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBusinessSignUpConfig, IBusinessSignUpProps } from './business-sign-up.props.autogenerated';\nimport { SignUpButton, SignUpError, SignUpInput, SignUpLabel } from './components';\n\nexport interface IBusinessSignUpExtendedProps extends IBusinessSignUpProps {\n formItems?: IFormItem[];\n}\n\nexport interface IBusinessSignUpItem {\n wrapper: INodeProps;\n isAddressInput?: boolean;\n id: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input?: React.ReactNode;\n}\n\nexport interface IBusinessState {\n isReady: boolean;\n formItems: IFormItem[];\n addressHasErrors: boolean;\n showAddressErrors: boolean;\n hasSubmitErrors: boolean;\n}\n\nexport interface IBusinessSignUpLocalAccount {\n FormWrapper: INodeProps;\n items: IBusinessSignUpItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface IBusinessSignUpViewProps {\n className: string;\n businessSignUp: IModuleProps;\n ContainerWrapper: INodeProps;\n heading: React.ReactNode;\n businessSignUpForm: IBusinessSignUpLocalAccount;\n formItems: IFormItem[];\n}\n\nexport interface IFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n address?: Address;\n customClass?: string;\n fieldReference?: React.RefObject;\n}\n\nexport enum InputType {\n // eslint-disable-next-line @typescript-eslint/no-shadow -- Text enum doesn't override the imported Text\n Text = 'text',\n Address = 'address',\n Email = 'email',\n TextArea = 'textarea'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n Email = 'CompanyEmail',\n CompanyName = 'CompanyName',\n Address = 'CompanyAddress',\n JobTitle = 'JobTitle',\n Size = 'CompanySize',\n Department = 'Department',\n Comment = 'Comment'\n}\n\nexport const renderInputSection = (\n inputs: IFormItem[],\n className: string,\n needToReset: boolean,\n onInputChange: (event: React.ChangeEvent) => void,\n showErrors: boolean,\n addressForm?: React.ReactNode,\n updateAddress?: (errors: boolean, currAddress?: Address) => void\n): IBusinessSignUpItem[] => {\n return inputs.map((element, index) => {\n const { id, type, label, maxChars, isRequired, pattern, customClass, value, fieldReference } = element;\n\n const baseSignUpItem: IBusinessSignUpItem = {\n wrapper: {\n className: classnames(className, `${className}-${id}`, customClass)\n },\n id,\n label: ,\n errorMessage: \n };\n\n if (type === InputType.Address) {\n if (addressForm) {\n baseSignUpItem.isAddressInput = true;\n baseSignUpItem.input = (\n <>\n {React.cloneElement(addressForm as React.ReactElement, {\n updateForm: updateAddress,\n hasError: showErrors,\n isRequired: isRequired === undefined ? false : isRequired,\n resetAddress: needToReset\n })}\n \n );\n } else {\n // If the address slot is not filled, remove this input from the form\n inputs.splice(index, 1);\n }\n } else {\n baseSignUpItem.input = (\n \n );\n }\n\n return baseSignUpItem;\n });\n};\n\n/**\n *\n * Business Request Form Modules\n * Form that a business can use to submit a request to become a partner with Microsoft.\n * @extends {React.Component>}\n */\nclass BusinessSignUp extends React.Component {\n // Used as default data\n public BusinessSignUpDefaultInputs: IFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.firstNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.lastNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.emailAddressLabel,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-50'\n },\n {\n id: InputID.CompanyName,\n type: InputType.Text,\n label: this.props.resources.companyLabel,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Department,\n type: InputType.Text,\n label: this.props.resources.departmentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.JobTitle,\n type: InputType.Text,\n label: this.props.resources.jobTitleLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Size,\n type: InputType.Text,\n label: this.props.resources.companySizeLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Address,\n type: InputType.Address,\n label: this.props.resources.companyAddressLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n },\n {\n id: InputID.Comment,\n type: InputType.TextArea,\n label: this.props.resources.commentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n }\n ];\n\n private readonly formChildReference: React.RefObject = React.createRef();\n\n private readonly moduleClassName: string = 'ms-business-sign-up';\n\n private needsToReset: boolean = false;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IBusinessSignUpExtendedProps) {\n super(props);\n\n this.state = {\n isReady: false,\n formItems: this.props.formItems || this._addedReference(),\n addressHasErrors: false,\n showAddressErrors: false,\n hasSubmitErrors: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this.formChildReference.current?.focus();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessSignUpExtendedProps, nextState: IBusinessState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config } = this.props;\n const { formItems } = this.state;\n const { className, heading } = config;\n\n const viewProps = {\n ...this.props,\n businessSignUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n ContainerWrapper: {\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n businessSignUpForm: this._renderForm(),\n formItems\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle the heading change event.\n * @param event - Content Editable Event.\n */\n public handleHeadingChange = (event: ContentEditableEvent): void => {\n this.props.config.heading.text = event.target.value;\n };\n\n private _renderForm(): IBusinessSignUpLocalAccount {\n const { config, resources, slots } = this.props;\n const { showAddressErrors, hasSubmitErrors, isReady, formItems } = this.state;\n const {\n signUpButtonArialabel,\n signUpButtonText,\n cancelButtonArialabel,\n cancelButtonText,\n errorMessage,\n partialAddressErrorMessage\n } = resources;\n const addressForm = (slots && slots.addressSlot && slots.addressSlot.length > 0 && slots.addressSlot[0]) || undefined;\n const successPageURL =\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\n getUrlSync('home', this.props.context.actionContext);\n\n const form = {\n FormWrapper: {\n className: `${this.moduleClassName}__form `\n },\n items: renderInputSection(\n formItems,\n `${this.moduleClassName}__form-item`,\n this.needsToReset,\n this._onInputChange,\n showAddressErrors,\n addressForm,\n this._onAddressChange\n ),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasSubmitErrors && ,\n showAddressErrors && (\n \n )\n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n\n if (this.needsToReset) {\n this.needsToReset = false;\n }\n\n return form;\n }\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\n this.setState({\n isReady: this._isFormReady(),\n formItems: newForm,\n hasSubmitErrors: false\n });\n };\n\n private _addedReference(): IFormItem[] {\n const newFormFields = this.BusinessSignUpDefaultInputs;\n newFormFields[0].fieldReference = this.formChildReference;\n return newFormFields;\n }\n\n private readonly _onAddressChange = (errors: boolean, currentAddress?: Address): void => {\n // Find address item\n const newForm = this.state.formItems;\n const addressItem = newForm.find(item => {\n return item.type === InputType.Address;\n });\n\n // If found --> set to currentAddress\n if (addressItem) {\n addressItem.address = currentAddress;\n\n // Update state with new values and set errors to false if address is not required field\n this.setState(\n {\n formItems: newForm,\n addressHasErrors: errors,\n showAddressErrors: false\n },\n () => {\n this.setState({ isReady: this._isFormReady() });\n }\n );\n }\n };\n\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const currentInput of formItems) {\n // Will return FALSE if:\n // - input field is required\n // IF is address AND addressHasErrors === true\n // ELSE value is undefined OR empty\n // OR\n // - pattern provided and value does not match pattern\n\n if (currentInput.isRequired) {\n if (currentInput.type === InputType.Address) {\n if (this.state.addressHasErrors) {\n return false;\n }\n } else if (currentInput.value === undefined || currentInput.value === '') {\n return false;\n }\n }\n if (currentInput.pattern !== undefined && currentInput.value.match(currentInput.pattern) === null) {\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _onSubmit = (event: React.MouseEvent) => {\n if (this.state.addressHasErrors) {\n this.setState({\n showAddressErrors: true\n });\n\n event.preventDefault();\n return;\n }\n\n const { context } = this.props;\n\n // Check for matching id and if not empty\n const firstName = this._getItem(InputID.FirstName);\n const lastName = this._getItem(InputID.LastName);\n const companyName = this._getItem(InputID.CompanyName);\n const companyEmail = this._getItem(InputID.Email);\n const companyAddress = this._getItem(InputID.Address, true);\n const jobTitle = this._getItem(InputID.JobTitle);\n const department = this._getItem(InputID.Department);\n const companySize = this._getItem(InputID.Size);\n const comments = this._getItem(InputID.Comment);\n\n // API gets email as part of the address object, but I do not use the email input from the address component, thus we need to copy it over\n if (companyEmail && companyEmail.value && companyAddress && companyAddress.address) {\n companyAddress.address.Email = companyEmail.value;\n }\n\n const newPartner: BusinessPartnerProspect = {\n FirstName: firstName && firstName.value,\n LastName: lastName && lastName.value,\n CompanyName: companyName && companyName.value,\n Address: companyAddress && companyAddress.address && companyAddress.address,\n JobTitle: jobTitle && jobTitle.value,\n Department: department && department.value,\n CompanySize: (companySize && Number.parseInt(companySize.value, 10)) || 0,\n Comments: comments && comments.value\n };\n\n // Create business partner request\n createProspectAsync({ callerContext: context.actionContext }, newPartner).catch(() => {\n this.setState({\n hasSubmitErrors: true,\n isReady: false\n });\n });\n };\n\n private readonly _onCancel = () => {\n // Reset values of the form\n const cleanForm = this.state.formItems;\n cleanForm.forEach(input => {\n input.value = '';\n });\n\n // Set reset flag so address input will get reset on next renderInputSection() call\n this.needsToReset = true;\n\n this.setState({\n isReady: false,\n formItems: cleanForm,\n addressHasErrors: true,\n showAddressErrors: false,\n hasSubmitErrors: false\n });\n };\n\n private readonly _getItem = (id: string, isAddress: boolean = false) => {\n if (isAddress) {\n return this.state.formItems.find(item => {\n return item.id === id && item.address;\n });\n }\n return this.state.formItems.find(item => {\n return item.id === id && item.value !== '';\n });\n };\n}\n\nexport default BusinessSignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\n\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\n // Hide label and error message if rendering address section\n return (\n \n {!isAddressInput && label}\n {!isAddressInput && errorMessage}\n {input}\n \n );\n};\n\nconst BusinesSignUpView: React.FC = props => {\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\n\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\n\n return (\n \n \n {heading}\n \n {items &&\n items.map((item: IBusinessSignUpItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n \n \n );\n};\n\nexport default BusinesSignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\nimport { KeyCodes } from '@msdyn365-commerce-modules/utilities';\n\nexport interface ISearchBarProps {\n className: string;\n searchPlaceholderLabel: string;\n onSearch(searchText: string): void;\n}\n\nexport interface ISearchBarState {\n searchText: string;\n}\n\nexport class SearchBar extends React.Component {\n constructor(props: ISearchBarProps) {\n super(props);\n this.state = {\n searchText: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, searchPlaceholderLabel } = this.props;\n return (\n
\n \n
\n );\n }\n\n private readonly onSearchTextChange = (ev: React.ChangeEvent): void => {\n this.setState({\n searchText: ev.target.value\n });\n };\n\n private readonly onSearch = (): void => {\n this.props.onSearch(this.state.searchText);\n };\n\n private readonly handleKeyUp = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter) {\n this.onSearch();\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { CommerceException } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { moduleClassName } from '../business-partners';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { SearchBar } from './search-bar';\n\n/**\n * Props of DataGrid component.\n */\nexport interface IDataGridProps extends IComponentProps {\n className: string;\n pageSize?: number;\n searchPlaceholderLabel: string;\n defaultSorting?: ISortingInfo;\n resources: IBusinessPartnersResources;\n columns: IDataGridColumn[];\n loadData(): Promise;\n}\n\n/**\n * State of DataGrid component.\n */\nexport interface IDataGridState {\n data: Tdata[];\n paging: IPagingInfo;\n filter: IFilterInfo;\n sorting?: ISortingInfo;\n isLoading: boolean;\n errorMessage: string;\n}\n\nexport interface IPagingInfo {\n index: number;\n}\n\nexport interface IFilterInfo {\n searchText: string;\n}\n\nexport interface ISortingInfo {\n fieldName: string;\n ascending: boolean;\n}\n\n/**\n * Column definition of DataGrid component.\n */\nexport interface IDataGridColumn {\n /**\n * A unique key for identifying the column.\n */\n reactKey: string;\n\n /**\n * Name to render on the column header.\n */\n name: string;\n\n /**\n * Class name added to table cell.\n */\n className?: string;\n\n /**\n * The field to pull the text value from for the column.Can be unset if a custom `onRender` method is provided.\n */\n fieldName?: string;\n\n /**\n * Whether the user can search this column by text.\n */\n isSearchable?: boolean;\n\n /**\n * Custom renderer for cell content, instead of the default text rendering.\n */\n onRender?(item: Tdata): JSX.Element;\n\n /**\n * Event when the table cell is clicked.\n */\n onClick?(item: Tdata): void;\n}\n\nconst defaultPageSize = 10;\n\n/**\n * DataGrid component encapsulates common table functionalities.\n */\nexport class DataGrid extends React.Component, IDataGridState> {\n constructor(props: IDataGridProps) {\n super(props);\n this.state = {\n data: [],\n sorting: props.defaultSorting,\n paging: { index: 0 },\n filter: { searchText: '' },\n isLoading: true,\n errorMessage: ''\n };\n }\n\n public componentDidMount(): void {\n this.loadDataInternal();\n }\n\n public shouldComponentUpdate(nextProps: Readonly>, nextState: Readonly>): boolean {\n return (\n this.props.id !== nextProps.id ||\n this.props.columns !== nextProps.columns ||\n this.state.data !== nextState.data ||\n this.state.paging !== nextState.paging ||\n this.state.filter !== nextState.filter ||\n this.state.isLoading !== nextState.isLoading ||\n this.state.errorMessage !== nextState.errorMessage\n );\n }\n\n public render(): JSX.Element | null {\n const data = this.getDataToDisplay();\n const hasMore = this.hasMore();\n if (this.state.errorMessage) {\n return {this.state.errorMessage};\n }\n if (this.state.isLoading) {\n return {this.props.resources.loadingLabel};\n }\n if (!ArrayExtensions.hasElements(data)) {\n return (\n <>\n \n

{this.props.resources.noDataMessage}

\n \n );\n }\n return (\n <>\n \n \n {this.renderGridHeader()}\n {data.map((item, index) => this.renderGridRow(item, index))}\n
\n {hasMore && (\n
\n \n
\n )}\n \n );\n }\n\n /**\n * Renders the TH header in the table.\n * @returns - Header react node.\n */\n private readonly renderGridHeader = () => {\n const className = `${this.props.className}__header`;\n const rowClassName = `${className}__row`;\n return (\n \n \n {this.props.columns.map(column => (\n \n {column.name}\n \n ))}\n \n \n );\n };\n\n /**\n * Renders table row.\n * @param item - Data item for this row.\n * @param index - Index of the row.\n * @returns - Row react node.\n */\n private readonly renderGridRow = (item: Tdata, index: number) => {\n const rowClassName = `${this.props.className}__row`;\n return (\n \n {this.props.columns.map(column => {\n if (column.fieldName) {\n return (\n column.onClick?.(item)}>\n {((item as unknown) as { [key: string]: string })[column.fieldName]}\n \n );\n }\n return {column.onRender?.(item)};\n })}\n \n );\n };\n\n /**\n * Load data for the table.\n * @returns Promise.\n */\n private readonly loadDataInternal = async () => {\n if (!this.props.context.actionContext.requestContext.user.isAuthenticated) {\n this.setState({\n isLoading: false\n });\n return;\n }\n try {\n const result = await this.props.loadData();\n this.setState({\n isLoading: false,\n data: result\n });\n } catch (e) {\n this.setState({\n isLoading: false,\n errorMessage: (e as { data: CommerceException })?.data?.LocalizedMessage || this.props.resources.genericErrorMessage\n });\n }\n };\n\n private readonly onSearch = (searchText: string): void => {\n this.setState({\n paging: { index: 0 },\n filter: { searchText }\n });\n };\n\n private readonly loadMore = (): void => {\n this.setState({\n paging: { index: this.state.paging.index + 1 }\n });\n };\n\n private readonly sortData = (): Tdata[] => {\n const sorting = this.state.sorting;\n if (!sorting) {\n return this.state.data;\n }\n const { fieldName, ascending } = sorting;\n return this.state.data.sort((item1: Tdata, item2: Tdata) => {\n let value1 = ((item1 as unknown) as { [key: string]: string })[fieldName];\n let value2 = ((item2 as unknown) as { [key: string]: string })[fieldName];\n if (typeof value1 === 'string' && typeof value2 === 'string') {\n value1 = value1.toLowerCase();\n value2 = value2.toLowerCase();\n }\n const compareResult = value1 > value2 ? 1 : value1 < value2 ? -1 : 0;\n return ascending ? compareResult : compareResult * -1;\n });\n };\n\n private readonly filterData = (): Tdata[] => {\n const column = this.props.columns.find(c => c.isSearchable);\n const searchText = this.state.filter.searchText;\n return this.sortData().filter(item => {\n if (!column?.fieldName || !searchText) {\n return true;\n }\n const columnValue = ((item as unknown) as { [key: string]: string })[column.fieldName];\n return columnValue && columnValue.toLowerCase().indexOf(searchText.trim().toLowerCase()) >= 0;\n });\n };\n\n private readonly getDataToDisplay = (): Tdata[] => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.slice(0, itemsCount);\n };\n\n private readonly hasMore = (): boolean => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.length > itemsCount;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { BusinessPartner, BusinessPartnerUser, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * View model of business partner user, used to display.\n */\nexport interface IBusinessPartnerUserViewModel extends BusinessPartnerUser {\n name: string;\n spendingLimitStr: string;\n}\n\n/**\n * Props of BusinessPartnerUsersTable.\n */\nexport interface IBusinessPartnerUsersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n businessPartner: BusinessPartner;\n resources: IBusinessPartnersResources;\n onSelect(businessPartnerUser: BusinessPartnerUser): void;\n}\n\n/**\n * BusinessPartnerUsersTable component.\n */\nexport class BusinessPartnerUsersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessUserTableNameHeadingText,\n fieldName: 'name',\n isSearchable: true,\n onClick: this.props.onSelect\n },\n {\n reactKey: 'email',\n name: this.props.resources.businessUserTableEmailHeadingText,\n fieldName: 'Email',\n onClick: this.props.onSelect\n },\n {\n reactKey: 'spendingLimit',\n name: this.props.resources.businessUserTableSpendingLimitHeadingText,\n className: `${this.props.className}__row__column-with-number`,\n fieldName: 'spendingLimitStr',\n onClick: this.props.onSelect\n }\n ];\n };\n\n /**\n * Call retail proxy to get business partner users.\n * @returns - Business partner users view model.\n */\n private readonly getBusinessPartnerUsers = async (): Promise => {\n const businessPartners = await BusinessPartnersDataActions.getUsersAsync(\n {\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n },\n this.props.businessPartner.BusinessPartnerId\n );\n return businessPartners\n .filter(user => user.StatusValue === 1)\n .map(user => ({\n ...user,\n name: `${user.FirstName} ${user.LastName}`,\n spendingLimitStr: !ObjectExtensions.isNullOrUndefined(user.SpendingLimit)\n ? this.props.context.cultureFormatter.formatCurrency(user.SpendingLimit.toString())\n : ''\n }));\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport React from 'react';\n\nimport { BusinessPartner, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * Props of IBusinessPartnersTable.\n */\nexport interface IBusinessPartnersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n resources: IBusinessPartnersResources;\n onSelect(businessPartner: BusinessPartner): void;\n}\n\n/**\n * BusinessPartnersTable component.\n */\nexport class BusinessPartnersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessPartnerName,\n fieldName: 'Name',\n isSearchable: true,\n onClick: this.props.onSelect\n }\n ];\n };\n\n /**\n * Call retail proxy to get business partners.\n * @returns - Business partners.\n */\n private readonly getBusinessPartners = async () => {\n const businessPartners = await BusinessPartnersDataActions.getManagedBusinessPartnersAsync({\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n });\n return businessPartners;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Alert, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { BusinessPartner, BusinessPartnerUser, CatalogsDataActions, CommerceException } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersData } from './business-partners.data';\nimport { IBusinessPartnersProps } from './business-partners.props.autogenerated';\nimport { BusinessPartnerUsersTable } from './components/business-partner-users-table';\nimport { BusinessPartnersTable } from './components/business-partners-table';\n\n/**\n * Props for the module view.\n */\nexport interface IBusinessPartnersViewProps extends IBusinessPartnersProps {\n businessPartnersProps: IModuleProps;\n businessPartnersHeading?: React.ReactNode;\n businessPartnersTable?: React.ReactNode;\n businessPartnerUsersTable?: React.ReactNode;\n backToBusinessPartnersLink?: React.ReactNode;\n catalogLoadingIndicator?: React.ReactNode;\n catalogLoadingErrorMessage?: React.ReactNode;\n selectedBusinessPartnerUser?: BusinessPartnerUser;\n cookieConsentNotGivenErrorMessage?: React.ReactNode;\n}\n\n/**\n * State of BusinessPartners component.\n */\nexport interface IBusinessPartnersState {\n selectedBusinessPartner?: BusinessPartner;\n selectedBusinessPartnerUser?: BusinessPartnerUser;\n isLoadingCatalog?: boolean;\n loadCatalogErrorMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partners';\n\n/**\n * BusinessPartners component.\n */\nclass BusinessPartners extends React.Component, IBusinessPartnersState> {\n constructor(props: IBusinessPartnersProps) {\n super(props);\n this.state = {};\n }\n\n public componentDidMount() {\n this.props.context.request.cookies.removeAccountSelectionCookie();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessPartnersProps, nextState: IBusinessPartnersState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, pageSize, businessPartnersHeading }\n } = this.props;\n const viewProps: IBusinessPartnersViewProps = {\n ...this.props,\n selectedBusinessPartnerUser: this.state.selectedBusinessPartnerUser,\n businessPartnersProps: {\n moduleProps: this.props,\n className: classname(moduleClassName, className)\n },\n businessPartnersHeading: businessPartnersHeading && businessPartnersHeading.text && (\n \n ),\n businessPartnersTable: !this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n businessPartnerUsersTable: this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n backToBusinessPartnersLink: this.state.selectedBusinessPartner ? (\n {\n this.onSelectBusinessPartner();\n }}\n >\n {this.props.resources.backToBusinessPartnersLink}\n \n ) : (\n undefined\n ),\n catalogLoadingIndicator: this.state.isLoadingCatalog ? (\n {this.props.resources.loadingLabel}\n ) : (\n undefined\n ),\n catalogLoadingErrorMessage: this.state.loadCatalogErrorMessage ? (\n {this.state.loadCatalogErrorMessage}\n ) : (\n undefined\n ),\n cookieConsentNotGivenErrorMessage: !this.props.context.request.cookies.isConsentGiven() ? (\n {this.props.resources.cookieConsentRequiredMessage}\n ) : (\n undefined\n )\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Event handler of business partner selection.\n * @param businessPartner - Selected business partner.\n */\n private readonly onSelectBusinessPartner = (businessPartner?: BusinessPartner) => {\n this.setState({\n selectedBusinessPartner: businessPartner\n });\n };\n\n /**\n * Event handler of business partner user selection.\n * @param businessPartnerUser - Selected business partner user.\n */\n private readonly onSelectBusinessPartnerUser = async (businessPartnerUser: BusinessPartnerUser) => {\n if (businessPartnerUser.AccountNumber) {\n this.setState({\n selectedBusinessPartnerUser: businessPartnerUser\n });\n\n this.props.context.request.cookies.setAccountSelectionCookie(true, businessPartnerUser.AccountNumber);\n const catalogId = await this.getCustomerDefaultCatalogId();\n const homeUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext);\n if (homeUrl && Msdyn365.msdyn365Commerce.isBrowser && catalogId !== undefined) {\n const fullUrl = new URL(homeUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n window.location.href = fullUrl.href;\n } else {\n this.props.context.request.cookies.removeAccountSelectionCookie();\n }\n }\n };\n\n /**\n * Get the first catalog ID of the selected customer. Customer account number is passed in CAN header.\n */\n private readonly getCustomerDefaultCatalogId = async (): Promise => {\n this.setState({\n isLoadingCatalog: true\n });\n\n const requestContext = this.props.context.request;\n const channelId = requestContext.apiSettings.channelId ? Number(requestContext.apiSettings.channelId) : 0;\n\n try {\n const productCatalogs = await CatalogsDataActions.getCatalogsAsync(\n { callerContext: this.props.context.actionContext },\n channelId,\n true\n );\n this.setState({\n isLoadingCatalog: false\n });\n return productCatalogs[0]?.RecordId || 0;\n } catch (e) {\n this.setState({\n isLoadingCatalog: false,\n loadCatalogErrorMessage:\n (e as { data: CommerceException })?.data?.LocalizedMessage || this.props.resources.genericErrorMessage\n });\n return undefined;\n }\n };\n}\n\nexport default BusinessPartners;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnersViewProps } from './business-partners';\n\n/**\n * View layout of business partner module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n if (props.selectedBusinessPartnerUser) {\n return (\n \n {props.businessPartnersHeading}\n {props.catalogLoadingIndicator}\n {props.catalogLoadingErrorMessage}\n \n );\n }\n\n if (props.cookieConsentNotGivenErrorMessage) {\n return (\n \n {props.businessPartnersHeading}\n {props.cookieConsentNotGivenErrorMessage}\n \n );\n }\n\n return (\n \n {props.backToBusinessPartnersLink}\n {props.businessPartnersHeading}\n {props.businessPartnersTable}\n {props.businessPartnerUsersTable}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

\n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n if (!this.props.context.request.params.isEditor) {\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../tile-list-item.props.autogenerated';\n\n/**\n * Tile List links.\n */\nexport interface ITileListLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ITileListLinks component.\n * @extends {React.PureComponent}\n */\nexport class TileListLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * ITileListLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-tile-list__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default TileListLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { TileListLinks } from './components';\nimport { IHeadingData, ITileListItemProps } from './tile-list-item.props.autogenerated';\n\n/**\n * Tile-list-item view props.\n */\nexport interface ITileListItemViewProps extends ITileListItemProps<{}> {\n heading?: React.ReactNode;\n paragraph?: React.ReactNode;\n links?: React.ReactNode;\n backgroundImage?: React.ReactNode;\n thumbnailImage?: React.ReactNode;\n tileListItem: IModuleProps;\n tileListContainer: INodeProps;\n tileListImageContainer: INodeProps;\n tileListThumbnailImageContainer: INodeProps;\n tileListHeadingContainer: INodeProps;\n}\n\n/**\n *\n * TileListItem component.\n * @extends {React.PureComponent>}\n */\nexport class TileListItem extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ITileListItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { heading, paragraph, backgroundImage, thumbnailImage, redirectionUrl, links } = this.props.config;\n const tileListLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const tileListLinkContainer = {\n tag: 'a' as NodeTag,\n className: 'ms-tile-list-container',\n role: 'link',\n href: redirectionUrl?.linkUrl.destinationUrl,\n 'aria-label': redirectionUrl?.ariaLabel\n };\n\n const tileListButtonContainer = {\n tag: 'button' as NodeTag,\n className: 'ms-tile-list-container'\n };\n const viewProps: ITileListItemViewProps = {\n ...this.props,\n heading: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n backgroundImage: this._renderBackgroundImage(backgroundImage),\n thumbnailImage: this._renderThumbnailImage(thumbnailImage),\n links: tileListLinks,\n tileListItem: {\n moduleProps: this.props,\n className: ''\n },\n tileListContainer: redirectionUrl ? tileListLinkContainer : tileListButtonContainer,\n tileListImageContainer: {\n className: 'ms-tile-list__image'\n },\n tileListThumbnailImageContainer: {\n className: 'ms-tile-list__thumbnail_image',\n 'aria-hidden': 'true'\n },\n tileListHeadingContainer: {\n className: 'ms-tile-list__heading'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderBackgroundImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n sm: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n md: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n lg: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n xl: { q: 'w=315&h=412&m=6', w: 315, h: 412 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n\n return (\n \n );\n }\n\n private _renderThumbnailImage(\n item?: Msdyn365.IImageData,\n itemImageSettings?: Msdyn365.IImageSettings,\n isAriaHiddenAttribute?: boolean\n ): React.ReactNode | null {\n if (!item) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(item.src)) {\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default TileListItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITileListItemViewProps } from './tile-list-item';\n\n/**\n *\n * ITileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nconst renderTileListItemContent = (props: ITileListItemViewProps): JSX.Element => {\n const {\n heading,\n paragraph,\n backgroundImage,\n links,\n thumbnailImage,\n tileListContainer,\n tileListImageContainer,\n tileListThumbnailImageContainer,\n tileListHeadingContainer\n } = props;\n\n return (\n \n {backgroundImage}\n \n {heading}\n {paragraph}\n {links}\n \n {thumbnailImage}\n \n );\n};\n\n/**\n *\n * TileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nexport const TileListItemViewComponent: React.FC = props => {\n const { tileListItem } = props;\n return {renderTileListItemContent(props)};\n};\n\nexport default TileListItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n salesAgreementPricePrompt?: string;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const {\n cartLabel,\n cartQtyLabel,\n data: { cart }\n } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n
\n
\n {qtyLabel}\n
\n
\n );\n});\n\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n // @ts-expect-error -- Compatible issue with the component override.\n ICartIconComponent\n>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\n\nexport default CartIconComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n
\n
\n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {'Code '}\n {coupon.Code}\n {'Applied '}\n
\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
\n
\n
\n
\n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
\n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n
\n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
\n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
\n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
\n
\n
\n
\n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
\n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
\n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
\n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["_ref","description","React","className","_mapEditableLinks","linkdata","telemetryContent","length","editableLinks","payLoad","getPayloadObject","forEach","link","index","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","push","links","onTextChange","requestContext","Msdyn365","editProps","AccountOrderHistoryTile","constructor","props","super","getOrderHistoryCount","async","context","this","actionContext","user","isAuthenticated","orderHistorys","getRequestOrderHistoryB2CAsync","callerContext","queryResultSettings","setState","orderHistoryCount","RequestOrder","handleHeadingChange","event","config","heading","text","target","value","handleLinkTextChange","linkIndex","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","state","componentDidMount","render","resources","accountOrderHistoryTileDescription","replace","viewProps","_objectSpread","AccountWishlistTile","moduleProps","classnames","tag","onEdit","LinksComponent","Object","assign","DescriptionComponent","renderView","Module","AccountSavedDesignTile","getSavedDesignCount","savedDesigns","getSavedDesignsAsync","savedDesignCount","Result","accountSavedDesignTileDescription","format","Aaa_contactUsForm","setFromField","field","onSubmit","payload","BoutiqueName","boutiqueName","BoutiqueLocation","boutiqueLocation","FirstName","firstName","LastName","lastName","Email","email","Phone","phone","Description","Mobile","ReasonForContact","contactusAsync","id","htmlFor","type","placeholder","onChange","e","name","Button","onClick","disabled","Subscribe","handleTextChange","handleParagraphChange","paragraph","handleChange","inputText","console","log","isEmailValid","test","_emailAddressInputRef","_buttonSubscribe","bind","_heading$tag","subscribeParagraph","subscribeHeading","handleText","subscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","autoComplete","emailInput","ref","subscribeFormEmailAriaLabel","subscribeEmailPlaceholderText","submitButton","subscribeFormSubmitAriaLabel","title","subscribeButtonLabel","submitButtonLabelText","previousState","emailAddress","current","SubscribeDataInput","subscribeAction","then","result","catch","error","exception","debug","preventDefault","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","Node","PopUp","_isActionTaken","cookieName","popUpCookie","cookies","get","undefined","_isCookieAvailable","cookie","_onDismiss","popUpState","isOpen","update","setPopUpState","isCookieEnabled","shouldPopUpOnLoad","app","popUpCookieName","isBackDropStatic","isDialogOpen","set","onDismiss","Modal","autoFocus","backdrop","fade","popUpAriaLabel","onClosed","horizontalPosition","verticalPosition","toggle","headerContainerProps","ModalHeader","headerProps","bodyContainerProps","ModalBody","bodyContent","content","redirectToSignIn","signInUrl","window","location","href","__decorate","observer","popUpView","SummaryForm","formProps","label","paymentAmount","addPaymentButton","appliedLine","bottomBorder","EditForm","_ref2","inputLabel","inputAmount","customerName","customerAccountNumber","customerSince","accountCredit","alert","accountDetails","checkoutCustomerAccount","summaryView","editView","moduleState","isReady","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","_ref3","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","map","key","data","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","loading","orderInfomation","orderSummary","payment","help","SignUpButton","SignUpError","message","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","pattern","isRequired","fieldReference","InputType","TextArea","SignUpLabel","forId","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","element","maxChars","customClass","baseSignUpItem","wrapper","errorMessage","Address","isAddressInput","input","updateForm","hasError","resetAddress","splice","BusinessSignUp","_this","BusinessSignUpDefaultInputs","Text","firstNameLabel","lastNameLabel","emailAddressLabel","EmailRegex","defaultRegex","source","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","moduleClassName","needsToReset","_onInputChange","newForm","formItems","item","_isFormReady","hasSubmitErrors","_onAddressChange","currentAddress","addressItem","find","addressHasErrors","showAddressErrors","currentInput","match","_onSubmit","_getItem","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","newPartner","CompanySize","Comments","createProspectAsync","_onCancel","cleanForm","isAddress","arguments","_addedReference","_this$formChildRefere","focus","shouldComponentUpdate","nextProps","nextState","businessSignUp","ContainerWrapper","businessSignUpForm","_renderForm","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","getUrlSync","form","FormWrapper","items","buttons","disclaimer","RichTextComponent","newFormFields","BusinessSignUpItem","button","SearchBar","onSearchTextChange","ev","searchText","onSearch","handleKeyUp","keyCode","KeyCodes","Enter","searchPlaceholderLabel","onKeyUp","DataGrid","renderGridHeader","rowClassName","columns","column","reactKey","renderGridRow","_column$onRender","fieldName","_column$onClick","call","onRender","loadDataInternal","loadData","isLoading","_e$data","LocalizedMessage","genericErrorMessage","paging","filter","loadMore","sortData","sorting","ascending","sort","item1","item2","value1","value2","toLowerCase","compareResult","filterData","c","isSearchable","columnValue","indexOf","trim","getDataToDisplay","itemsCount","pageSize","slice","hasMore","defaultSorting","Alert","color","loadingLabel","ArrayExtensions","hasElements","businessPartnerLoadMore","noDataMessage","BusinessPartnerUsersTable","getColumns","businessUserTableNameHeadingText","onSelect","businessUserTableEmailHeadingText","businessUserTableSpendingLimitHeadingText","getBusinessPartnerUsers","BusinessPartnersDataActions","bypassCache","businessPartner","BusinessPartnerId","StatusValue","spendingLimitStr","ObjectExtensions","isNullOrUndefined","SpendingLimit","cultureFormatter","formatCurrency","toString","businessPartnerSearchCustomer","BusinessPartnersTable","businessPartnerName","getBusinessPartners","businessPartnerSearchCompany","BusinessPartners","onSelectBusinessPartner","selectedBusinessPartner","onSelectBusinessPartnerUser","businessPartnerUser","AccountNumber","selectedBusinessPartnerUser","setAccountSelectionCookie","catalogId","getCustomerDefaultCatalogId","homeUrl","isBrowser","fullUrl","URL","searchParams","removeAccountSelectionCookie","isLoadingCatalog","channelId","apiSettings","_productCatalogs$","productCatalogs","CatalogsDataActions","RecordId","loadCatalogErrorMessage","businessPartnersHeading","businessPartnersProps","classname","businessPartnersTable","businessPartnerUsersTable","backToBusinessPartnersLink","catalogLoadingIndicator","catalogLoadingErrorMessage","cookieConsentNotGivenErrorMessage","isConsentGiven","cookieConsentRequiredMessage","renderCustomerName","accountInformation","customer","Name","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","search","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","src","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","MsDyn365","document","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","isDrawerOpen","colProps","toggleButtonProps","onToggle","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","onTelemetryClick","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","isMobile","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","query","recommendation","BackTopFooter","backtoTopText","destination","BackToTop","Iframe","iframeRef","srcURL","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","targetURL","height","iframeAriaLabel","IFrameView","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","locale","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","observable","computed","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","componentDidUpdate","_this$menuItemRef$cur","children","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","isSelected","itemIndex","contentID","getContentID","tabId","activeContentIDResult","activeTabState","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","tabSlots","tabItemTitle","_renderTabItemContent","tabItemType","TabContent","tabItemContent","TabHeader","Tab","tabIndexQuery","_refHandler","activeLink","_onClick","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","activeTab","queryTabIndex","arr","split","_getTabHeader","_getTabContent","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","params","isEditor","dataActionTabId","selected","onKeyDown","paramName","paramValue","url","requestUrl","URLSearchParams","decodeURIComponent","TileListLinks","TileListItem","_telemetryContent","_this$props$config$li","backgroundImage","thumbnailImage","redirectionUrl","tileListLinks","tileListLinkContainer","_createParagraph","_renderBackgroundImage","_renderThumbnailImage","tileListItem","tileListContainer","tileListImageContainer","tileListThumbnailImageContainer","tileListHeadingContainer","StringExtensions","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$ba","verifiedImageSettings","moduleType","typeName","imagePropertyName","itemImageSettings","_this$props$config$th","layout","msdyn365__moduleLayout","TileListItemViewComponent","renderTileListItemContent","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","totalItemsInCart","qtyLabel","style","visibility","CartIconComponent","msdyn365Commerce","createComponentOverride","component","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","promoPlaceholderText","promoCodeApplyButtonText","_removePromotion","_event$currentTarget$","code","currentTarget","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","Code","TelemetryConstant","ApplyPromoCode","promoCodeHeadingText","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","isNavOpen","_bindDesktopCategoryClick","menuId","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_this$menuNode$curren2","_customUpdateViewport","variant","VariantType","Browser","customResizeThrottledEventHandler","hamburgerAriaLabel","entries","parentMenuId","menu","one","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","timeout","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","renderProductDescription","product","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","fallBackSrc","cropFocalRegion","renderProductImage","ItemId","signInMessage","signInButton","reviewModal","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","cancelButton","createReviewModal"],"sourceRoot":""}