{"version":3,"file":"static/js/8.b0fd12a41d79c368b6c2.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/b2b-requests-status.view.tsx?0173","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/media-gallery.view.tsx?3130","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/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/promocode.component.tsx?c06b","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 { getUrlSync } from '@msdyn365-commerce/core';\r\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\r\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\r\n\r\n/**\r\n * B2b Request status View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\nconst B2bRequestsStatusView: React.FC> = props => {\r\n const { b2bRequestsStatus, heading, table } = props;\r\n const { continueShoppingButtonTitle } = props.resources;\r\n const initialCount = 0;\r\n\r\n if (props.data.operationRequests.result?.length === initialCount) {\r\n return (\r\n \r\n {heading}\r\n \r\n
\r\n

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

\r\n

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

\r\n \r\n \r\n {continueShoppingButtonTitle}\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n return (\r\n \r\n {heading}\r\n {table}\r\n \r\n );\r\n};\r\n\r\nexport default B2bRequestsStatusView;\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 { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\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. 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 } 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 { 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","_props$data$operation","b2bRequestsStatus","table","continueShoppingButtonTitle","data","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","imageSettings","_props$config$thumbna2","tabIndex","key","Image","src","gridSettings","thumbnailImageSettings","loadFailureBehavior","defaultThumbnailImageSettings","viewports","xs","q","w","h","xl","lazyload","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","items","map","item","altText","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","image","imageId","modifiedActiveIndex","_props$config$thumbna","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","keyCode","KeyCodes","Enter","onKeyDown","fullScreenTitleText","CarouselProps","MediaGallery","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","_ref3","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","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","alert","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","label","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","isReady","_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","form","FormWrapper","buttons","disclaimer","RichTextComponent","newFormFields","BusinessSignUpItem","button","SearchBar","onSearchTextChange","ev","searchText","onSearch","handleKeyUp","searchPlaceholderLabel","onKeyUp","DataGrid","renderGridHeader","rowClassName","columns","column","reactKey","renderGridRow","_column$onRender","fieldName","_column$onClick","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","promotionalContent","imageSrc","promotionalItemImageSettings","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","sm","md","lg","_categoryImage$imageS","ImageData","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","MsDyn365","document","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","_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","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","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","paramName","paramValue","url","requestUrl","URLSearchParams","decodeURIComponent","TileListLinks","TileListItem","_telemetryContent","_this$props$config$li","backgroundImage","thumbnailImage","redirectionUrl","tileListLinks","tileListLinkContainer","_createHeading","_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","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","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","Code","TelemetryConstant","ApplyPromoCode","promoCodeHeadingText","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","renderProductImage","ItemId","signInMessage","signInButton","reviewModal","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","cancelButton","createReviewModal"],"sourceRoot":""}