{"version":3,"file":"static/js/14.9612191fc58e4a6684e7.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/toysrus/definition-extensions/navigation-menu.ext.props.autogenerated.ts?8883","webpack://Msdyn365.Commerce.Online/./src/themes/toysrus/views/navigation-menu.view.tsx?d09e","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/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/ratings-histogram.view.tsx?6e01","webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","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/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * INavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n all = 'all',\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly'\r\n}\r\n\r\nexport interface INavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n enableMultilevelMenu?: boolean;\r\n enabletopMenu?: boolean;\r\n menuLevelSupport?: number;\r\n rootMenuNavigation?: string;\r\n displayCategoryImage?: boolean;\r\n displayPromotionalImage?: boolean;\r\n categoryPromotionalContent?: ICategoryPromotionalContentData[];\r\n categoryImageSettings?: Msdyn365.IImageSettings;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface INavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ICategoryPromotionalContentData {\r\n categoryName?: string;\r\n image: Msdyn365.IImageData;\r\n text?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface INavigationMenuProps extends Msdyn365.IModule {\r\n resources: INavigationMenuResources;\r\n config: INavigationMenuConfig;\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport MsDyn365, { IImageData, Image, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent, Module, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu/src/modules/navigation-menu/./navigation-menu';\r\nimport { IMenuItemData } from '@msdyn365-commerce-modules/navigation-menu/src/modules/navigation-menu/./navigation-menu.data';\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ICmsNavItemsData, ISubMenusData, navigationMenuSource } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n mobileViewLabelLink?: string;\r\n categoryImageAltText: string;\r\n scrollClass: boolean;\r\n /* Uptail Customization - START\r\n when mouse moves on any submneu item, currentcategory shows its option at ID if at level 2 and previous category ID (which is actually its parent ID) if at level 3 */\r\n currentCategory?: number | undefined;\r\n // checks whether back button is clicked or not on mobile menu\r\n isBackBtnClicked?: boolean;\r\n categoryImageLink?: string;\r\n /* Uptail Customization - END */\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n private currentLevel: number = 0;\r\n\r\n /* Uptail Customization - START*/\r\n private supportedLevel: number = 3;\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private currentLevelMobile: number = 0;\r\n private menuItemData: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n private documentRef: Document | undefined;\r\n /* Uptail Customization - END */\r\n\r\n private readonly menuNode: React.RefObject;\r\n private readonly menuButtonsNode: React.RefObject;\r\n private readonly telemetryContent: ITelemetryContent;\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuButtonsNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', mobileViewLabelLink: '', parentMenu: undefined, scrollClass: false, categoryImageAltText: '' };\r\n\r\n this.menuItemData = this._mapData(); // Uptail Customization\r\n this._setNavigationSource(props.config.navigationMenuSource as (navigationMenuSource | undefined)); // Uptail Customization\r\n\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n\r\n this.documentRef = document;\r\n\r\n if (MsDyn365.isBrowser) {\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n document.body.addEventListener('focusout', this._handleFocusOutside);\r\n\r\n /* Uptail Customization - START - Setting mousehover to false to not display submenu by defualt */\r\n document.body.addEventListener('mousedown', this._handleMouseHover(undefined));\r\n document.body.addEventListener('mousedown', this._handleLinkClick(undefined));\r\n /* Uptail Customization - END */\r\n }\r\n\r\n /* Uptail Customization - START*/\r\n /* Sticky Navigation */\r\n //window.addEventListener('scroll', () => {\r\n // this._mainMenuScroll(this.state.scrollClass);\r\n //});\r\n /* Uptail Customization - END*/\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n\r\n /* Uptail Customization - START - Setting mousehover to false to not display submenu while unmounting component */\r\n document.body.removeEventListener('mousedown', this._handleMouseHover(undefined));\r\n document.body.removeEventListener('mousedown', this._handleLinkClick(undefined));\r\n /* Uptail Customization - END */\r\n }\r\n\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation, resources: { backButtonAriaLabel } } = this.props;\r\n this.currentLevel = 1;\r\n\r\n return (\r\n \r\n {\r\n isMobileView && this.state.activeMenu &&\r\n \r\n \r\n \r\n \r\n {backButtonAriaLabel}\r\n \r\n \r\n \r\n }\r\n \r\n {isMobileView && this.state.activeMenu !== undefined && this.state.mobileViewLabelText &&\r\n \r\n { (this.state.mobileViewLabelLink && this.state.mobileViewLabelLink != '') ?\r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n : \r\n {this.state.mobileViewLabelText}\r\n \r\n }\r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const { menuItemData } = this;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: undefined }) : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText, mobileViewLabelLink: menuItemDatum.linkURL });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n if (menuItem) {\r\n //(this.currentLevelMobile < this.supportedLevel && this.state.isBackBtnClicked === false) && this.currentLevelMobile++; //Uptail Customization\r\n (this.currentLevelMobile < this.supportedLevel && this.state.isBackBtnClicked === false && this.currentLevelMobile == 0) && this.currentLevelMobile++; //Uptail Customization\r\n menuItem && menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}\r\n {' '}\r\n \r\n );\r\n }\r\n } else {\r\n this.currentLevelMobile = 0; //Uptail Customization\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack ? this.setState(\r\n { parentMenu: item?.id }\r\n ) : this.setState(\r\n { parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText, mobileViewLabelLink: subMenus[i].linkURL }\r\n );\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _renderMobileSubMenu(menuItemData: IMenuItemData): JSX.Element | null {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined, menuItemData.linkText)}\r\n \r\n );\r\n }\r\n\r\n /* Uptail Customization - START - Display all option on 3rd level */\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy, index) => (\r\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\r\n ));\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) => (\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\r\n ));\r\n }\r\n return this._constructTopMenuItemData(mergedData);\r\n }\r\n\r\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\r\n const enableTopLevelMenu = this.props.config.enabletopMenu || false;\r\n if (!enableTopLevelMenu) {\r\n return mergedData;\r\n }\r\n const mergedRootMenuData: IMenuItemData[] = [];\r\n const topMenu = {\r\n id: 1,\r\n linkText: this.props.config.rootMenuNavigation || '...',\r\n linkURL: '#',\r\n imageSource: undefined,\r\n subMenu: mergedData\r\n } as IMenuItemData;\r\n mergedRootMenuData.push(topMenu);\r\n\r\n return mergedRootMenuData;\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _constructMenuItemData(retailItem?: CategoryHierarchy, cmsItem?: ICmsNavItemsData, isRetail?: boolean, idx?: number, addedAllMenu?: boolean): IMenuItemData {\r\n const locale = this.props.context && this.props.context.request && this.props.context.request.locale ? this.props.context.request.locale : 'en-us';\r\n const imageSouce = retailItem && retailItem.Images && retailItem.Images[0].Uri ? retailItem.Images[0].Uri : 'empty';\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenuView.RSItemIdInit++,\r\n linkText: NavigationMenuView.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n imageSource: imageSouce,\r\n subMenu: this._getNestedChildren(retailItem, imageSouce, addedAllMenu)\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenuView.CMSItemIdInit++,\r\n linkText: cmsItem && cmsItem.linkText || '',\r\n linkURL: cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl || '',\r\n imageDestinationURL: cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl || '',\r\n imageSource: cmsItem && cmsItem.image && cmsItem.image.src || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n if (!this.props.config.enabletopMenu && addedAllMenu) {\r\n nestedChildren.push({ linkText: this.props.resources.allCategoryMenuText, imageSource: imageSourceUrl, linkURL: getCategoryUrl(category, this.props.context as unknown as IActionContext, {}) });\r\n }\r\n category.Children.map((item: CategoryHierarchy, index) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource | undefined): void => {\r\n switch (sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n }\r\n /* UT Customization - END*/\r\n\r\n /* Uptail Customization - START*/\r\n private _getSubMenuLength = (menuItemId: number | undefined) => {\r\n const menuItem = menuItemId && menuItemId.toString();\r\n const htmlElement = menuItem && this.documentRef && this.documentRef.getElementById(menuItem);\r\n const menuItemHeight = htmlElement && htmlElement.offsetHeight;\r\n return menuItemHeight === 0 ? undefined : menuItemHeight;\r\n }\r\n /* Uptail Customization - END */\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false, menuItemData.linkText));\r\n } else {\r\n /* Uptail Customization - START */\r\n if (isMobileView) {\r\n return this._renderMobileSubMenu(menuItemData);\r\n }\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n \r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined)}\r\n \r\n \r\n \r\n );\r\n }\r\n /* Uptail Customization - END */\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n let updatedMenuItemData: IMenuItemData = menuItemData;\r\n /* Displayed static menu items as buttons in desktop view and as link menu items in mobile/iPad view */\r\n if (isMobileView) {\r\n return (this._renderLinkMenuItem(updatedMenuItemData));\r\n }\r\n return (this._renderButtonMenuItem(updatedMenuItemData));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData, menuItemData.id, true));\r\n }\r\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean, parentName?: string): JSX.Element | null {\r\n var showOptionAll = undefined;\r\n var isChild = IsSubMenu;\r\n const { isMobileView, ListItem, MenuList } = this.props;\r\n /* Uptail Customization - START */\r\n /* Added isMobileView condition to check this condition just for mobile to fill submenu by default in case of desktop */\r\n if (isMobileView && activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n /* Uptail Customization - END */\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n /* Uptail Customization - START - 02/11/20 */\r\n let _subMenus: IMenuItemData[];\r\n if (isChild === undefined && !showOptionAll) {\r\n if (!isMobileView) {\r\n // Second level menu will not include option 'All' on desktop\r\n _subMenus = subMenus && subMenus.filter(subItem => {\r\n return subItem.linkText && subItem.linkText.toLowerCase() !== 'all';\r\n });\r\n } else {\r\n // display parentName instead of all in third level on desktop\r\n let allOptionFound = false;\r\n _subMenus = subMenus;\r\n _subMenus && _subMenus.map(submenu => {\r\n if (!allOptionFound && submenu.linkText && submenu.linkText.toLowerCase() === 'all') {\r\n submenu.linkText = `${submenu.linkText} ${parentName}`;\r\n allOptionFound = true;\r\n }\r\n });\r\n }\r\n } else {\r\n // Third level menu\r\n // on desktop, do not show the all category menu on the third level\r\n _subMenus = subMenus;\r\n _subMenus = subMenus && subMenus.filter(subItem => {\r\n return subItem.linkText && subItem.linkText.toLowerCase() !== 'all';\r\n });\r\n }\r\n /* Uptail Customization - END */\r\n let levelClassName: string = '';\r\n const menuOptions = _subMenus && _subMenus.map((option: IMenuItemData, idx: number) => {\r\n let isActiveOption = option.id !== undefined && this.state.currentCategory === option.id;\r\n isActiveOption = isActiveOption && ('id' in option); // if any option doesn't have id value, its submenu will not be created\r\n const hasOptions = option.subMenu && option.subMenu.length > 0 || false;\r\n const renderChildMenu = isMobileView ? hasOptions : isActiveOption;\r\n\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView && this.currentLevelMobile < this.supportedLevel - 1) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx, activeMenu, isChild, parentName)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n let subMenu;\r\n if (renderChildMenu === true) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n /* Last parameter indicated if it is child or not */\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true, option.linkText);\r\n }\r\n }\r\n return (\r\n <>\r\n \r\n {menuItem}\r\n {/* Uptail Customization - START */}\r\n {isMobileView && subMenu}\r\n {/* Following node displays submenu against a menu item when user moves mouse on it on desktop*/}\r\n {!isMobileView &&\r\n \r\n \r\n {subMenu}\r\n \r\n \r\n }\r\n {/* Uptails Customization - END */}\r\n \r\n \r\n );\r\n });\r\n\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu));\r\n }\r\n /* Uptail Customization - end */\r\n\r\n /* UT Customization */\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n\r\n let showCannedSearches = false;\r\n const { Button, isMobileView } = this.props;\r\n\r\n if (this.props.context.request.query && this.props.context.request.query.showCannedSearches === 'true') {\r\n showCannedSearches = true;\r\n }\r\n\r\n if (isMobileView) {\r\n return (\r\n \r\n
\r\n {option.linkText}\r\n
\r\n \r\n );\r\n } else {\r\n /* Mouse Hover on menuitem displays its submenu till level 3 */\r\n /* Mouse Click on menuitem will navigate to its category page */\r\n return (\r\n\r\n \r\n
\r\n {option.linkText}\r\n
\r\n \r\n );\r\n }\r\n\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number,\r\n activeMenu?: number | undefined, _isChild?: boolean | undefined, parentName?: string): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const optionLinkText = (_isChild && linkText === parentName) ? {linkText} : linkText;\r\n /* Uptail Customization - START*/\r\n if (isMobileView) {\r\n return (\r\n \r\n {optionLinkText}\r\n \r\n );\r\n } else {\r\n /* onClick navigates to category page if clicked item is child item (level 3) */\r\n const onClick = _isChild ? { onClick: this._handleLinkClick(option.linkText) } : undefined;\r\n return (\r\n \r\n {optionLinkText}\r\n {(!_isChild && option.subMenu && option.subMenu.length > 0) ? : undefined}\r\n \r\n );\r\n }\r\n /* Uptail Customization - END*/\r\n }\r\n\r\n /* Uptail Customization - Following function sets value of previous current category in case of level 3 and option.id in case of level 2 */\r\n private _handleMouseHover = (optionID: number | undefined, _isChild?: boolean | undefined) => () => {\r\n const _activeItem = _isChild ? this.state.currentCategory : optionID;\r\n _activeItem !== undefined && this.setState({ currentCategory: _activeItem });\r\n }\r\n\r\n /* Uptail Customization - onClick navigates to category page if clicked item is child item */\r\n private _handleLinkClick = (linkURL: string | undefined) => () => {\r\n this._gotoCategoryPage(linkURL);\r\n }\r\n\r\n /* Uptail Customization - Following function navigate to category page */\r\n private _gotoCategoryPage = (categoryPageURL: string | undefined) => () => {\r\n if (categoryPageURL) {\r\n window.location.href = categoryPageURL;\r\n }\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n // Uptail Customization - categoryImageLink has been added\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView } = this.props;\r\n const categoryImageDisplay = !isMobileView && (showCategoryImage ) && ArrayExtensions.hasElements(this.state.categoryImage) ;\r\n //const { categoryImage, categoryImageLink } = this.state;\r\n this.currentLevel = 1;\r\n if (showCategoryImage) {\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n {\r\n categoryImageDisplay && this.state.categoryImage && this.state.categoryImage.map(item => (\r\n \r\n { this.state.categoryImage && this._getCategoryImage(item) }\r\n ))\r\n }\r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n \r\n );\r\n }\r\n\r\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n const linkText = option && option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n option.promotionalContent.map(item => {\r\n if (item && item.image) {\r\n const imageSrc = item.image.src;\r\n const promotionalItemImageSettings = item.image.imageSettings;\r\n promotionalImage.push({\r\n src: imageSrc, altText: item.text, imageSettings: promotionalItemImageSettings,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n });\r\n }\r\n this.setState({\r\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n categoryImageAltText: linkText\r\n });\r\n };\r\n\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId,\r\n currentCategory: undefined // Uptail Customization parent of third menu to render third level menu\r\n });\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n (this.currentLevelMobile < this.supportedLevel && this.state.isBackBtnClicked === false) && this.currentLevelMobile++;\r\n\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n mobileViewLabelLink: data.linkURL,\r\n parentMenu: parentId,\r\n isBackBtnClicked: false // Uptail Customization \r\n });\r\n\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n /* Uptail Customization - STRAT */\r\n this.setState({ activeMenu: this.state.parentMenu, isBackBtnClicked: true });\r\n this.currentLevelMobile--;\r\n /* Uptail Customization - END */\r\n this._resetFocus();\r\n };\r\n\r\n private readonly _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n if (this.menuNode && this.menuNode.current) {\r\n this.menuNode.current.focus();\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if ((this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) && (this.menuButtonsNode.current && !this.menuButtonsNode.current.contains(event.target as Node)) ) {\r\n this.setState(\r\n {\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n mobileViewLabelLink: '',\r\n categoryImage: null\r\n }\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleFocusOutside = (event: FocusEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '', mobileViewLabelLink: '' });\r\n }\r\n }\r\n\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n /*private _getCategoryImage = (categoryImage: string): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, this.props.context.actionContext.requestContext.apiSettings);\r\n if (categoryImageUrl !== undefined) {\r\n const ImageData: IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n */ \r\n\r\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n\r\n if (!categoryImage || !categoryImage.src) {\r\n return null;\r\n }\r\n\r\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\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 { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
    \n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
    \n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
    \n \n {this.state.isFilterExpanded ? (\n
      \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
    \n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
    \n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n
    \n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
    \n \n
    \n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
    \n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
    {pickupFilterByHeading}
    \n
    \n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\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 { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
    \n

    {resources.emptyLocationsText}

    \n
    \n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
    ;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
    \n \n
    \n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
    \n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
    \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 { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
    \n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
      \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
    \n {storeHoursList.map(displayTime => (\n
    \n {displayTime.endDayShort ? (\n
    \n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
    \n ) : (\n
    \n {displayTime.startDayShort}\n
    \n )}\n
    {displayTime.timeRange}
    \n
    \n ))}\n
    \n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
    \n {storeOpenFrom}-{storeOpenTo}\n
    \n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
    \n
    \n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
    \n
    \n
    \n

    {resources.contactInfoHeader}

    \n {storeAddress && (\n
    \n \n {storeAddress}\n
    \n )}\n {phoneNumber && (\n
    \n \n {phoneNumber}\n
    \n )}\n
    \n
    \n

    {resources.storeHoursHeader}

    \n {renderStoreHours(storeHours, location, resources)}\n
    \n {!storeLocatorView && (\n
    \n {!hideStockStatus &&

    {resources.availabilityInfoHeader}

    }\n {stockText &&

    {stockText}

    }\n {isCurrentLocation ? (\n

    {resources.currentLocation}

    \n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
    \n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
    \n {isError ? (\n \n \n ) : ('')}\n
    \n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps, IStoreSelectorViewProps } from './index';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
    \n
    {this.props.promoCodeHeadingText}
    \n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
    \n {storeHoursList?.map(displayTime => (\n
    \n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
    {displayTime.timeRange}
    \n
    \n ))}\n
    \n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
    \n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
    \n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
    \n \n {filteredDeliveryMode.Description}\n \n
    \n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
    {pickUpMethodLabel}
    \n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
    \n \n {currentStorePickUpOption}\n \n
      \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
    \n
    {pickupOptionDropdownError}
    \n
    \n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
    \n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
    \n {pickupDeliveryOptionErrorMessage}\n
    \n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
    \n
    \n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
    \n
    \n
    \n

    {locationLineItem.resources.contactInfoHeader}

    \n {storeAddress && (\n
    \n
    \n )}\n {phoneNumber && (\n
    \n \n {phoneNumber}\n
    \n )}\n
    \n
    \n

    {locationLineItem.resources.storeHoursHeader}

    \n {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\n
    \n {!storeLocatorView && !hideStockStatus && (\n
    \n

    {resources.availabilityInfoHeader}

    \n {stockText &&

    {stockText}

    }\n
    \n )}\n {isPreferredStoreEnabled &&\n (isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n ))}\n
    \n
    \n );\n};\n\n/**\n * Render Store Location.\n * @param location - The location props.\n * @param index - The location index.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocation = (\n location: IStoreSelectorLocationLineItemProps,\n index: number,\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n): JSX.Element | undefined => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n storeLocatorView,\n isCurrentLocation,\n isInStock,\n productPickUpOptionList,\n resources,\n storePickUpOptionList,\n telemetryContent\n } = location;\n\n const orgUnitLocation = location.location;\n const selectedStoreLocationId = location.selectedStoreLocationId;\n const defaultAriaSetsize = 0;\n const canSelectLocation = hideStockStatus || isInStock;\n const storeName = location.location.OrgUnitName;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const selectStoreText = props.resources.selectStoreText;\n const pickUpMethodLabel = props.resources.pickUpMethodLabel;\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n location.handlers.onSelected(location.location);\n };\n\n /**\n * Render Store Locations.\n * @param unitLocation - The org unit location.\n * @returns Handler for onClick.\n */\n const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\n location.onClick(unitLocation?.OrgUnitNumber);\n };\n\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n \n );\n const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\n\n return (\n \n \n {renderStoreLocationLineItem(location, props)}\n \n {!storeLocatorView &&\n (isCurrentLocation ? (\n

    {resources.currentLocation}

    \n ) : (\n pickUpMethodSelection\n ))}\n \n );\n};\n\n/**\n * Render Store Locations.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocations = (\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n) => {\n return (\n \n {props.locationListProps?.map((store, index) => {\n return renderStoreLocation(store, index, props, selectedLocationReference);\n })}\n \n );\n};\n\n/**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n};\n\n/**\n * Render the selected store.\n * @param selectedLocationProps -- Selected store view props.\n * @param storeSelectorViewProps -- Store selector view props.\n * @returns -- HTML.\n */\nexport const renderSelectedStore = (\n selectedLocationProps: ISelectedStoreViewProps,\n storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps\n): JSX.Element => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton,\n selectedStore\n } = selectedLocationProps;\n\n const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\n const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\n ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\n : [];\n const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\n const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\n const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\n '{StoreName}',\n storeNameValue ?? ''\n );\n const telemetryContent = getTelemetryObject(\n storeSelectorViewProps.context.request.telemetryPageName!,\n storeSelectorViewProps.friendlyName,\n storeSelectorViewProps.telemetry\n );\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\n const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\n const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\n const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\n const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\n const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\n const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\n };\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n selectedLocation && (\n \n )\n );\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n
    \n

    {storeSelectorViewProps.resources.contactText}

    \n {storeAddress && (\n
    \n
    \n )}\n {phoneNumber && (\n
    \n \n {phoneNumber}\n
    \n )}\n
    \n
    \n

    {storeSelectorViewProps.resources.timeText}

    \n {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\n
    \n {productAvailability && (\n
    \n

    {productAvailability}

    \n {stockStatus &&

    {stockStatus}

    }\n
    \n )}\n
    \n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
    \n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n \n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n"],"names":["navigationMenuSource","NavigationMenuView","React","constructor","props","super","currentLevel","supportedLevel","currentLevelMobile","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","this","cmsOnly","all","_getSubMenuLength","menuItemId","menuItem","toString","htmlElement","documentRef","getElementById","menuItemHeight","offsetHeight","undefined","_handleMouseHover","optionID","_isChild","_activeItem","state","currentCategory","setState","_handleLinkClick","linkURL","_gotoCategoryPage","categoryPageURL","window","location","href","_updateCategoryImage","categoryImageSrc","option","linkText","promotionalImage","src","altText","ArrayExtensions","hasElements","promotionalContent","map","item","image","imageSrc","promotionalItemImageSettings","imageSettings","push","text","additionalProperties","linkUrl","destinationUrl","categoryImage","length","categoryImageAltText","_handleDropdownToggle","data","parentId","isMobileView","isBackBtnClicked","isBackTrack","activeMenu","id","mobileViewLabelText","mobileViewLabelLink","parentMenu","scrollTo","top","left","behavior","showCategoryImage","imageSource","_resetFocus","_handleGoBack","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","menuButtonsNode","_handleFocusOutside","relatedTarget","_closeSubmenu","_getCategoryImage","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","_this$props$config$ca","generateImageUrl","context","actionContext","requestContext","apiSettings","Image","Object","assign","className","gridSettings","request","config","categoryImageSettings","loadFailureBehavior","role","scrollClass","menuItemData","_mapData","bind","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","componentDidMount","document","MsDyn365","isBrowser","body","addEventListener","componentWillUnmount","removeEventListener","render","MenuList","MobileBackButton","MobileDescriptionContainer","MobileDescriptionLabel","Navigation","resources","backButtonAriaLabel","Module","classnames","Node","ref","onClick","tabIndex","Link","_renderDisplay","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","key","_createMenuItemList","forEach","index","subMenus","subMenu","i","found","error","_renderMobileSubMenu","_renderButtonMenuItem","_renderSubMenu","mergedData","categories","result","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","locale","imageSouce","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","tag","style","height","updatedMenuItemData","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","parentName","isChild","_subMenus","allOptionFound","submenu","toLowerCase","filter","subItem","levelClassName","menuOptions","isActiveOption","hasOptions","renderChildMenu","_renderMenu","showCannedSearches","Button","query","_objectSpread","display","onMouseEnter","contentAction","etext","attributes","getTelemetryAttributes","optionLinkText","onTelemetryClick","onMouseOver","isParent","Span","onFocus","level","currentItem","DivContainer","ImageDivContainer","categoryImageDisplay","nameTranslations","nameTranslation","find","Language","Text","BusinessPartnerPromotionTermsParagraph","_ref","title","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","checked","onToggleTermOfServiceModal","termsOfServiceModalOpened","onSubmit","async","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","callerContext","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","heading","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","status","btnEnabled","viewProps","businessPartnerPromotionProps","moduleProps","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","type","termsOfServiceLinkText","onChange","termsOfServiceAgreementText","termsOfServiceModal","Modal","isOpen","horizontalPosition","verticalPosition","autoFocus","fade","toggle","ModalHeader","termsOfServiceModalHeading","ModalBody","submitButton","submitRequestLabel","disabled","renderView","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","label","user","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","renderCustomerName","accountInformation","customer","FirstName","Name","_renderReactFragment","items","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","search","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","link","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","_positionInSetOffset","escapeKey","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","categoryImageUrl","ImageData","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","_renderMobileMenu","_renderDesktopMenu","posinset","_renderDrawerMenu","setSize","_renderDrawer","keyValue","keys","isDrawerOpen","colProps","toggleButtonProps","ariaLabel","onToggle","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","haveSubmenu","Math","round","hoverEffect","imagesource","shouldOpenNewTab","_renderPromotionalLink","showPromotionalContent","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","histogramItem","buttonProps","starLabel","bar","percentage","histogramItems","histogramProps","componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","currentViewModeState","onClickHandler","newViewModeState","viewModeDetailedViewAttributes","TelemetryConstant","ViewMode","viewModeListViewAttributes","DetailedView","detailedViewOptionAriaLabel","ListView","listViewOptionAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","product","RecordId","catalogId","ProductComparisonState","instance","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","slots","productComparisonPreview","isDisabled","content","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","cookies","isConsentGiven","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","app","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","preventDefault","deliveryCode","currentTarget","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","delivery","Code","Description","onKeyDown","StoreSelectorLocationLines","orgUnitLocation","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","pickupDeliveryOptionErrorMessage","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","componentDidUpdate","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","hideStockStatus","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","value","_value$OrgUnitAvailab","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","Promise","resolve","renderPickupModesList","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","name","autoComplete","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","onTextChange","editableLink","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","replace","PickUpOptionList","eventsToBeBind","handleDocumentClick","_pickupListOptionButton","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","onChangeHandler","_props$selectedStore3","removePreferredStoreHandler","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","deliveryOptionList","pickupInStoreButtonText","pickupInStoreAriaLabel","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeName","OrgUnitName","distanceAsString","buildDistanceString","Distance","resourceLabel","stockLabel","stockText","canSelectLocation","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","secondsToTime","seconds","hours","floor","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","deliveryMode","distance","productdeliveryOptions","deliveryOption","pickup","_delivery","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","isError","setError","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","pickUpButtonClickHandler","StoreSelector","renderSelectedStore","shouldHideInventory","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","handleHeadingChange","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","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","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","maps","mapSlot","isMobileDevice","Viewport","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","classname","onClosed","HeaderContainerProps","HeaderProps","onEdit","FooterContainerProps","ModalFooter","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","then","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","_removePromotion","_event$currentTarget$","code","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","ApplyPromoCode","promoCodeHeadingText","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","links","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","Number","parseInt","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","_data$storeSelectorSt","displayMap"],"sourceRoot":""}