{"version":3,"file":"static/js/18.1806847e55b8115c4a4b.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/pickup-option-list.tsx?9899","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/store-pickup-option-list.tsx?fcf6","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/find-store-worldwide-location-line-item/date-time-helpers.ts?31c5","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/find-store-worldwide-location-line-item/find-store-worldwide-location-line-item.components.tsx?9ca8","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/find-store-worldwide-location-lines.tsx?bbef","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/find-store-worldwide-search-form.tsx?05ef","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/find-store-worldwide-small-components.tsx?cef1","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/components/selected-store/selected-store.tsx?d7a6","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/find-store-worldwide.props.autogenerated.ts?b0ff","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/find-store-worldwide.tsx?f58c","webpack://Msdyn365.Commerce.Online/./src/modules/find-store-worldwide/find-store-worldwide.view.tsx?59ba","webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.tsx?12c8","webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.view.tsx?638f","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/sign-up.view.tsx?e5d6","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Interface Pickup option list.\r\n */\r\nexport interface IPickUpOptionListProps {\r\n pickupListOptionMenuText: string;\r\n pickupmodeList?: DeliveryOption[];\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Interface pickup option list state.\r\n */\r\nexport interface IPickOptionListState {\r\n expandSiteOptions: boolean;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class PickUpOptionList extends React.PureComponent {\r\n private readonly _pickupListOptionMenu: React.RefObject;\r\n\r\n private readonly _pickupListOptionButton: React.RefObject;\r\n\r\n private readonly eventsToBeBind = ['click', 'touchstart'];\r\n\r\n public constructor(props: IPickUpOptionListProps) {\r\n super(props);\r\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\r\n this._pickupListOptionMenu = React.createRef();\r\n this._pickupListOptionButton = React.createRef();\r\n this.state = {\r\n expandSiteOptions: false\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.addEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.removeEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\r\n\r\n return (\r\n
\r\n \r\n {pickupListOptionMenuText}\r\n \r\n \r\n {this.state.expandSiteOptions ? (\r\n
    \r\n {pickupmodeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n
  • \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handle the document click.\r\n * @param event -- Event object.\r\n */\r\n private readonly handleDocumentClick = (event: Event): void => {\r\n const htmlElement = event.target as HTMLElement;\r\n if (\r\n !(\r\n (this._pickupListOptionButton.current !== null &&\r\n (event.target === this._pickupListOptionButton.current ||\r\n this._pickupListOptionButton.current.contains(htmlElement))) ||\r\n (this._pickupListOptionMenu.current !== null &&\r\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\r\n )\r\n ) {\r\n this.setState({\r\n expandSiteOptions: false\r\n });\r\n }\r\n };\r\n\r\n private _renderDeliveryOptions(event: React.MouseEvent): void {\r\n event.stopPropagation();\r\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !isExpandSiteOptionsState\r\n });\r\n }\r\n\r\n /**\r\n * Select Delivery option.\r\n * @param event -- Event Object.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode && deliveryCode.length > 0) {\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Pickup option list interface.\r\n */\r\nexport interface IStorePickUpOptionListProps {\r\n productPickupListOptionMenuText?: string;\r\n productPickupModeList?: DeliveryOption[];\r\n defaultOptionText?: string;\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Store Pickup option state interface.\r\n */\r\nexport interface IStorePickOptionListState {\r\n isFilterExpanded: boolean;\r\n selectedPickupMode?: string;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class StorePickUpOptionList extends React.PureComponent {\r\n private readonly _storePickupListOptionMenu: React.RefObject;\r\n\r\n public constructor(props: IStorePickUpOptionListProps) {\r\n super(props);\r\n this._storePickupListOptionMenu = React.createRef();\r\n this.state = {\r\n isFilterExpanded: false,\r\n selectedPickupMode: ''\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\r\n const selectedPickupModeDesc = defaultOptionText\r\n ? defaultOptionText\r\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\r\n const role = 'menu';\r\n return (\r\n
\r\n \r\n {this.state.isFilterExpanded ? (\r\n
    \r\n {productPickupModeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Method to call when drop dwon get selected.\r\n */\r\n private readonly _rendeDeliveryOptions = () => {\r\n const isExpandOptionsState = this.state.isFilterExpanded;\r\n this.setState({\r\n isFilterExpanded: !isExpandOptionsState\r\n });\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport get from 'lodash/get';\r\nimport { IStoreSelectorLocationLineItemResources } from '../../find-store-worldwide';\r\n\r\nexport interface IHoursDisplayInfo {\r\n startDayShort: string;\r\n startDayFull: string;\r\n endDayShort?: string;\r\n endDayFull?: string;\r\n timeRange: string;\r\n}\r\n\r\ninterface IHoursInfo {\r\n isClosed: boolean;\r\n openTime?: number;\r\n closeTime?: number;\r\n}\r\n\r\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\r\n\r\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\r\n if (seconds === undefined) {\r\n return undefined;\r\n }\r\n let hours = Math.floor(seconds / (60 * 60));\r\n const ampm = hours >= 12 ? 'pm' : 'am';\r\n hours %= 12;\r\n hours = hours ? hours : 12;\r\n const divisorForMinutes = seconds % (60 * 60);\r\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\r\n return `${hours}:${minutes} ${ampm}`;\r\n};\r\n\r\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.monday;\r\n case 'TUE':\r\n return resources.days.tuesday;\r\n case 'WED':\r\n return resources.days.wednesday;\r\n case 'THU':\r\n return resources.days.thursday;\r\n case 'FRI':\r\n return resources.days.friday;\r\n case 'SAT':\r\n return resources.days.saturday;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sunday;\r\n }\r\n};\r\n\r\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.mondayFull;\r\n case 'TUE':\r\n return resources.days.tuesdayFull;\r\n case 'WED':\r\n return resources.days.wednesdayFull;\r\n case 'THU':\r\n return resources.days.thursdayFull;\r\n case 'FRI':\r\n return resources.days.fridayFull;\r\n case 'SAT':\r\n return resources.days.saturdayFull;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sundayFull;\r\n }\r\n};\r\n\r\nconst buildHoursDisplayInfo = (\r\n startDay: DayType,\r\n endDay: DayType,\r\n hoursInfo: string,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): IHoursDisplayInfo => {\r\n return {\r\n startDayShort: getShortTimeString(startDay, resources),\r\n startDayFull: getFullTimeString(startDay, resources),\r\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\r\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\r\n timeRange: hoursInfo\r\n };\r\n};\r\n\r\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\r\n if (firstLine.isClosed && secondLine.isClosed) {\r\n return true;\r\n }\r\n\r\n if (!firstLine.isClosed && !secondLine.isClosed) {\r\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\r\n return {\r\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\r\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\r\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\r\n };\r\n};\r\n\r\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\r\n if (hoursInfo.isClosed) {\r\n return resources.closedText;\r\n }\r\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\r\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\r\n\r\n return `${openFrom}–${openTo}`;\r\n};\r\n\r\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\r\n const storeHoursList: IHoursDisplayInfo[] = [];\r\n\r\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\r\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\r\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\r\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\r\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\r\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\r\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\r\n\r\n let periodStart: DayType = 'MON';\r\n let periodEnd: DayType = 'MON';\r\n\r\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\r\n\r\n periodStart = 'TUE';\r\n }\r\n periodEnd = 'TUE';\r\n\r\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\r\n\r\n periodStart = 'WED';\r\n }\r\n periodEnd = 'WED';\r\n\r\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\r\n\r\n periodStart = 'THU';\r\n }\r\n periodEnd = 'THU';\r\n\r\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\r\n\r\n periodStart = 'FRI';\r\n }\r\n periodEnd = 'FRI';\r\n\r\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\r\n\r\n periodStart = 'SAT';\r\n }\r\n periodEnd = 'SAT';\r\n\r\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\r\n\r\n periodStart = 'SUN';\r\n }\r\n periodEnd = 'SUN';\r\n\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\r\n\r\n return storeHoursList;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\n// import { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\r\nimport { IStoreSelectorLocationLineItemProps, IStoreSelectorLocationLineItemResources } from '../../find-store-worldwide';\r\n\r\n// /**\r\n// * Store Locator line item resources.\r\n// */\r\n// export interface IStoreSelectorLocationLineItemResources {\r\n// storeHoursHeader: string;\r\n// closedText: string;\r\n// storeLabelRetailer: string;\r\n// storeLabelVenchi: string;\r\n// goToStoreWebPage: string;\r\n\r\n// days: {\r\n// monday: string;\r\n// tuesday: string;\r\n// wednesday: string;\r\n// thursday: string;\r\n// friday: string;\r\n// saturday: string;\r\n// sunday: string;\r\n// mondayFull: string;\r\n// tuesdayFull: string;\r\n// wednesdayFull: string;\r\n// thursdayFull: string;\r\n// fridayFull: string;\r\n// saturdayFull: string;\r\n// sundayFull: string;\r\n// };\r\n// }\r\n\r\n// /**\r\n// * Store Locator line item props.\r\n// */\r\n// export interface IStoreSelectorLocationLineItemProps {\r\n// location: OrgUnitLocation;\r\n// storeHours?: StoreHours;\r\n\r\n// // hideStockStatus?: boolean;\r\n// // isInStock?: boolean;\r\n// // isCurrentLocation?: boolean;\r\n\r\n// resources: IStoreSelectorLocationLineItemResources;\r\n// // stockStatusLabel?: string;\r\n// // storeLocatorView?: boolean;\r\n// // isPreferredStoreEnabled?: boolean;\r\n// index: string;\r\n// // preferredStoreLocationId: string | null;\r\n// // storePickUpOptionList?: DeliveryOption[];\r\n// // productPickUpOptionList?: DeliveryOption[];\r\n// // filteredPickupMode?: string;\r\n// // shouldShowIndex?: boolean;\r\n// baseUrl?: string;\r\n// shouldShowStorePageLinks?: boolean;\r\n// storePageLinksCountries?: string[];\r\n// baseClassName?: string;\r\n\r\n// /**\r\n// * The telemetry content.\r\n// */\r\n// telemetryContent?: ITelemetryContent;\r\n// preferredDistanceUnit: string;\r\n// isLocationDisabled?: boolean;\r\n// // handlers: {\r\n// // onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n// // onSetAsPreferredStore(locationId: string | undefined): void;\r\n// // onRemovePreferredStore(): void;\r\n// // };\r\n// }\r\n\r\nconst hasStoreHoursInfo = (storeHours: StoreHours | undefined, location: OrgUnitLocation): boolean => {\r\n if (storeHours?.RegularStoreHours || (location.OpenFrom && location.OpenTo)) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Function to render store hours.\r\n * @param storeHours - Store Hours object.\r\n * @param location - Store Unit.\r\n * @param resources - Resources.\r\n * @returns - Jsx element.\r\n */\r\nexport const renderStoreHours = (\r\n storeHours: StoreHours | undefined,\r\n location: OrgUnitLocation,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day houts\r\n if (storeHours?.RegularStoreHours) {\r\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\r\n return (\r\n \r\n \r\n \r\n {\r\n //TODO LOCALIZE\r\n }\r\n \r\n \r\n \r\n \r\n \r\n {storeHoursList.map(displayTime => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
DayHours
\r\n {displayTime.endDayShort ? (\r\n <>\r\n {displayTime.startDayShort}–\r\n {displayTime.endDayShort}\r\n \r\n ) : (\r\n {displayTime.startDayShort}\r\n )}\r\n {displayTime.timeRange}
\r\n );\r\n // return (\r\n //
\r\n // {storeHoursList.map(displayTime => (\r\n //
\r\n // {displayTime.endDayShort ? (\r\n //
\r\n // {displayTime.startDayShort}–\r\n // {displayTime.endDayShort}\r\n //
\r\n // ) : (\r\n //
\r\n // {displayTime.startDayShort}\r\n //
\r\n // )}\r\n //
{displayTime.timeRange}
\r\n //
\r\n // ))}\r\n //
\r\n // );\r\n }\r\n\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\r\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\r\n\r\n return (\r\n
\r\n {storeOpenFrom}-{storeOpenTo}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Function to return distance measure unit.\r\n * @param distance - Store location within radius.\r\n * @param preferredDistanceUnit - Unit configuration.\r\n * @param isLocationDisabled - Flag to check user location.\r\n * @returns - Unit of distance.\r\n */\r\nexport const buildDistanceString = (\r\n distance: number | undefined,\r\n preferredDistanceUnit: string,\r\n isLocationDisabled?: boolean\r\n): string | undefined => {\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < 1) {\r\n return `(<1 ${preferredDistanceUnit})`;\r\n }\r\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\r\n};\r\n\r\n/**\r\n * Function to store contact.\r\n * @param contacts - Store location within radius.\r\n * @returns - Return primary contact number of store.\r\n */\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\r\n\r\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryPhoneContact) {\r\n return primaryPhoneContact.Locator;\r\n }\r\n\r\n return allPhoneContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport function formatAddress(location: OrgUnitLocation): string {\r\n const addressParts = [];\r\n\r\n // Street and Street Number\r\n if (location.Street || location.StreetNumber) {\r\n addressParts.push(`${location.Street || ''} ${location.StreetNumber || ''}`.trim());\r\n }\r\n\r\n // District and Building Compliment\r\n const districtBuildingParts = [];\r\n if (location.DistrictName) {\r\n districtBuildingParts.push(location.DistrictName);\r\n }\r\n if (location.BuildingCompliment) {\r\n districtBuildingParts.push(location.BuildingCompliment);\r\n }\r\n if (districtBuildingParts.length > 0) {\r\n addressParts.push(districtBuildingParts.join(', '));\r\n }\r\n\r\n // City, County, State\r\n const cityCountyStateParts = [];\r\n if (location.City) {\r\n cityCountyStateParts.push(location.City);\r\n }\r\n if (location.County || location.CountyName) {\r\n cityCountyStateParts.push(location.County || location.CountyName);\r\n }\r\n if ((location.State || location.StateName) && !(location.Country === 'ITA')) {\r\n cityCountyStateParts.push(location.State || location.StateName);\r\n }\r\n if (cityCountyStateParts.length > 0) {\r\n addressParts.push(cityCountyStateParts.join(', '));\r\n }\r\n\r\n // Zipcode\r\n if (location.Zip) {\r\n addressParts.push(location.Zip);\r\n }\r\n\r\n // Country\r\n if (location.Country) {\r\n addressParts.push(location.Country);\r\n }\r\n\r\n return addressParts.join('\\n');\r\n}\r\n/**\r\n * Renders store location line items.\r\n * @param props - Store location line items props.\r\n * @returns - HTML.\r\n */\r\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\r\n const {\r\n location,\r\n resources,\r\n storeHours,\r\n index,\r\n isLocationDisabled,\r\n storePageLinksCountries,\r\n shouldShowStorePageLinks,\r\n baseUrl,\r\n baseClassName\r\n } = props;\r\n\r\n var storeName: string | undefined = location.OrgUnitName;\r\n const retailer = storeName?.startsWith('R ') ? true : false;\r\n if (storeName && retailer) {\r\n storeName = storeName.slice(2);\r\n }\r\n const storeUrl = storeName\r\n ?.toLowerCase()\r\n .replace(/[ .&@',]/g, '-')\r\n .replace(/-+/g, '-');\r\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\r\n const storeAddress: string = formatAddress(location);\r\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n const displayStoreHours = hasStoreHoursInfo(storeHours, location);\r\n const parentClassName = baseClassName ? baseClassName : 'ms-store-select-venchi__location-line-item';\r\n\r\n const urlStorePage = (): JSX.Element | null => {\r\n if (!retailer && shouldShowStorePageLinks && location.Country && storePageLinksCountries?.includes(location.Country)) {\r\n return (\r\n
\r\n \r\n \r\n {resources.goToStoreWebPage}\r\n \r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n /* eslint-disable prettier/prettier */\r\n return (\r\n
\r\n
\r\n

\r\n {`${retailer ? resources.storeLabelRetailer : resources.storeLabelVenchi} ${index}`}\r\n {distanceAsString ?\r\n \r\n {' '}\r\n {distanceAsString}\r\n : false}\r\n

\r\n

{storeName}

\r\n
\r\n
\r\n
\r\n {storeAddress && (\r\n
\r\n \r\n {storeAddress}\r\n
\r\n )}\r\n {phoneNumber && (\r\n
\r\n \r\n {phoneNumber}\r\n
\r\n )}\r\n {urlStorePage()}\r\n
\r\n {displayStoreHours && (\r\n
\r\n

{resources.storeHoursHeader}

\r\n {renderStoreHours(storeHours, location, resources)}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Store location line item component.\r\n */\r\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\r\n props: IStoreSelectorLocationLineItemProps\r\n) => JSX.Element;\r\n","/* eslint-disable security/detect-object-injection */\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IFindStoreWorldwideResources } from '../find-store-worldwide.props.autogenerated';\r\nimport { StoreSelectorLocationLineItemComponent } from './find-store-worldwide-location-line-item';\r\nimport { IStoreSelectorLocationLineItemResources } from '../find-store-worldwide';\r\n\r\n/**\r\n * Store selector location lines props interface.\r\n */\r\nexport interface IStoreSelectorLocationLinesProps {\r\n locations?: IFullOrgUnitAvailability[];\r\n resources: IFindStoreWorldwideResources;\r\n preferredDistanceUnit?: string;\r\n\r\n alreadySelectedLocation?: OrgUnitLocation;\r\n outOfStockThreshold: number;\r\n enableOutOfStockCheck: boolean;\r\n storeLocatorView?: boolean;\r\n selectedStoreLocationId?: string;\r\n isPreferredStoreEnabled?: boolean;\r\n displayList?: boolean;\r\n isLocationDisabled?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n onClick: (locationId: string | undefined) => void;\r\n preferredStoreLocationId: string | null;\r\n onSetAsPreferredStore: (locationId: string | undefined) => void;\r\n onRemovePreferredStore: () => void;\r\n filteredPickupMode?: string;\r\n shouldShowIndex?: boolean;\r\n baseUrl?: string;\r\n shouldShowStorePageLinks?: boolean;\r\n storePageLinksCountries?: string[];\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onLocationSelected(location: OrgUnitLocation | undefined): void;\r\n}\r\n\r\n/**\r\n * Displays all the location line items, or null if none exists.\r\n */\r\n@observer\r\nexport class StoreSelectorLocationLines extends React.PureComponent {\r\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\r\n\r\n private readonly selectedLocationRef: React.RefObject;\r\n\r\n private storeCounter: number;\r\n\r\n public constructor(props: IStoreSelectorLocationLinesProps) {\r\n super(props);\r\n this.selectedLocationRef = React.createRef();\r\n this.storeCounter = 0;\r\n }\r\n\r\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\r\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\r\n this._scrollIntoView();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.locations) {\r\n this._stores = this._sortStores(this.props.locations);\r\n }\r\n\r\n reaction(\r\n () => this.props.locations,\r\n () => {\r\n if (this.props.locations) {\r\n this._stores = this._sortStores(this.props.locations);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!ArrayExtensions.hasElements(this._stores)) {\r\n return null;\r\n }\r\n\r\n this.storeCounter = 0;\r\n\r\n return (\r\n
\r\n {this._stores.map((store, index) => {\r\n return this._renderStoreLocation(store, index);\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On click Handler function.\r\n * @param orgUnitLocation -OrgUnit location.\r\n * @returns Click action on orgUnit Location.\r\n */\r\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\r\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\r\n };\r\n\r\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\r\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\r\n // const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\r\n const defaultAriaSetsize = 0;\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Sort store.\r\n * @param stores - Array of stores data.\r\n * @returns Sorted stores array.\r\n */\r\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\r\n /**\r\n * IsPreferredStore.\r\n * @param value - Array of stores data.\r\n * @returns IsPreferred store boolean value.\r\n */\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n this.props.isPreferredStoreEnabled &&\r\n this.props.preferredStoreLocationId &&\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n /**\r\n * Scroll into view.\r\n */\r\n private readonly _scrollIntoView = () => {\r\n const selectedLocationDiv = this.selectedLocationRef.current;\r\n const parent = selectedLocationDiv?.parentElement;\r\n if (selectedLocationDiv && parent) {\r\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop;\r\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\r\n }\r\n }\r\n };\r\n\r\n // /**\r\n // * Is current location.\r\n // * @param location - Org unit location.\r\n // * @returns The current location.\r\n // */\r\n // private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\r\n // (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\r\n // false;\r\n\r\n // /**\r\n // * Check the product is in stock or not.\r\n // * @param itemAvailabilities - Item availabilities.\r\n // * @returns If the product is in stock.\r\n // */\r\n // private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n // if (!this.props.enableOutOfStockCheck) {\r\n // return true;\r\n // }\r\n\r\n // if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n // return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\r\n // }\r\n\r\n // return false;\r\n // };\r\n\r\n // /**\r\n // * Get the stock inventory label.\r\n // * @param availabilityWithHours - Full org unit availability.\r\n // * @returns The stock label.\r\n // */\r\n // private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n // if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\r\n // for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\r\n // if (\r\n // availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n // availabilityWithHours.ProductInventoryInformation[i].InventLocationId\r\n // ) {\r\n // return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\r\n // }\r\n // }\r\n // }\r\n\r\n // return undefined;\r\n // };\r\n\r\n /**\r\n * Map resources.\r\n * @param resources - Store resources.\r\n * @returns Resources.\r\n */\r\n private readonly _mapResources = (resources: IFindStoreWorldwideResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n storeHoursHeader: resources.timeText,\r\n closedText: resources.storeHoursClosedText,\r\n storeLabelRetailer: resources.storeLabelRetailer,\r\n storeLabelVenchi: resources.storeLabelVenchi,\r\n goToStoreWebPage: resources.goToStoreWebPage,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n KeyCodes,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { CustomInput } from 'reactstrap';\r\n\r\n/**\r\n * Store Selector Search Form Props interface.\r\n */\r\nexport interface IStoreSelectorSearchFormProps {\r\n resources: {\r\n searchInputAriaLabel: string;\r\n searchButtonAriaLabel: string;\r\n searchPlaceholderText: string;\r\n viewListText: string;\r\n viewMapText: string;\r\n includeRetailersButtonLabel: string;\r\n pickupFilterByHeading?: string;\r\n pickupFilterMenuHeading?: string;\r\n };\r\n\r\n id: string;\r\n value: string;\r\n displayIncludeRetailersButton: boolean;\r\n isMapDisabled?: boolean;\r\n showAllStores?: boolean;\r\n displayRetailers?: boolean;\r\n displayList?: boolean;\r\n locatorView?: boolean;\r\n locationsMessage?: React.ReactNode;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onShowAllStores(): void;\r\n onDisplayRetailers(displayRetailersValue: boolean): void;\r\n onToggleListMapViewState(): void;\r\n performSearch(searchTerm: string): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n}\r\n\r\n/**\r\n * Simple search form consisting of search text and a search button.\r\n */\r\nexport class StoreSelectorSearchForm extends React.PureComponent {\r\n private readonly searchBoxRef: React.RefObject = React.createRef();\r\n private readonly searchSectionRef: React.RefObject = React.createRef();\r\n\r\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n // private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private previousValue: string = '';\r\n\r\n private isSearchResultOpened: boolean = false;\r\n\r\n public constructor(props: IStoreSelectorSearchFormProps) {\r\n super(props);\r\n this.state = { value: '' };\r\n // this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\r\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\r\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\r\n // this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\r\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n private setScrollPositionToSearch = () => {\r\n if (this.searchSectionRef.current?.offsetParent) {\r\n window.scrollTo({\r\n //@ts-ignore\r\n top: this.searchSectionRef.current.offsetParent.offsetTop - 48,\r\n behavior: 'auto'\r\n });\r\n }\r\n };\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: { searchButtonAriaLabel, searchPlaceholderText, viewListText, viewMapText, includeRetailersButtonLabel },\r\n id,\r\n value,\r\n isMapDisabled,\r\n // showAllStores,\r\n displayList,\r\n displayRetailers,\r\n // onShowAllStores,\r\n onDisplayRetailers,\r\n locatorView,\r\n locationsMessage,\r\n displayIncludeRetailersButton\r\n } = this.props;\r\n\r\n const toggleButtonText = displayList ? viewMapText : viewListText;\r\n\r\n const onDisplayAllRetailersInternal = (event: React.ChangeEvent) => {\r\n const isChecked = event.target.checked;\r\n onDisplayRetailers(isChecked);\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handles the key press on the input box.\r\n * @param event - Event object.\r\n */\r\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\r\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\r\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\r\n // In order to avoid that. Checking if the search result is open or not.\r\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\r\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\r\n if (activeDescedantValue) {\r\n if (this.previousValue === '') {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n return;\r\n }\r\n\r\n if (activeDescedantValue !== this.previousValue) {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n } else {\r\n this.isSearchResultOpened = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n // /**\r\n // * Calls method display result.\r\n // * @param event - The first number.\r\n // */\r\n // private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\r\n // if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\r\n // this.props.onShowAllStores();\r\n // }\r\n // };\r\n\r\n /**\r\n * Method called on search text changed.\r\n * @param event - Input value.\r\n */\r\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\r\n const inputValue: string = event.target.value;\r\n\r\n await this.props.searchTermChanged(inputValue);\r\n };\r\n\r\n /**\r\n * Method called on search submit.\r\n * @param event - Input value.\r\n */\r\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\r\n event.preventDefault(); // Prevents form submission\r\n this.searchBoxRef.current?.blur();\r\n if (!this.isSearchResultOpened) {\r\n await this.props.performSearch(this.props.value);\r\n }\r\n this.isSearchResultOpened = false;\r\n };\r\n\r\n /**\r\n * Method to render pickup mode list.\r\n * @param props - Store selector search form props.\r\n * @param toggleButtonText - Locator view button text.\r\n * @param locatorView - Locator View is on\\off.\r\n * @param shouldDisplayList - Display List.\r\n * @returns Jsx component.\r\n */\r\n private readonly renderToggleMapButton = (\r\n props: IStoreSelectorSearchFormProps,\r\n toggleButtonText: string,\r\n locatorView: boolean | undefined,\r\n shouldDisplayList?: boolean\r\n ): JSX.Element | null => {\r\n const handleButtonClick = () => {\r\n this.setScrollPositionToSearch();\r\n props.onToggleListMapViewState();\r\n };\r\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\r\n if (locatorView) {\r\n return (\r\n \r\n {toggleButtonText}\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IFindStoreWorldwideResources, ITermsOfServiceLinkData } from '../find-store-worldwide.props.autogenerated';\r\n\r\nexport interface IStoreSelectorEmptyMessageProps {\r\n resources: IFindStoreWorldwideResources;\r\n}\r\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

\r\n
\r\n);\r\n\r\nexport const StoreSelectorWaiting: React.FC = () => (\r\n
\r\n);\r\n\r\nexport interface IStoreSelectorTermsOfServiceProps {\r\n link?: ITermsOfServiceLinkData;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\r\n if (link) {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-store-select-venchi__terms-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link'\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport interface IStoreSelectorFoundLocationsMessage {\r\n resources: IFindStoreWorldwideResources;\r\n locations?: IFullOrgUnitAvailability[];\r\n includeRetailers: boolean;\r\n forSearchBar: boolean;\r\n shouldDisplayLabel: boolean;\r\n}\r\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\r\n locations,\r\n resources,\r\n includeRetailers,\r\n forSearchBar,\r\n shouldDisplayLabel\r\n}) => {\r\n if (locations) {\r\n const countRetailers: number = locations.filter(loc => {\r\n return loc.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName?.startsWith('R ') ? true : false;\r\n }).length;\r\n const countVenchiStores: number = locations.length - countRetailers;\r\n return (\r\n \r\n {includeRetailers\r\n ? resources.storeAndRetailersAllCountMessage\r\n .replace('{count}', countVenchiStores.toString())\r\n .replace('{countRetailers}', countRetailers.toString())\r\n : resources.storeAllCountMessage.replace('{count}', countVenchiStores.toString())}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent,\r\n NodeTag,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { buildDistanceString } from '../find-store-worldwide-location-line-item';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface ISelectedStoreResources {\r\n closedText: string;\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreProps {\r\n className?: string;\r\n shouldHideStockStatus?: boolean;\r\n isCurrentLocation?: boolean;\r\n isInStock?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n resources: ISelectedStoreResources;\r\n stockStatusLabel?: string;\r\n isLocationDisabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n storeRenderedComponent?: React.ReactNode;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreViewProps {\r\n isCurrentLocation?: boolean;\r\n canSelectLocation?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n deliveryOptions?: DeliveryOption[];\r\n resources: ISelectedStoreResources;\r\n storeRenderedComponent: React.ReactNode;\r\n storeDetailsMain: INodeProps;\r\n storeHeader: INodeProps;\r\n storeName: React.ReactNode;\r\n storeDistance: React.ReactNode;\r\n storeDetailsAvailabilityContainer: INodeProps;\r\n currentLocation: React.ReactNode;\r\n storeDetailsCloseButton?: React.ReactNode;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n };\r\n}\r\n\r\n/**\r\n * On store details close functionality.\r\n * @param props -Store locator location items.\r\n * @returns Void promise.\r\n */\r\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\r\n await props.handlers.closeStoreDetailsModal();\r\n};\r\n\r\n/**\r\n * Renders selected store details.\r\n * @param props - Store location details props.\r\n * @returns - Selected Store view props.\r\n */\r\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\r\n const {\r\n className,\r\n shouldHideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n selectedStore,\r\n resources,\r\n isLocationDisabled,\r\n telemetryContent,\r\n preferredDistanceUnit,\r\n storeRenderedComponent\r\n } = props;\r\n\r\n const parentClassName = className ? className : 'ms-store-select-venchi__map__selected_store';\r\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\r\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\r\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\r\n const canSelectLocation = !shouldHideStockStatus && isInStock;\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n\r\n const viewProps: ISelectedStoreViewProps = {\r\n storeRenderedComponent,\r\n selectedStore,\r\n isCurrentLocation,\r\n canSelectLocation,\r\n resources,\r\n storeDetailsMain: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__main`\r\n },\r\n storeHeader: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__header`\r\n },\r\n storeName: {storeName},\r\n storeDetailsCloseButton: \r\n {recallDismissable ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GenericPopupView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpLocalAccount,\r\n ISignUpViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-up/sign-up';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\r\n return (\r\n <>\r\n \r\n {successMessage &&\r\n successMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n {buttons &&\r\n buttons.map((button: React.ReactNode) => {\r\n return <>{button};\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = (\r\n { localAccount, items, emailVerification, buttons, errorMessage, disclaimer },\r\n props\r\n) => {\r\n const europe = ['/fr', '/de'];\r\n const locale = props?.context?.request?.locale;\r\n const uiLocales = props?.context?.request?.query.ui_locales;\r\n const regionCRM = europe.includes(uiLocales) ? uiLocales : props.config.RegionCRM;\r\n\r\n const [birthDate, setBirthDate] = React.useState('');\r\n const [formatDateState, setFormatDateState] = React.useState(true);\r\n const pattern = /^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^((16|[248][048]|[3579][26])00)|(1[6789]|[2-9][0-9])(0[48]|[13579][26]|[2468][048])\\/02\\/(0[1-9]|1[0-9]|2[0-9])$|^(1[6789]|[2-9][0-9])[0-9]{2}\\/02\\/(0[1-9]|1[0-9]|2[0-8])$/gm;\r\n const patternUS = /^((0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^02\\/(0[1-9]|1[0-9]|2[0-9])$/gm;\r\n\r\n const checkDate = (event: React.KeyboardEvent) => {\r\n const value = event.currentTarget.value;\r\n const today = new Date();\r\n if (value !== '' && (!value.match(locale !== 'en-US' ? pattern : patternUS) || today < new Date(value))) {\r\n setFormatDateState(false);\r\n } else {\r\n setFormatDateState(true);\r\n }\r\n if (locale === 'en-US') {\r\n setBirthDate(`1900/${value}`);\r\n }\r\n };\r\n if (typeof window !== 'undefined') {\r\n const signUpButton: HTMLElement = document.getElementById('continue') as HTMLElement;\r\n\r\n if (signUpButton !== undefined) {\r\n signUpButton.onclick = e => {\r\n if (!formatDateState) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n }\r\n }\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignUpItem) => {\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n
\r\n \r\n {formatDateState === false ? (\r\n

{props.resources.birthdayErrorText}

\r\n ) : (\r\n ''\r\n )}\r\n {locale !== 'en-US' ? (\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n ) : (\r\n <>\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n \r\n \r\n )}\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {props.config.renderThirdPartyPrivacy && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n
\r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount, props)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * 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"],"names":["React","secondsToTime","seconds","undefined","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","resources","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","buildDistanceString","distance","preferredDistanceUnit","isLocationDisabled","StoreSelectorLocationLineItemComponent","props","_storeName","_storeName2","location","index","storePageLinksCountries","shouldShowStorePageLinks","baseUrl","baseClassName","storeName","OrgUnitName","retailer","startsWith","slice","storeUrl","toLowerCase","replace","distanceAsString","Distance","storeAddress","addressParts","Street","StreetNumber","trim","districtBuildingParts","DistrictName","BuildingCompliment","length","join","cityCountyStateParts","City","County","CountyName","State","StateName","Country","Zip","formatAddress","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","ArrayExtensions","hasElements","primaryPhoneContact","find","IsPrimary","Locator","extractPhoneNumber","Contacts","displayStoreHours","hasStoreHoursInfo","RegularStoreHours","OpenFrom","OpenTo","parentClassName","className","storeLabelRetailer","storeLabelVenchi","includes","target","href","rel","goToStoreWebPage","storeHoursHeader","renderStoreHours","scope","map","displayTime","key","JSON","stringify","title","storeOpenFrom","storeOpenTo","StoreSelectorLocationLines","constructor","super","onClickHandler","orgUnitLocation","this","onClick","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_mapResources","timeText","storeHoursClosedText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","componentDidMount","locations","_stores","_sortStores","reaction","render","classnames","show","displayList","role","store","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","selected","ref","StoreHours","toString","telemetryContent","stores","isPreferredStore","value","_value$OrgUnitAvailab","isPreferredStoreEnabled","preferredStoreLocationId","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","searchSectionRef","previousValue","isSearchResultOpened","setScrollPositionToSearch","_this$searchSectionRe","offsetParent","window","scrollTo","top","behavior","_handleInputKeyPress","event","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","getAttribute","_searchTextChanged","async","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","preventDefault","blur","performSearch","renderToggleMapButton","toggleButtonText","locatorView","shouldDisplayList","handleButtonClick","onToggleListMapViewState","toggleButtonClass","Object","assign","toggleMapViewAttributes","state","payLoad","getPayloadObject","TelemetryConstant","SearchStore","storeSearchAttributes","getTelemetryAttributes","contentAction","etext","ShowAllStore","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","viewListText","viewMapText","includeRetailersButtonLabel","id","isMapDisabled","displayRetailers","onDisplayRetailers","locationsMessage","displayIncludeRetailersButton","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","onChange","onKeyUp","color","CustomInput","checked","isChecked","label","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","requestContext","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","includeRetailers","forSearchBar","shouldDisplayLabel","countRetailers","loc","_loc$OrgUnitAvailabil","countVenchiStores","storeAndRetailersAllCountMessage","storeAllCountMessage","storeDetailsModalHandler","handlers","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","isCurrentLocation","isInStock","selectedStore","storeRenderedComponent","canSelectLocation","PickupInStore","PreferredStore","RemovePreferredStore","storeDetailsMain","tag","storeHeader","storeDetailsCloseButton","Button","storeDistance","storeDetailsAvailabilityContainer","currentLocation","onSelected","searchRadiusUnit","StoreSelector","_this$props$config$de","renderSelectedStore","data","storeSelectorStateManager","result","storeLocations","context","selectedStoreIndex","findIndex","selectedStoreResources","currentUrl","request","url","requestUrl","substring","lastIndexOf","storeIndexString","selectedProps","_isCurrentLocation","alreadySelectedLocation","_onOrgUnitLocationSelected","onSetAsPreferredStore","_setPreferredStore","onRemovePreferredStore","_removePreferredStore","_closeStoreDetailModal","config","displayStorePageLinks","storePageLinksContries","handleLinkTextChange","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","setState","filteredPickupMode","onDisplayRetailersHandler","displayRetailersValue","onFilterLocations","_location$OrgUnitPick","OrgUnitPickUpDeliveryModes","DeliveryOptions","some","deliveryOption","Code","_attachMapAutoSuggest","autoSuggestOptions","telemetry","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","_objectSpread","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","availabilitiesWithHours","preferredStore","_store$OrgUnitAvailab2","setPreferredStoreLocation","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","geoLocate","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","navigator","geolocation","getCurrentPosition","position","coords","error","PERMISSION_DENIED","isSeeAllStoreValue","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","input","onLocationSelected","Promise","resolve","preferredLocationId","StoreId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","retailersLookup","distanceUnitValue","SearchRadiusUnit","kilometers","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getOrgUnitLocationByArea","calRadius","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByAreaDataAction","deliveryMode","warning","selectedLocation","defaultIncludeRetailers","getTelemetryObject","telemetryPageName","friendlyName","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","isDialogOpen","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeLocationList","_this$state$displayRe","_this$state$displayRe2","_storeSelectorStateMa3","app","appConfig","slots","maps","mapSlot","currentViewport","isMobile","variant","VariantType","Browser","isMobileDevice","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","kilometersShortText","milesShortText","locationListProps","_getStoreLocationListProps","locationsMessageForSearch","hasMapSlot","locationsMessageForList","origin","sitePath","viewProps","ModuleProps","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","HeaderProps","text","onEdit","FooterContainerProps","FooterContainerPropsMaps","SearchBarSectionMapOnlyMobileClassName","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","search","showAllStores","onShowAllStores","spinner","locationsList","outOfStockThreshold","enableOutOfStockCheck","enableStockCheck","productPickUpDeliveryOptions","deliveryOptions","shouldShowIndex","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","locationOpen","openFrom","openTo","Module","Node","GenericPopup","popupVisible","recallVisible","_onDismissRecall","createCookieRecall","_onDismissPopup","recallEnabled","recallShowAfterPopup","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","classNamePopup","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","cookie","Cookies","hidePopupIfCookieIsSet","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","expires","set","recallDismissableForDays","recallDismissable","modalHeader","recallText","closeButtonAriaLabel","closeButtonLabel","_window$dataLayer","_window$dataLayer$pus","modalName","dataLayer","call","eventCategory","eventAction","eventLabel","handleClose","popupElement","document","querySelector","form","getElementsByTagName","_window$dataLayer2","_window$dataLayer2$pu","Modal","ModalHeader","ModalBody","renderModuleAttributes","content","SignUpItem","wrapper","errorMessage","SignUpEmailVerification","email","buttonWrapper","buttons","successMessage","button","SignUpLoading","_ref4","modal","modalBody","icon","signUp","viewState","loading","defaultAADConainer","aadConainer","signUpLocalAccount","isShowLoading","LocalAccount","_props$context","_props$context2","localAccount","items","emailVerification","disclaimer","uiLocales","query","ui_locales","regionCRM","RegionCRM","birthDate","setBirthDate","formatDateState","setFormatDateState","pattern","patternUS","checkDate","currentTarget","today","match","signUpButton","getElementById","onclick","e","stopPropagation","item","isRequired","verificationControlWrapper","htmlFor","birthdayLabelText","birthdayErrorText","maxLength","onPaste","BirthdayText","renderThirdPartyPrivacy","defaultChecked","textGenericMarketing","required","textThirdParty","AccountCustomerBalanceTile","_initState","hasError","ErrorComponent","apiGenericErrorMessage","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","nextProps","nextState","isCustomerAccountPaymentEnabled","links","Heading","headingTag","isDetailsLinkDisplayed","LinksComponent","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","computed","_mapEditableLinks","linkdata","editableLinks","forEach","attributes","additionalProperties","BusinessPartnerPromotionTermsParagraph","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","callerContext","showSubmitButton","showTermsOfService","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","status","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","termsOfServiceModalHeading","MsDyn365","submitButton","submitRequestLabel","disabled","notificationBar","Alert","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","user","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","src","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","_getCategoryImage","categoryImageUrl","generateImageUrl","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","bind","isBrowser","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","isDrawerOpen","colProps","Drawer","toggleButtonProps","openGlyph","onToggle","collapseProps","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","round","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","onTelemetryClick","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","category","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","_this$menuItemRef$cur","children","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","RecordId","catalogId","ProductComparisonState","instance","accountInformation","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_this$menuNode$curren2","_customUpdateViewport","customResizeThrottledEventHandler","hamburgerAriaLabel","_renderCollapseMenu","Collapse","isNullOrWhitespace","entries","parentMenuId","menu","one","Number","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","parse"],"sourceRoot":""}