{"version":3,"file":"static/js/13.2e4a089121b0e7b11672.chunk.js","mappings":"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","sources":["webpack://nile.commerce.online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","webpack://nile.commerce.online/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://nile.commerce.online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://nile.commerce.online/./src/modules/product-specification/product-specification.tsx?6583","webpack://nile.commerce.online/./src/modules/product-specification/product-specification.view.tsx?7490","webpack://nile.commerce.online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://nile.commerce.online/./src/modules/tab/tab.view.tsx?a99d","webpack://nile.commerce.online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://nile.commerce.online/./src/modules/business-sign-up/components/sign-up-button.tsx?e1d9","webpack://nile.commerce.online/./src/modules/business-sign-up/components/sign-up-error.tsx?7f8a","webpack://nile.commerce.online/./src/modules/business-sign-up/components/sign-up-input.tsx?5bbe","webpack://nile.commerce.online/./src/modules/business-sign-up/components/sign-up-label.tsx?4988","webpack://nile.commerce.online/./src/modules/business-sign-up/components/sign-up-radio-button.tsx?f8c1","webpack://nile.commerce.online/./src/modules/business-sign-up/business-sign-up.tsx?13a2","webpack://nile.commerce.online/./src/modules/subscribe/subscribe.tsx?9fea","webpack://nile.commerce.online/./src/modules/tab/tab.tsx?9ac6","webpack://nile.commerce.online/./src/modules/tile-list-item/components/links.tsx?c969","webpack://nile.commerce.online/./src/modules/tile-list-item/tile-list-item.tsx?114a","webpack://nile.commerce.online/./src/modules/pdp-specs/components/pdp-specs-table-stucture.tsx?e5be","webpack://nile.commerce.online/./src/modules/pdp-specs/pdp-specs.props.autogenerated.ts?3e5b","webpack://nile.commerce.online/./src/modules/pdp-specs/pdp-specs.tsx?9c59","webpack://nile.commerce.online/./src/modules/pdp-specs/pdp-specs.view.tsx?534f","webpack://nile.commerce.online/./src/themes/nile-theme/views/order-details.view.tsx?7b47","webpack://nile.commerce.online/./src/modules/business-sign-up/business-sign-up.view.tsx?e2f8","webpack://nile.commerce.online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://nile.commerce.online/./src/modules/subscribe/subscribe.view.tsx?19c8","webpack://nile.commerce.online/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://nile.commerce.online/./src/modules/tile-list-item/tile-list-item.view.tsx?19a8","webpack://nile.commerce.online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://nile.commerce.online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/carticon.component.tsx?3c7c","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://nile.commerce.online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://nile.commerce.online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { 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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): 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 let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\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 { 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 { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 * as React from 'react';\n\nexport interface IBusinessSignUpRadioButtonProps {\n id: string;\n isRequired: boolean;\n options: IBusinessSignUpRadioButtonOptionProps[];\n}\n\nexport interface IBusinessSignUpRadioButtonOptionProps {\n id: string;\n name: string;\n value: string;\n label: string;\n className: string;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const BusinessSignUpRadioButtonOption: React.FC = props => {\n const { id, name, value, label, className, onChange } = props;\n return (\n
\n \n \n
\n );\n};\n\nexport default BusinessSignUpRadioButtonOption;\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';\nimport { IBusinessSignUpRadioButtonOptionProps, BusinessSignUpRadioButtonOption } from './components/sign-up-radio-button';\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 radioButtonOptions?: IBusinessSignUpRadioButtonOptionProps[];\n radioButtonGroupClass?: string;\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 RadioButton = 'radiobutton'\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 ProspectType = 'ProspectType'\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 {\n id,\n type,\n label,\n maxChars,\n isRequired,\n pattern,\n customClass,\n value,\n fieldReference,\n radioButtonOptions,\n radioButtonGroupClass\n } = 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 if (type === InputType.RadioButton) {\n baseSignUpItem.input = (\n
\n {radioButtonOptions &&\n radioButtonOptions.map((element, index) => {\n return ;\n })}\n
\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 private readonly moduleClassName: string = 'ms-business-sign-up';\n private readonly prospectRadioButtonName: string = 'business-sign-up-radio-button';\n\n // Used as default data\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public BusinessSignUpDefaultInputs: IFormItem[] = [\n {\n id: InputID.ProspectType,\n type: InputType.RadioButton,\n label: this.props.resources.prospectTypeLabel,\n value: '',\n isRequired: true,\n customClass: 'width-100',\n radioButtonGroupClass: 'radio-option-container',\n radioButtonOptions: [\n {\n id: `${InputID.ProspectType}-buyer`,\n name: this.prospectRadioButtonName,\n value: '1', // Buyer\n label: this.props.resources.prospectTypeBuyerLabel,\n className: `${this.moduleClassName}__form-item-radio-button-option`,\n onChange: this._onInputChange.bind(this)\n },\n {\n id: `${InputID.ProspectType}-seller`,\n name: this.prospectRadioButtonName,\n value: '2', // Seller\n className: `${this.moduleClassName}__form-item-radio-button-option`,\n label: this.props.resources.prospectTypeSellerLabel,\n onChange: this._onInputChange.bind(this)\n }\n ]\n },\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 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\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.bind(this),\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 _onInputChange(event: React.ChangeEvent): void {\n const newForm = this.state.formItems;\n newForm.forEach(item => {\n if (item.type === InputType.RadioButton && event.target.name === this.prospectRadioButtonName) {\n item.value = event.target.value;\n } else 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 { config, 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 const prospectType = this._getItem(InputID.ProspectType);\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 ProspectTypeValue: (prospectType && Number.parseInt(prospectType.value, 10)) || 0\n };\n\n this.setState({\n isReady: false\n });\n\n // Create business partner request\n createProspectAsync({ callerContext: context.actionContext }, newPartner)\n .then(() => {\n const successPageURL =\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\n getUrlSync('home', this.props.context.actionContext) ||\n '';\n window.location.href = successPageURL;\n })\n .catch(() => {\n this.setState({\n hasSubmitErrors: true\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n}\n\nexport default Subscribe;\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 * 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 target: redirectionUrl?.openInNewTab ? '_blank' : undefined\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","/*--------------------------------------------------------------\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 { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Product specification table row.\r\n */\r\nexport interface IProductSpecificationTableRow {\r\n productName?: string;\r\n cellData?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Product specification table row component.\r\n * @param props - For product specification table row.\r\n * @param props.productName - Product name.\r\n * @param props.cellData - Cell data.\r\n * @param props.className - Class name.\r\n * @returns - Returns JSX element.\r\n */\r\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\r\n \r\n \r\n \r\n \r\n {cellData}\r\n \r\n);\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IPdpSpecs containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum displayStyle {\r\n accordion = 'accordion',\r\n table = 'table'\r\n}\r\n\r\nexport interface IPdpSpecsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n displayStyle?: displayStyle;\r\n className?: string;\r\n detailsAccordionText?: string;\r\n sustainAccordionText?: string;\r\n ecoMaterials?: IEcoMaterialTypeData[];\r\n}\r\n\r\nexport interface IPdpSpecsResources {\r\n trueValueText: string;\r\n falseValueText: string;\r\n articleLabel: string;\r\n sustainabilityHeadingLabel: string;\r\n detailsHeadingLabel: string;\r\n pdpspecsDescriptionLabel: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IPdpSpecsProps extends Msdyn365.IModule {\r\n resources: IPdpSpecsResources;\r\n config: IPdpSpecsConfig;\r\n slots: {\r\n materialBlocks: React.ReactNode[];\r\n };\r\n}\r\n\r\nexport interface IEcoMaterialTypeData {\r\n name?: string;\r\n header?: string;\r\n paragraph?: Msdyn365.RichText;\r\n linkId?: string;\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 { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Drawer, IModuleProps, INodeProps, Module, Modal, ModalBody, ModalHeader, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '@msdyn365-commerce-modules/product-specification';\r\nimport { ProductSpecificationTableRow } from './components/pdp-specs-table-stucture';\r\nimport { IPdpSpecsData } from './pdp-specs.data';\r\nimport { displayStyle, IPdpSpecsProps } from './pdp-specs.props.autogenerated';\r\n\r\n/**\r\n * Maintain Drawer State.\r\n */\r\nexport interface IProductSpecificationState {\r\n isDrawerOpen: boolean;\r\n drawerListId: number | undefined;\r\n openDrawerList: number[];\r\n attFresh: true | false;\r\n descFresh: true | false;\r\n isModalOpen?: boolean;\r\n modalHeader: string;\r\n modalBody: Msdyn365.RichText | undefined;\r\n}\r\n\r\n/**\r\n * Product specification view props.\r\n */\r\nexport interface IProductSpecificationViewProps extends IPdpSpecsProps<{}> {\r\n ProductSpecification: IModuleProps;\r\n ProductSpecificationTableProps: INodeProps;\r\n ProductSpecificationTableBodyProps: INodeProps;\r\n productSpecificationResult?: (JSX.Element | null)[];\r\n title?: React.ReactNode;\r\n isAccrodion?: boolean;\r\n handleText?(event: Msdyn365.ContentEditableEvent): void;\r\n modal: React.ReactNode;\r\n openModal: (option: string) => void;\r\n}\r\n\r\n/**\r\n * Check for display style either accordion or table.\r\n */\r\nexport interface IProductSpecificationExtentedProps extends IPdpSpecsProps {\r\n displayStyle?: displayStyle;\r\n}\r\n\r\n/**\r\n *\r\n * ProductSpecification component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass ProductSpecification extends React.Component {\r\n private readonly MODEL_SIZE_ATTRIBUTE_NAME = 'ModelSize';\r\n private readonly DESCRIPTION_ATTRIBUTE_NAME = 'Description';\r\n\r\n public constructor(props: IProductSpecificationExtentedProps) {\r\n super(props);\r\n this.state = {\r\n openDrawerList: [],\r\n drawerListId: undefined,\r\n isDrawerOpen: false,\r\n attFresh: true,\r\n descFresh: true,\r\n isModalOpen: false,\r\n modalHeader: '',\r\n modalBody: undefined\r\n };\r\n\r\n this.toggleModal = this.toggleModal.bind(this);\r\n this.openModal = this.openModal.bind(this);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const { context, data, telemetry } = this.props;\r\n reaction(\r\n () => (data.product.result ? data.product.result.RecordId : null),\r\n () => {\r\n if (context && data.product.result) {\r\n const actionInput = new AttributesForSelectedVariantInput(\r\n data.product.result.RecordId,\r\n\r\n +context.actionContext.requestContext.apiSettings.channelId,\r\n data.product.result\r\n );\r\n\r\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to update attributes for Product');\r\n telemetry.error(error.message);\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Toggles modal open state.\r\n */\r\n public readonly toggleModal = (): void => {\r\n this.setState({\r\n isModalOpen: !this.state.isModalOpen\r\n });\r\n };\r\n\r\n public openModal = (option: string): void => {\r\n const {\r\n config: { ecoMaterials }\r\n } = this.props;\r\n let header = '';\r\n let body: Msdyn365.RichText | undefined;\r\n if (ecoMaterials && ecoMaterials.length > 0) {\r\n ecoMaterials.map(ecoMat => {\r\n if (ecoMat.linkId === option) {\r\n header = ecoMat.header || '';\r\n body = ecoMat.paragraph;\r\n }\r\n });\r\n }\r\n if (header && body) {\r\n this.toggleModal();\r\n this.setState({\r\n modalHeader: header,\r\n modalBody: body\r\n });\r\n }\r\n };\r\n\r\n public renderModal = (): React.ReactNode => {\r\n const { isModalOpen, modalBody, modalHeader } = this.state;\r\n const headerContainer: INodeProps = {\r\n tag: ModalHeader,\r\n className: 'pdp-specs-modal__header',\r\n toggle: this.toggleModal\r\n };\r\n return (\r\n \r\n \r\n {modalHeader}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n let data: IPdpSpecsData;\r\n try {\r\n data = this.props.data;\r\n } catch (error) {\r\n this.props.telemetry.error(`Something went wrong ------${error}`);\r\n return null;\r\n }\r\n\r\n const { heading, className } = this.props.config;\r\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\r\n const viewProps = {\r\n ...this.props,\r\n handleText: this.handleHeadingChange,\r\n ProductSpecification: {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification', className)\r\n },\r\n ProductSpecificationTableProps: isAccrodion\r\n ? {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification__accordion', className)\r\n }\r\n : {\r\n className: classnames('ms-product-specification__table table-striped table-bordered'),\r\n tag: 'table'\r\n },\r\n isAccrodion,\r\n ProductSpecificationTableBodyProps: isAccrodion\r\n ? {}\r\n : {\r\n className: '',\r\n tag: 'tbody'\r\n },\r\n title: heading?.text && (\r\n \r\n ),\r\n productSpecificationResult: isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data),\r\n modal: this.renderModal(),\r\n openModal: this.openModal\r\n } as IProductSpecificationViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle Heading Text Change.\r\n * @param event - Current event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n private _createTableBody(content: IPdpSpecsData): (JSX.Element | null)[] {\r\n return content.productSpecificationData.result!.map((product, index) => {\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n\r\n if (!cellData) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n });\r\n }\r\n\r\n private _createDrawerBody(content: IPdpSpecsData): (JSX.Element | null)[] {\r\n const {\r\n config: { detailsAccordionText }\r\n } = this.props;\r\n\r\n const accordionItemContainer: IModuleProps = {\r\n moduleProps: this.props,\r\n className: 'ms-product-specification-title'\r\n };\r\n const simpleProduct = content.product.result;\r\n\r\n if (!simpleProduct) {\r\n return [null];\r\n }\r\n\r\n const productContent = content.productSpecificationData.result?.sort((a, b) => (a.Name! < b.Name! ? 1 : -1)) || [];\r\n const tempOpenDrawerList: number[] = [];\r\n const rows = productContent.map(product => {\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n // const isSpecifiedType: boolean = [this.MODEL_SIZE_ATTRIBUTE_NAME].indexOf(product.Name ?? '') > -1;\r\n const isSpecifiedType: boolean =\r\n [this.MODEL_SIZE_ATTRIBUTE_NAME, this.DESCRIPTION_ATTRIBUTE_NAME].indexOf(product.Name ?? '') > -1;\r\n if (!isSpecifiedType || !cellData) {\r\n return null;\r\n }\r\n tempOpenDrawerList.push(product.RecordId!);\r\n const itemId = this.props.data.product.result?.ItemId;\r\n if (itemId && this.state.attFresh === true) {\r\n tempOpenDrawerList.push(product.RecordId!);\r\n this.setState({ openDrawerList: tempOpenDrawerList, attFresh: false });\r\n }\r\n\r\n if (product.Name === this.MODEL_SIZE_ATTRIBUTE_NAME) {\r\n return (\r\n \r\n -1 ? true : false\r\n }}\r\n className='ms-product-specification__drawer'\r\n openGlyph='ms-product-specification__drawer-open'\r\n closeGlyph='ms-product-specification__drawer-close'\r\n glyphPlacement='end'\r\n toggleButtonText={detailsAccordionText || ''}\r\n onToggle={this._toggle(product.RecordId)}\r\n >\r\n
\r\n {isSpecifiedType && `${this.props.resources.articleLabel}:`}\r\n  \r\n {isSpecifiedType && `${itemId}`}\r\n \r\n
\r\n {cellData}\r\n
\r\n
\r\n \r\n
\r\n );\r\n // } else if (product.Name === this.DESCRIPTION_ATTRIBUTE_NAME) {\r\n // const descCellData = this._renderDescriptionCell(simpleProduct);\r\n // return (\r\n // \r\n // -1 ? true : false\r\n // }}\r\n // className='ms-product-specification__drawer'\r\n // openGlyph='ms-product-specification__drawer-open'\r\n // closeGlyph='ms-product-specification__drawer-close'\r\n // glyphPlacement='end'\r\n // toggleButtonText={simpleProduct.Description ? sustainAccordionText || '' : this.DESCRIPTION_ATTRIBUTE_NAME}\r\n // onToggle={this._toggle(product.RecordId)}\r\n // >\r\n //
{descCellData}
\r\n // \r\n //
\r\n // );\r\n } else {\r\n return null;\r\n }\r\n });\r\n\r\n const MaterialSlot = this.props.slots.materialBlocks ? (\r\n \r\n {this.props.slots.materialBlocks}\r\n \r\n ) : null;\r\n\r\n if (MaterialSlot) {\r\n if (rows) {\r\n rows.unshift(MaterialSlot);\r\n } else {\r\n return [MaterialSlot];\r\n }\r\n }\r\n\r\n if (simpleProduct && simpleProduct.MasterProductId && simpleProduct.Description) {\r\n tempOpenDrawerList.push(simpleProduct.MasterProductId);\r\n if (this.state.descFresh) {\r\n this.setState({ openDrawerList: tempOpenDrawerList, descFresh: false });\r\n }\r\n const descCellData = this._renderDescriptionCell(simpleProduct);\r\n\r\n const descriptionAccordion = (\r\n \r\n -1 ? true : false\r\n }}\r\n className='ms-product-specification__drawer'\r\n openGlyph='ms-product-specification__drawer-open'\r\n closeGlyph='ms-product-specification__drawer-close'\r\n glyphPlacement='end'\r\n toggleButtonText={this.props.config.sustainAccordionText ?? this.props.resources.pdpspecsDescriptionLabel}\r\n onToggle={this._toggle(simpleProduct.MasterProductId)}\r\n >\r\n
{descCellData}
\r\n \r\n
\r\n );\r\n rows.unshift(descriptionAccordion);\r\n }\r\n return rows;\r\n }\r\n\r\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\r\n if (drawerListId) {\r\n if (this.state.openDrawerList.length) {\r\n var drawerList = this.state.openDrawerList.slice(0);\r\n if (this.state.openDrawerList.indexOf(drawerListId) > -1) {\r\n drawerList = drawerList.filter(v => v !== drawerListId);\r\n } else {\r\n drawerList.push(drawerListId);\r\n }\r\n this.setState({ openDrawerList: drawerList });\r\n } else {\r\n this.setState({ openDrawerList: [drawerListId] });\r\n }\r\n }\r\n\r\n if (this.state.drawerListId !== drawerListId) {\r\n this.setState({ drawerListId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\r\n switch (product.DataTypeValue) {\r\n case 0: // None\r\n // Return span here instead of null so the row still shows\r\n return ;\r\n case 1: // Currency\r\n return this._renderCurrencyCell(product);\r\n case 2: // DateTime\r\n return this._renderDateTimeCell(product);\r\n case 3: // Decimal\r\n return this._renderDecimalCell(product);\r\n case 4: // Integer\r\n return this._renderIntegerCell(product);\r\n case 5: // Text\r\n if (product.TextValue === '') {\r\n return null;\r\n }\r\n return this._renderTextCell(product);\r\n case 6: // TrueFalse\r\n return this._renderTrueFalseCell(product);\r\n case 40: // Video\r\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\r\n return null;\r\n case 41: // Image\r\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\r\n return null;\r\n default:\r\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\r\n return null;\r\n }\r\n }\r\n\r\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\r\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\r\n return (\r\n \r\n {product.CurrencyCode}\r\n {product.CurrencyValue}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\r\n if (product.DateTimeOffsetValue?.toUTCString) {\r\n return {product.DateTimeOffsetValue.toUTCString()};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\r\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\r\n return {product.IntegerValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\r\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\r\n return {product.FloatValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\r\n if (product.TextValue !== null && product.TextValue !== undefined) {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDescriptionCell(product: SimpleProduct): JSX.Element | null {\r\n if (product.Description) {\r\n const updatedDescription = product.Description.replace('\\u2028', '');\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\r\n // TODO 20369885 setting to default value is needed to work around a platform bug where\r\n // config string value does not get its default value.\r\n if (product.BooleanValue) {\r\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\r\n }\r\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\r\n }\r\n}\r\n\r\nexport default ProductSpecification;\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 { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from './pdp-specs';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n const ECO_MATERIALS_ATTRIBUTE_NAME = 'data-eco-materials';\r\n\r\n React.useEffect(() => {\r\n window.addEventListener('click', function(event) {\r\n const el = event.target as HTMLAnchorElement;\r\n const ecoMatAttr = el.attributes.getNamedItem(ECO_MATERIALS_ATTRIBUTE_NAME);\r\n if (ecoMatAttr) {\r\n event.preventDefault();\r\n const ecoMat = ecoMatAttr ? ecoMatAttr.nodeValue : '';\r\n if (ecoMat) {\r\n props.openModal(ecoMat);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const {\r\n ProductSpecification,\r\n ProductSpecificationTableProps,\r\n ProductSpecificationTableBodyProps,\r\n productSpecificationResult,\r\n modal\r\n } = props;\r\n const rowdata =\r\n productSpecificationResult &&\r\n ArrayExtensions.hasElements(productSpecificationResult) &&\r\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\r\n\r\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n \r\n {props.title}\r\n \r\n {rowdata}\r\n \r\n {modal}\r\n \r\n ) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\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 {\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 {salesLineProps.happymadw}\r\n {salesLineProps.salesStatus}\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 }) => (\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 { 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 {\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\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 { 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 { 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 { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n salesAgreementPricePrompt?: string;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const {\n cartLabel,\n cartQtyLabel,\n data: { cart }\n } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n
\n
\n {qtyLabel}\n
\n
\n );\n});\n\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n // @ts-expect-error -- Compatible issue with the component override.\n ICartIconComponent\n>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\n\nexport default CartIconComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n
\n
\n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {'Code '}\n {coupon.Code}\n {'Applied '}\n
\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. 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 { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\n"],"names":["componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","props","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","React","currentViewModeState","onClickHandler","newViewModeState","onClick","viewModeDetailedViewAttributes","getTelemetryAttributes","telemetryContent","getPayloadObject","TelemetryConstant","ViewMode","viewModeListViewAttributes","className","classnames","Button","Object","assign","DetailedView","resources","detailedViewOptionAriaLabel","title","role","ListView","listViewOptionAriaLabel","TabItemType","TabItem","constructor","super","moduleContentClassName","moduleHeaderClassName","this","_renderTabHeader","bind","render","slots","renderView","config","data","isSelected","itemIndex","index","contentID","getContentID","tabId","activeContentIDResult","activeTabState","result","shown","undefined","activeContentIndex","_objectSpread","TabContentContainer","moduleProps","TabHeaderContainer","TabItemContent","tag","tabIndex","id","tabHeader","tabSlots","tabItemTitle","__decorate","observer","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","context","request","device","Type","navigationMenuSource","state","isMobile","menuItemList","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","MsDyn365","isBrowser","resizeThrottledEventHandler","addThrottledEvent","window","componentWillUnmount","removeEventListener","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","telemetry","error","viewProps","imageSettings","viewports","xs","q","w","h","xl","lazyload","gridSettings","Navigation","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","categories","map","push","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","linkText","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","ArrayExtensions","hasElements","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","MenuSource","Retail","ariaLabel","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","image","src","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","setState","innerWidth","sm","md","lg","MenuTypeIndexId","observable","computed","ProductSpecification","handleHeadingChange","event","heading","text","target","value","_toggle","drawerListId","isDrawerOpen","isAdditionalMediaDrawerOpen","catalogId","Msdyn365","validateCatalogId","reaction","product","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","requestContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","message","debug","shouldComponentUpdate","nextProps","nextState","_heading$tag","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","editProps","onEdit","productSpecificationResult","_createDrawerBody","_createTableBody","content","_this$props$context$r","_this$props$data$addi","tableRows","cellData","_renderProductCell","ProductSpecificationTableRow","key","productName","app","OmniChannelMedia","additionalMediaLocations","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Module","Drawer","collapseProps","timeout","isOpen","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","additionalDownloadsText","prevState","mediaLocation","href","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","dangerouslySetInnerHTML","BooleanValue","trueValueText","falseValueText","rowdata","row","ObjectExtensions","isNullOrUndefined","Node","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","option","promotionalImage","altText","imageSrc","promotionalItemImageSettings","additionalProperties","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","menuNode","current","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","defaultImageSettings","_ref","_categoryImage$imageS","generateImageUrl","Image","categoryImageSettings","loadFailureBehavior","menuItemRef","getTelemetryObject","telemetryPageName","friendlyName","payLoad","document","body","addEventListener","componentDidUpdate","_this$menuItemRef$cur","children","focus","ref","_renderDisplay","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","forEach","i","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","onFocus","hoverEffect","isParent","imagesource","contentAction","etext","attributes","onMouseOver","onTelemetryClick","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","TabContainer","tabHeaders","tabContents","headerSection","tabsSection","tabItemContainer","BackTopFooter","backtoTopText","destination","BackToTop","SignUpButton","disabled","link","SignUpError","type","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","pattern","isRequired","onChange","fieldReference","InputType","TextArea","name","SignUpLabel","forId","htmlFor","BusinessSignUpRadioButtonOption","label","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","element","maxChars","customClass","radioButtonOptions","radioButtonGroupClass","baseSignUpItem","wrapper","errorMessage","Address","isAddressInput","input","updateForm","hasError","resetAddress","splice","RadioButton","BusinessSignUp","_this","moduleClassName","prospectRadioButtonName","BusinessSignUpDefaultInputs","ProspectType","prospectTypeLabel","prospectTypeBuyerLabel","_onInputChange","prospectTypeSellerLabel","FirstName","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","EmailRegex","defaultRegex","source","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","needsToReset","_onAddressChange","errors","currentAddress","newForm","formItems","addressItem","address","addressHasErrors","showAddressErrors","isReady","_isFormReady","currentInput","match","_onSubmit","preventDefault","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","prospectType","newPartner","CompanySize","Comments","ProspectTypeValue","createProspectAsync","callerContext","then","successPageURL","confirmationLink","getUrlSync","location","hasSubmitErrors","_onCancel","cleanForm","isAddress","_addedReference","_this$formChildRefere","businessSignUp","ContainerWrapper","businessSignUpForm","_renderForm","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","form","FormWrapper","items","buttons","disclaimer","RichTextComponent","newFormFields","Subscribe","handleTextChange","handleParagraphChange","paragraph","_emailAddressInputRef","subscribeParagraph","subscribeHeading","subscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","autoComplete","emailInput","subscribeFormEmailAriaLabel","placeholder","subscribeEmailPlaceholderText","submitButton","subscribeFormSubmitAriaLabel","subscribeButtonLabel","submitButtonLabelText","Tab","tabIndexQuery","_refHandler","activeLink","_onClick","e","update","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","query","activeTab","queryTabIndex","indexOf","arr","split","_getTabHeader","_getTabContent","headingComponent","tabViewProps","params","isEditor","dataActionTabId","selected","onKeyDown","tabItemType","TabHeader","TabContent","paramName","paramValue","url","URL","requestUrl","URLSearchParams","search","set","decodeURIComponent","TileListLinks","_mapEditableLinks","linkdata","editableLinks","editableLink","links","onTextChange","TileListItem","_telemetryContent","handleLinkTextChange","linkIndex","_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","scope","getRichTextHtml","HeadingTag","MODEL_SIZE_ATTRIBUTE_NAME","DESCRIPTION_ATTRIBUTE_NAME","toggleModal","isModalOpen","openModal","ecoMaterials","header","ecoMat","linkId","modalHeader","modalBody","renderModal","headerContainer","ModalHeader","toggle","Modal","ModalBody","openDrawerList","drawerList","slice","v","attFresh","descFresh","accordion","modal","_content$productSpeci","detailsAccordionText","simpleProduct","productContent","sort","a","b","tempOpenDrawerList","rows","_this$props$data$prod","isSpecifiedType","itemId","ItemId","_product$RecordId","articleLabel","MaterialSlot","materialBlocks","unshift","MasterProductId","Description","_simpleProduct$Master","_this$props$config$su","descCellData","_renderDescriptionCell","descriptionAccordion","sustainAccordionText","pdpspecsDescriptionLabel","updatedDescription","replace","ecoMatAttr","getNamedItem","nodeValue","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","happymadw","salesStatus","GroupDelivery","_ref3","deliveryProps","Group","_ref4","groupProps","delivery","salesLinesProps","salesLines","LineId","deliveryType","shipment","trackingInfo","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","alert","loading","orderInfomation","orderSummary","payment","help","BusinessSignUpItem","button","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","modalFooter","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","recommendation","onSubmit","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","_renderTabItemContent","tabItemContent","TileListItemViewComponent","renderTileListItemContent","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","NavMenuConstants","getCategoryImage","alttext","categoryImageUrl","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","escapeKey","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","drawerKeyValue","newPair","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_escFunction","_this$menuNode$curren2","_customUpdateViewport","variant","VariantType","Browser","customResizeThrottledEventHandler","_renderMobileMenu","hamburgerAriaLabel","_renderCollapseMenu","Collapse","_renderDesktopMenu","_renderDrawerLink","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","buttonText","keys","colProps","menuSubItem","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","totalItemsInCart","qtyLabel","format","style","visibility","CartIconComponent","createComponentOverride","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","promoPlaceholderText","promoCodeApplyButtonText","_removePromotion","_event$currentTarget$","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","Code","ApplyPromoCode","promoCodeHeadingText"],"sourceRoot":""}