{"version":3,"file":"static/js/20.77ea4373c1eecbf3f8d1.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.props.autogenerated.ts?994e","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-small-components.tsx?64a1","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-location-line-item/eve-map-location-line-item.components.tsx?0c9c","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-location-lines.tsx?c9b3","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-search-form.tsx?d14a","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-line-pagination.tsx?9846","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.tsx?1e68","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.view.tsx?4d70","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/footer-item.view.tsx?eacc","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/footer-item.view.tsx?27ed","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/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/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.categorysuggest.tsx?6bcf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.mobile.empty.tsx?ff32","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.form.tsx?d41a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.keywordsuggest.tsx?2724","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.productsuggest.tsx?6616","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search.view.tsx?bfa7","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 * IEveMap 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 searchRadiusUnit {\r\n mi = 'mi',\r\n km = 'km'\r\n}\r\n\r\nexport interface IEveMapConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n pushpinOptions?: IPushpinOptionsData;\r\n className?: string;\r\n clientRender?: boolean;\r\n useChannelMfr?: boolean;\r\n autoSuggestionEnabled?: boolean;\r\n autoSuggestOptions?: IAutoSuggestOptionsData;\r\n searchRadiusUnit?: searchRadiusUnit;\r\n lookupRadius: number;\r\n pageLength: number;\r\n defaultLatitudeValue: number;\r\n defaultLongitudeValue: number;\r\n}\r\n\r\nexport interface IEveMapResources {\r\n searchPlaceholderText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n seeAllStoresText: string;\r\n milesShortText: string;\r\n kilometersShortText: string;\r\n contactText: string;\r\n emptyLocationsText: string;\r\n dealerCountMessage: string;\r\n dealerAllCountMessage: string;\r\n dealerCountMessageInKm: string;\r\n dealerDetailsText: string;\r\n dealerDetailsManufacturerCodeText: string;\r\n dealerDetailsLaborRateText: string;\r\n dealerDetailsDescriptionText: string;\r\n dealerDetailsNotesText: string;\r\n dealerDetailsContractCodeText: string;\r\n paginationPrev: string;\r\n paginationNext: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IPushpinOptionsData {\r\n size?: number;\r\n color?: string;\r\n selectionColor?: string;\r\n showIndex?: boolean;\r\n}\r\n\r\nexport interface IAutoSuggestOptionsData {\r\n maxResults?: number;\r\n}\r\n\r\nexport interface IEveMapProps extends Msdyn365.IModule {\r\n resources: IEveMapResources;\r\n config: IEveMapConfig;\r\n}\r\n","// import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IEveMapResources } from '../eve-map.props.autogenerated';\r\n\r\nexport interface IDealerSelectorEmptyMessageProps {\r\n resources: IEveMapResources;\r\n}\r\nexport const DealerSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

\r\n
\r\n);\r\n\r\nexport const DealerSelectorWaiting: React.FC = () =>
;\r\n\r\nexport interface IDealerSelectorFoundLocationsMessage {\r\n resources: IEveMapResources;\r\n locations?: IFullOrgUnitAvailability[];\r\n searchRadius: number;\r\n preferredDistanceUnit: string;\r\n // isSeeAllStore: boolean;\r\n}\r\nexport const DealerSelectorFoundLocationsMessage: React.FC = ({\r\n locations,\r\n searchRadius,\r\n resources,\r\n preferredDistanceUnit\r\n // isSeeAllStore\r\n}) => {\r\n if (locations) {\r\n const dealerCountMessage =\r\n preferredDistanceUnit === resources.milesShortText ? resources.dealerCountMessage : resources.dealerCountMessageInKm;\r\n return (\r\n
\r\n {/* {isSeeAllStore\r\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\r\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())} */}\r\n {dealerCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\n// import { OrgUnitContact } from '@msdyn365-commerce/retail-proxy';\r\n// import { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\nimport { IDealerLocation } from '../../eve-map';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface IDealerLocatorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n dealerDetailsHeader: string;\r\n dealerDetailsManufacturerCodeText: string;\r\n dealerDetailsLaborRateText: string;\r\n dealerDetailsDescriptionText: string;\r\n dealerDetailsNotesText: string;\r\n dealerDetailsContractCodeText: string;\r\n}\r\n\r\n/**\r\n * Store Locator line item props.\r\n */\r\nexport interface IDealerLocatorLocationLineItemProps {\r\n location: IDealerLocation;\r\n resources: IDealerLocatorLocationLineItemResources;\r\n index: string;\r\n preferredDistanceUnit: string;\r\n}\r\n\r\n/**\r\n * Function to render store hours.\r\n * @param storeHours - Store Hours object.\r\n * @param location - Store Unit.\r\n * @param resources - Resources.\r\n * @returns - Jsx element.\r\n */\r\nconst renderDealerDetails = (location: IDealerLocation, resources: IDealerLocatorLocationLineItemResources): JSX.Element | null => {\r\n const {\r\n dealerDetailsDescriptionText,\r\n // dealerDetailsLaborRateText,\r\n // dealerDetailsManufacturerCodeText\r\n dealerDetailsContractCodeText\r\n } = resources;\r\n\r\n // console.log('Rendering Details');\r\n if (location.ContractList) {\r\n // console.log(location);\r\n return (\r\n
\r\n {location.ContractList.length > 0\r\n ? location.ContractList.map(mfrCode => {\r\n return (\r\n <>\r\n
\r\n
\r\n

\r\n {`${mfrCode.ManufacturerCode} - ${mfrCode.ManufacturerName}`}\r\n

\r\n
\r\n
\r\n

\r\n \r\n {dealerDetailsContractCodeText}\r\n \r\n {mfrCode.ContractCode}\r\n

\r\n
\r\n
\r\n

\r\n \r\n {dealerDetailsDescriptionText}\r\n \r\n {mfrCode.ContractDescription}\r\n

\r\n
\r\n
\r\n \r\n );\r\n })\r\n : null}\r\n
\r\n );\r\n }\r\n return
;\r\n};\r\n\r\n/**\r\n * Function to retrun distance measure unit.\r\n * @param distance - Store location within radius.\r\n * @param preferredDistanceUnit - Unit configuration.\r\n * @param isLocationDisabled - Flag to check user location.\r\n * @returns - Unit of distance.\r\n */\r\nexport const buildDistanceString = (\r\n distance: number | undefined,\r\n preferredDistanceUnit: string,\r\n isLocationDisabled?: boolean\r\n): string | undefined => {\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < 1) {\r\n return `(<1 ${preferredDistanceUnit})`;\r\n }\r\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\r\n};\r\n\r\n/**\r\n * Function to store contact.\r\n * @param contacts - Store location within radius.\r\n * @returns - Return primary contact number of store.\r\n */\r\n// const extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n// if (!contacts) {\r\n// return undefined;\r\n// }\r\n\r\n// const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\r\n\r\n// if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n// const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n// if (primaryPhoneContact) {\r\n// return primaryPhoneContact.Locator;\r\n// }\r\n\r\n// return allPhoneContacts[0].Locator;\r\n// }\r\n\r\n// return undefined;\r\n// };\r\n\r\n/**\r\n * Renders store location line items.\r\n * @param props - Store location line items props.\r\n * @returns - HTML.\r\n */\r\nconst dealerLocatorLocationLineItem: React.FC = (props: IDealerLocatorLocationLineItemProps) => {\r\n const { location, resources, index } = props;\r\n\r\n // console.log(location);\r\n\r\n const storeName: string | undefined = location.OrgUnitName;\r\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit);\r\n const storeAddress: string | undefined = location.Address;\r\n // TODO: Need to fix the phone number portion when we actually have a phone number to use\r\n // const phoneNumber: string | undefined = extractPhoneNumber(location.PhoneNumber);\r\n\r\n const channelId: number | undefined = location.ChannelId;\r\n\r\n return (\r\n
\r\n
\r\n {/* {(shouldShowIndex || storeLocatorView) && {index}} */}\r\n {{index}}\r\n {storeName}\r\n {distanceAsString ? {distanceAsString} : false}\r\n
\r\n
\r\n
\r\n {/*

{resources.contactInfoHeader}

*/}\r\n {storeAddress && (\r\n
\r\n \r\n {storeAddress}\r\n
\r\n )}\r\n {/* TODO: Fix the phone number section when/if there is phone number data to display */}\r\n {/* {phoneNumber && (\r\n
\r\n \r\n {phoneNumber}\r\n
\r\n )} */}\r\n
\r\n
\r\n

{resources.dealerDetailsHeader}

\r\n {renderDealerDetails(location, resources)}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Store location line item component.\r\n */\r\nexport const DealerLocatorLocationLineItemComponent = dealerLocatorLocationLineItem as (\r\n props: IDealerLocatorLocationLineItemProps\r\n) => JSX.Element;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IEveMapResources } from '../eve-map.props.autogenerated';\r\nimport { IDealerLocatorLocationLineItemResources, DealerLocatorLocationLineItemComponent } from './eve-map-location-line-item';\r\nimport { IDealerLocations, IDealerLocation } from '../eve-map';\r\n\r\n/**\r\n * Store selector location lines props interface.\r\n */\r\nexport interface IStoreSelectorLocationLinesProps {\r\n locations?: IDealerLocations[];\r\n resources: IEveMapResources;\r\n preferredDistanceUnit?: string;\r\n selectedStoreLocationId?: string;\r\n displayList?: boolean;\r\n onClick: (locationId: string | undefined) => void;\r\n}\r\n\r\n/**\r\n * Displays all the location line items, or null if none exists.\r\n */\r\n@observer\r\nexport class DealerLocatorLocationLines extends React.PureComponent {\r\n @observable private _stores: IDealerLocations[] | undefined;\r\n\r\n private readonly selectedLocationRef: React.RefObject;\r\n\r\n private storeCounter: number;\r\n\r\n public constructor(props: IStoreSelectorLocationLinesProps) {\r\n super(props);\r\n this.selectedLocationRef = React.createRef();\r\n this.storeCounter = 0;\r\n }\r\n\r\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\r\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\r\n this._scrollIntoView();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.locations) {\r\n this._stores = [...this.props.locations];\r\n }\r\n\r\n reaction(\r\n () => this.props.locations,\r\n () => {\r\n if (this.props.locations) {\r\n this._stores = [...this.props.locations];\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!ArrayExtensions.hasElements(this._stores)) {\r\n return null;\r\n }\r\n this.storeCounter = 0;\r\n\r\n return (\r\n
\r\n {this._stores.map((store, index) => {\r\n return this._renderStoreLocation(store, index);\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On click Handler function.\r\n * @param orgUnitLocation -OrgUnit location.\r\n * @returns Click action on orgUnit Location.\r\n */\r\n private readonly onClickHandler = (orgUnitLocation: IDealerLocation | undefined) => () => {\r\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\r\n };\r\n\r\n private _renderStoreLocation(store: IDealerLocations, index: number): JSX.Element | undefined {\r\n const orgUnitLocation = store?.OrgUnitLocation;\r\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\r\n const defaultAriaSetsize = 0;\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return (\r\n \r\n \r\n
\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Scroll into view.\r\n */\r\n private readonly _scrollIntoView = () => {\r\n // scroll into view to have the page scroll to the top of the list when the page changes.\r\n const selectedLocationDiv = this.selectedLocationRef.current;\r\n const parent = selectedLocationDiv?.parentElement;\r\n if (selectedLocationDiv && parent) {\r\n // if (parent.scrollTop + parent.clientHeight > selectedLocationDiv.offsetTop) {\r\n // parent.scrollTop = selectedLocationDiv.offsetTop - parent.offsetTop - 20;\r\n // } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\r\n // // parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\r\n // }\r\n\r\n // Set the parent to the location of the selected dealer and slide it down by a small 20 px buffer.\r\n parent.scrollTop = selectedLocationDiv.offsetTop - parent.offsetTop - 20;\r\n }\r\n };\r\n\r\n /**\r\n * Is current location.\r\n * @param location - Org unit location.\r\n * @returns The current location.\r\n */\r\n // private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\r\n // (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\r\n // false;\r\n\r\n /**\r\n * Map resources.\r\n * @param resources - Store resoureces.\r\n * @returns Resources.\r\n */\r\n private readonly _mapResources = (resources: IEveMapResources): IDealerLocatorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n dealerDetailsHeader: resources.dealerDetailsText,\r\n dealerDetailsManufacturerCodeText: resources.dealerDetailsManufacturerCodeText,\r\n dealerDetailsLaborRateText: resources.dealerDetailsLaborRateText,\r\n dealerDetailsDescriptionText: resources.dealerDetailsDescriptionText,\r\n dealerDetailsNotesText: resources.dealerDetailsNotesText,\r\n dealerDetailsContractCodeText: resources.dealerDetailsContractCodeText\r\n };\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { KeyCodes } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Selector Search Form Props interface.\r\n */\r\nexport interface IDealerLocatorSearchFormProps {\r\n resources: {\r\n searchInputAriaLabel: string;\r\n searchButtonAriaLabel: string;\r\n searchPlaceholderText: string;\r\n seeAllStoresText: string;\r\n };\r\n id: string;\r\n value: string;\r\n performSearch(searchTerm: string): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n}\r\n\r\n/**\r\n * Simple search form consisting of search text and a search button.\r\n */\r\nexport class DealerLocatorSearchForm extends React.PureComponent {\r\n private readonly searchBoxRef: React.RefObject = React.createRef();\r\n\r\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private previousValue: string = '';\r\n\r\n private isSearchResultOpened: boolean = false;\r\n\r\n public constructor(props: IDealerLocatorSearchFormProps) {\r\n super(props);\r\n this.state = { value: '' };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: { searchButtonAriaLabel, searchPlaceholderText },\r\n id,\r\n value\r\n } = this.props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handles the key press on the input box.\r\n * @param event - Event object.\r\n */\r\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\r\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\r\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\r\n // In order to avoid that. Checking if the search result is open or not.\r\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\r\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\r\n if (activeDescedantValue) {\r\n if (this.previousValue === '') {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n return;\r\n }\r\n\r\n if (activeDescedantValue !== this.previousValue) {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n } else {\r\n this.isSearchResultOpened = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method called on search text changed.\r\n * @param event - Input value.\r\n */\r\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\r\n const inputValue: string = event.target.value;\r\n\r\n await this.props.searchTermChanged(inputValue);\r\n };\r\n\r\n /**\r\n * Method called on search submit.\r\n * @param event - Input value.\r\n */\r\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\r\n event.preventDefault(); // Prevents form submission\r\n this.searchBoxRef.current?.blur();\r\n if (!this.isSearchResultOpened) {\r\n await this.props.performSearch(this.props.value);\r\n }\r\n this.isSearchResultOpened = false;\r\n };\r\n}\r\n","import React from 'react';\r\n// import { ICartResources } from '../../definition-extensions/cart.ext.props.autogenerated';\r\n// import { ICheckoutResources } from '../../definition-extensions/checkout.ext.props.autogenerated';\r\n\r\ninterface IEveLinePaginationProps {\r\n nextPage: (e: React.MouseEvent) => void;\r\n prevPage: (e: React.MouseEvent) => void;\r\n changePage: (page: number) => void;\r\n currentPage: number;\r\n numPages: number;\r\n prev: string;\r\n next: string;\r\n}\r\n\r\n/**\r\n * Renders pagination navigation on the page, which displays 4 buttons that allow\r\n * user to navigate to the first, last, next or previous pages. Also displays\r\n * the current page out of the total number of pages. ( ie. 5/7 )\r\n *\r\n * @param {(e: React.MouseEvent) => void} nextPage\r\n * @param {(e: React.MouseEvent) => void} prevPage\r\n * @param {(page: number) => void} changePage\r\n * @param {number} currentPage\r\n * @param {number} numPages\r\n * @param {ICartResources} resources\r\n * @return {*} {React.ReactNode}\r\n */\r\nexport const EveLinePagination: React.FC = ({\r\n nextPage,\r\n prevPage,\r\n changePage,\r\n currentPage,\r\n numPages,\r\n prev,\r\n next\r\n}) => {\r\n const firstPage: number = 1;\r\n const baseClassName = 'eve-pagination';\r\n\r\n return (\r\n
\r\n {numPages > 1 && (\r\n <>\r\n <>\r\n changePage(1)}\r\n >\r\n {`${firstPage}`}\r\n \r\n \r\n {prev}\r\n \r\n \r\n
\r\n \r\n {currentPage} / {numPages}\r\n \r\n
\r\n <>\r\n \r\n {next}\r\n \r\n changePage(numPages)}\r\n >\r\n {`${numPages}`}\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/// \r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleProps, NodeTag, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport * as _ from 'lodash';\r\n\r\nimport { IEveMapData } from './eve-map.data';\r\nimport { IEveMapProps, IPushpinOptionsData, searchRadiusUnit as SearchRadiusUnit } from './eve-map.props.autogenerated';\r\nimport getDealerLocations, { GetDealerLocationsInput } from '../../actions/get-dealer-locations.action';\r\nimport { IDealerEntity } from '../../actions/DataServiceEntities.g';\r\nimport { getDealerDetailsAsync } from '../../actions/DataActionExtension.g';\r\nimport {\r\n DealerSelectorWaiting,\r\n DealerSelectorEmptyMessage,\r\n DealerSelectorFoundLocationsMessage,\r\n DealerLocatorLocationLines,\r\n DealerLocatorSearchForm\r\n} from './components';\r\nimport { EveLinePagination } from './components/eve-line-pagination';\r\n\r\n/**\r\n * Header Interface.\r\n */\r\nexport interface IHeader {\r\n headerProps: INodeProps;\r\n heading: React.ReactNode;\r\n}\r\n\r\n/**\r\n * MapViewProps Interface.\r\n */\r\nexport interface IMapViewProps extends IEveMapProps {\r\n ModuleProps: IModuleProps;\r\n Header: IHeader;\r\n MapProps: INodeProps;\r\n Map: Microsoft.Maps.Map | undefined;\r\n locationsMessage?: React.ReactNode;\r\n search?: React.ReactNode;\r\n spinner?: React.ReactNode;\r\n locationsList?: React.ReactNode;\r\n noLocationsMessage?: React.ReactNode;\r\n dealerResultContainerProps?: INodeProps;\r\n state: IEveMapState;\r\n pagination: React.ReactNode;\r\n}\r\n\r\n/**\r\n * EveMap State Interface.\r\n */\r\nexport interface IEveMapState {\r\n searchTerm?: string;\r\n isSearchInProgress: boolean;\r\n distanceResults: IDistanceResults;\r\n mapSessionId: string | undefined;\r\n dealerLocations: IFullOrgUnitAvailability[] | undefined;\r\n newDealerLocations: IDealerLocations[] | undefined;\r\n // state value that will store the current page\r\n currentPage: number;\r\n}\r\n\r\nexport interface ICoordinates {\r\n latitude: number;\r\n longitude: number;\r\n}\r\n\r\nexport interface IDistanceMatrixResult {\r\n destinationIndex: number;\r\n originIndex: number;\r\n totalWalkDuration: number;\r\n // travelDistance arrives in kilometers\r\n travelDistance: number;\r\n travelDuration: number;\r\n}\r\n\r\nexport interface IDistanceResults {\r\n originCoords: ICoordinates;\r\n resultsCoords: IDistanceMatrixResult[];\r\n}\r\n\r\nexport interface IDealerLocation {\r\n ChannelId?: number;\r\n Latitude?: number;\r\n Longitude?: number;\r\n OrgUnitName?: string;\r\n OrgUnitNumber?: string;\r\n Address?: string;\r\n PhoneNumber?: string;\r\n Distance?: number;\r\n ContractCode?: string;\r\n ContractCompensationRate?: number;\r\n ContractDescription?: string;\r\n ContractLaborRate?: number;\r\n ContractListedUnlisted?: boolean;\r\n ContractNotes?: string;\r\n ContractStatus?: boolean;\r\n ManufacturerCode?: string;\r\n ContractList?: IDealerEntity[];\r\n RecId?: number;\r\n}\r\n\r\nexport interface IDealerLocations {\r\n OrgUnitAvailability?: {\r\n OrgUnitLocation?: IDealerLocation;\r\n };\r\n OrgUnitLocation?: IDealerLocation;\r\n}\r\n\r\n// xoxo - does this actually need to be here?\r\nexport interface IEveMapPropsExtended extends IEveMapProps {\r\n mapData: any;\r\n}\r\n\r\n/**\r\n *\r\n * Map component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass Map extends React.PureComponent {\r\n @observable public map: Microsoft.Maps.Map | undefined;\r\n\r\n @observable public selectedDealer: IDealerEntity[] | undefined;\r\n\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n\r\n private readonly mapRef: React.RefObject = React.createRef();\r\n\r\n private readonly kmToMiValue: number = 1.609;\r\n\r\n private readonly defaultLookUpRadius: number = 200;\r\n\r\n private readonly defaultPageLength: number = 20;\r\n\r\n public constructor(props: IEveMapPropsExtended) {\r\n super(props);\r\n this.state = {\r\n searchTerm: '',\r\n isSearchInProgress: true,\r\n distanceResults: { originCoords: { latitude: 0, longitude: 0 }, resultsCoords: [] },\r\n dealerLocations: [],\r\n newDealerLocations: [],\r\n mapSessionId: undefined,\r\n // set the page to the first page when the module first renders\r\n currentPage: 1\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\r\n } = this.props;\r\n\r\n // // Adding Timeout to make sure it loads the data based upon the preferred store.\r\n setTimeout(() => {\r\n this._getAndUpdateStoreLocation();\r\n }, 0);\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (!context || context.id === this.props.id) {\r\n await this._searchTermChanged('');\r\n this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\r\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\r\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n\r\n this.map?.setOptions({ navigationBarMode: Microsoft.Maps.NavigationBarMode.minified });\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n this._initMap();\r\n this._updateMap();\r\n }\r\n\r\n when(\r\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n () => {\r\n this._initMap();\r\n }\r\n );\r\n\r\n reaction(\r\n () => {\r\n return [\r\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\r\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n this.map\r\n ];\r\n },\r\n () => {\r\n this._updateMap();\r\n }\r\n );\r\n\r\n if (isAutoSuggestionEnabled) {\r\n when(\r\n () => {\r\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\r\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\r\n return isMapApiLoaded && isDialogOpen && isSameContext;\r\n },\r\n () => {\r\n setTimeout(async () => {\r\n await this._attachMapAutoSuggest();\r\n }, 0);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(): boolean {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n if (context && context.id === this.props.id) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { heading, className, lookupRadius, searchRadiusUnit },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n resources\r\n } = this.props;\r\n\r\n const { newDealerLocations, currentPage } = this.state;\r\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\r\n const preferredDistanceUnit = searchRadiusUnit === SearchRadiusUnit.km ? resources.kilometersShortText : resources.milesShortText;\r\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const pageLength = this.props.config.pageLength || this.defaultPageLength;\r\n const paginatedLocationsList = newDealerLocations?.slice((currentPage - 1) * pageLength, pageLength * currentPage);\r\n const numPages = newDealerLocations ? Math.ceil(newDealerLocations.length / pageLength) : 1;\r\n\r\n const nextPage = () => {\r\n changePage(this.state.currentPage + 1);\r\n };\r\n\r\n const prevPage = () => {\r\n changePage(this.state.currentPage - 1);\r\n };\r\n\r\n const changePage = (page: number) => {\r\n // Don't make a page change if it is below the first page or greater than the last page\r\n if (page <= 0 || page > numPages) {\r\n return;\r\n }\r\n\r\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\r\n\r\n const scrollElement = document.querySelector('div.ms-store-select__locations.show');\r\n\r\n if (scrollElement !== null) {\r\n scrollElement.scrollTop = 0;\r\n }\r\n\r\n this.setState(\r\n { currentPage: page },\r\n // Rerender the map with pins for current page\r\n () => this._updateMap()\r\n );\r\n };\r\n const pagination = (\r\n \r\n );\r\n\r\n const viewProps: IMapViewProps = {\r\n ...this.props,\r\n state: this.state,\r\n ModuleProps: {\r\n tag: 'div',\r\n moduleProps: this.props,\r\n className: classname('ms-map', { show: shouldDisplayMap }, className)\r\n },\r\n Header: {\r\n headerProps: { className: 'ms-map__header' },\r\n heading: heading?.text && (\r\n \r\n )\r\n },\r\n dealerResultContainerProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__dealer_container'\r\n },\r\n spinner: ,\r\n noLocationsMessage: ,\r\n locationsMessage: (\r\n \r\n ),\r\n locationsList:\r\n ArrayExtensions.hasElements(newDealerLocations) && newDealerLocations[0].OrgUnitLocation ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n search: (\r\n \r\n ),\r\n pagination,\r\n MapProps: {\r\n tag: 'div',\r\n className: 'ms-map__body',\r\n ref: this.mapRef\r\n },\r\n Map: this.map\r\n };\r\n this._updateMap();\r\n if (newDealerLocations) {\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n return <>;\r\n }\r\n\r\n /**\r\n * Initialize Map AutoSuggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n config: { autoSuggestOptions },\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n /**\r\n * Callback for the autosuggest API.\r\n */\r\n callback: () => {\r\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(\r\n `#ms-store-select__search-box_${this.props.id}`,\r\n `#ms-store-select__search-box-container_${this.props.id}`,\r\n this._onSuggestionSelected\r\n );\r\n },\r\n\r\n /**\r\n * Error call back for autosuggest API.\r\n */\r\n errorCallback: () => {\r\n if (telemetry) {\r\n telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: channel?.BingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * On Selecting Location Suggestion.\r\n * @param result - Map Suggestions List.\r\n */\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (context && context.id === this.props.id) {\r\n await this._searchTermChanged(result.formattedSuggestion);\r\n await this._performSearch(result.formattedSuggestion);\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called updating the store location.\r\n * @param shouldShowAllStores - Flag to show all stores.\r\n */\r\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: true });\r\n if (navigator?.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n async position => {\r\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\r\n this.setState({ isSearchInProgress: true });\r\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n async error => {\r\n // If the location setting is turned off\r\n if (error.PERMISSION_DENIED) {\r\n await this._searchTermChanged('');\r\n await this._updateLocations(0, 0, 0);\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n { timeout: 2000 }\r\n );\r\n } else {\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called on heading change.\r\n * @param event -Content Edit Event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Initialize the map.\r\n */\r\n private readonly _initMap = () => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\r\n credentials: channel?.BingMapsApiKey || '',\r\n pushpinAccessible: true\r\n });\r\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\r\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\r\n });\r\n this.map.getCredentials((credentials: string) => {\r\n // TODO: Need to figure out why using map session id in place of api key does not work.\r\n this.setState({ mapSessionId: credentials });\r\n });\r\n this._updateMap();\r\n }\r\n };\r\n\r\n /**\r\n * Update the map.\r\n */\r\n private readonly _updateMap = () => {\r\n const pushpinOptions: IPushpinOptionsData = { ...this.props.config.pushpinOptions };\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\r\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n if (this.map && orgUnitStoreInformation) {\r\n let mapLocation: OrgUnitLocation | undefined;\r\n this.map.entities.clear();\r\n const pushpins: Microsoft.Maps.Pushpin[] = [];\r\n pushpinOptions.color = pushpinOptions?.color ?? '#46555D';\r\n pushpinOptions.selectionColor = pushpinOptions?.selectionColor ?? '#003B64';\r\n pushpinOptions.size = pushpinOptions?.size ?? 1.25;\r\n pushpinOptions.showIndex = pushpinOptions?.showIndex ?? true;\r\n\r\n const currentPage = this.state.currentPage || 1;\r\n const pageLength = this.props.config.pageLength || this.defaultPageLength;\r\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitLocation !== undefined);\r\n const paginatedList = storeLocationList.slice((currentPage - 1) * pageLength, pageLength * currentPage);\r\n\r\n // for (const [index, unitStoreInfo] of storeLocationList.entries()) {\r\n for (const [index, unitStoreInfo] of paginatedList.entries()) {\r\n const storeLocation = unitStoreInfo.OrgUnitLocation;\r\n\r\n if (storeLocation?.Latitude && storeLocation.Longitude) {\r\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\r\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\r\n const pushpin = new Microsoft.Maps.Pushpin(\r\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\r\n options\r\n );\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\r\n this.handleClickEvent(storeLocation.OrgUnitNumber);\r\n });\r\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\r\n\r\n if (isSelectedLocation) {\r\n mapLocation = storeLocation;\r\n }\r\n }\r\n }\r\n\r\n if (mapLocation) {\r\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\r\n this.map.setView({ center: currentLocation });\r\n } else {\r\n // Create a LocationRect from array of pushpins and set the eve-map view.\r\n this.map.setView({\r\n // @ts-ignore\r\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins),\r\n padding: 80\r\n });\r\n }\r\n\r\n let clusterLayer;\r\n // //Load the Clustering module.\r\n Microsoft.Maps.loadModule('Microsoft.Maps.Clustering', function() {\r\n //Create a ClusterLayer and add it to the map.\r\n clusterLayer = new Microsoft.Maps.ClusterLayer(pushpins);\r\n });\r\n if (clusterLayer) {\r\n this.map.layers.clear();\r\n this.map.layers.insert(clusterLayer);\r\n }\r\n this.map.setOptions({ pushpinAccessible: true });\r\n }\r\n };\r\n\r\n /**\r\n * Handle click event.\r\n * @param orgUnitNumber - Organization unit number.\r\n */\r\n private readonly handleClickEvent = async (orgUnitNumber: string | undefined): Promise => {\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\r\n const currentSelectedStore = storeSelectorStateManager?.selectedStoreLocationId;\r\n if (currentSelectedStore === orgUnitNumber) {\r\n return;\r\n }\r\n if (storeSelectorStateManager && storeSelectorStateManager.context && storeSelectorStateManager.context.orgUnitStoreInformation) {\r\n storeSelectorStateManager.setSelectedStoreLocationId(undefined);\r\n\r\n // Add conditional to check to see if ContractList exists or not\r\n if (orgUnitNumber) {\r\n const dealerDetails = await getDealerDetailsAsync({ callerContext: this.props.context.actionContext }, orgUnitNumber);\r\n this.selectedDealer = dealerDetails;\r\n const tempDealerLocations = [...(this.state.newDealerLocations || [])];\r\n const index = tempDealerLocations.findIndex(loc => loc.OrgUnitLocation?.OrgUnitNumber === orgUnitNumber);\r\n if (tempDealerLocations[index].OrgUnitLocation) {\r\n tempDealerLocations[index].OrgUnitLocation!.ContractList = dealerDetails;\r\n }\r\n\r\n this.setState(prev => {\r\n return {\r\n ...prev,\r\n newDealerLocations: tempDealerLocations\r\n };\r\n });\r\n\r\n if (orgUnitNumber) {\r\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called on search.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _performSearch = async (searchTerm: string): Promise => {\r\n const {\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!searchTerm || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: true });\r\n\r\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\r\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\r\n if (location) {\r\n await this._updateLocations(location.latitude, location.longitude);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n };\r\n\r\n /**\r\n * Method to be called on search term changed.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\r\n this.setState({ searchTerm });\r\n };\r\n\r\n /**\r\n * Method to update user location.\r\n * @param latitude - User location.\r\n * @param longitude - User location.\r\n * @param radius - Search Criteria Radius.\r\n * @returns Void promise.\r\n */\r\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\r\n const {\r\n config: { lookupRadius, searchRadiusUnit, defaultLatitudeValue, defaultLongitudeValue },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.km ? 1 : 0;\r\n const lookupDistanceInMiles = lookupRadius\r\n ? distanceUnitValue\r\n ? Math.round(lookupRadius / this.kmToMiValue)\r\n : lookupRadius\r\n : this.defaultLookUpRadius;\r\n\r\n let localLatitude = latitude || defaultLatitudeValue;\r\n let long = longitude || defaultLongitudeValue;\r\n\r\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\r\n if (lastInlineStoreLocation && !this.state.searchTerm) {\r\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\r\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\r\n }\r\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\r\n await this.getOrgUnitLocationByArea(lookupDistanceInMiles, distanceUnitValue, localLatitude, long);\r\n return;\r\n };\r\n\r\n /**\r\n * Get org unit location by area.\r\n * @param calRadius - Radius.\r\n * @param distanceUnitValue - Distance unit value.\r\n * @param latitude - Latitude.\r\n * @param longitude - Longitude.\r\n * @returns - Returns a void promise.\r\n */\r\n private readonly getOrgUnitLocationByArea = async (\r\n calRadius: number,\r\n distanceUnitValue: number,\r\n latitude?: number,\r\n longitude?: number\r\n ): Promise => {\r\n const {\r\n config: { useChannelMfr },\r\n context: { actionContext }\r\n } = this.props;\r\n\r\n const newOrgUnitLocationsInput = new GetDealerLocationsInput(useChannelMfr || false, latitude || 0, longitude || 0, calRadius);\r\n const newOrgUnits = await getDealerLocations(newOrgUnitLocationsInput, actionContext);\r\n if (newOrgUnits && this.state.newDealerLocations) {\r\n void this._setOrgUnitStoreInformation(newOrgUnits).then(() => {\r\n this.setState({ newDealerLocations: [...newOrgUnits] });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to set store info.\r\n * @param orgUnitStoreInformation - Store Info Object.\r\n * @returns Void promise.\r\n */\r\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n telemetry\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const context = storeSelectorStateManager.context;\r\n const moduleId: string = context?.id ? context.id : this.props.id;\r\n let input: IStoreSelectionStateContext = {\r\n /**\r\n * On Location selected.\r\n * @returns - Returns promise.\r\n */\r\n onLocationSelected: async () => {\r\n return Promise.resolve();\r\n }\r\n };\r\n\r\n if (storeSelectorStateManager.context) {\r\n input = storeSelectorStateManager.context;\r\n }\r\n\r\n input = {\r\n ...input,\r\n id: moduleId,\r\n showMapViewLink: context?.showMapViewLink,\r\n parentElementRef: context?.parentElementRef,\r\n orgUnitStoreInformation: orgUnitStoreInformation,\r\n product: context?.product\r\n };\r\n\r\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\r\n if (telemetry) {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to Update store location state');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get the pushpin option.\r\n * @param isSelectedLocation - Is selected location.\r\n * @param index - Index.\r\n * @param pushpinOptions - PushpinOptions.\r\n * @returns - The pushpin options.\r\n */\r\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\r\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\r\n\r\n const size = pushpinOptions?.size || 1;\r\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\r\n const icon = this._getSvgIcon(size, color, text);\r\n\r\n return {\r\n // Fallback if icon doesn't render properly\r\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\r\n icon\r\n };\r\n };\r\n\r\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\r\n const baseValue: number = 32;\r\n return `\r\n \r\n ${text ? `${text}` : ''}\r\n `;\r\n };\r\n}\r\n\r\nexport default Map;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { /*IHeader,*/ IMapViewProps } from './eve-map';\r\n\r\n/**\r\n * Render the heading.\r\n * @param param0 -- Heading props.\r\n * @param param0.headerProps -- Heading Props.\r\n * @param param0.heading -- Heading Node.\r\n * @returns -- Returns the node.\r\n */\r\n// const MapHeader: React.FC = ({ headerProps, heading }) => {heading};\r\n\r\n/**\r\n * Renders the map view props.\r\n * @param param0 -- Map view props.\r\n * @param param0.ModuleProps -- Module props.\r\n * @param param0.Header -- Header props.\r\n * @param param0.MapProps -- Map props.\r\n * @returns -- Returns the map module.\r\n */\r\nconst MapView: React.FC = props => {\r\n const { ModuleProps, MapProps } = props;\r\n return (\r\n \r\n
\r\n {renderDealerList(props)}\r\n {/* Not using the map header - can remove and disable the configuration field? */}\r\n {/* {Header && }, */}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst renderDealerList: React.FC = props => {\r\n const {\r\n dealerResultContainerProps,\r\n locationsMessage,\r\n search,\r\n state,\r\n spinner,\r\n locationsList,\r\n noLocationsMessage,\r\n pagination\r\n // selectedLocation,\r\n // dealerDetailsModal // may just have the details appear by extending the selected dealer in the list\r\n } = props;\r\n return (\r\n \r\n {locationsMessage}\r\n {search}\r\n {/* {pagination} */}\r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}\r\n // {/* <>{noLocationsMessage} */}\r\n }\r\n {pagination}\r\n {/* Make the renderSelectedDealer function work??? */}\r\n {/* {selectedLocation && renderSelectedDealer(selectedLocation)} */}\r\n \r\n );\r\n};\r\n\r\nexport default MapView;\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\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 IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\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 IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\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 IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress,\n note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\n * Copyright (c) Microsoft Corporation.\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 {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n

{countTitle}

\n
\n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {renderCartLinesGroupHeader(\n cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\n */\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

\n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

\n );\n return (\n
\n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n note,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Categories heading.\n * @param inCategoriesHeading - The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\n\n return
{categoryAutoSuggestionHeading}
;\n};\n\n/**\n * Render Categories suggestion result.\n * @param inCategoriesHeading - The Categories result heading.\n * @param noResultText - The \"No Result\" text.\n * @param props - The Categories suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const CategorySuggestionsComponent = (\n inCategoriesHeading: string,\n noResultText: string,\n props: ISearchViewProps & ISearchProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n
  • {noResultText}
  • \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n const imageSettings = {\n lazyload: true,\n viewports: {\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\n }\n };\n return (\n \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param props -The props.\n * @returns The JSX Element.\n */\nexport const MobileAutoSuggestEmptyComponent = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    \n
    {props.resources.emptyMobileSearchTextHeading}
    \n
    {props.resources.emptyMobileSearchText}
    \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 { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\n\n/**\n * Render Clear button for mobile viewport.\n * @param clearSearchButtonText -The Clear button text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\n return (\n \n );\n};\n\n/**\n * Render Search form.\n * @param form -Form view props.\n * @param searchForm -Search Form props.\n * @param formWrapper -Form Wrapper props.\n * @param isMobile -Is mobile viewport flag.\n * @param clearSearchButtonText -The Clear button text.\n * @param props -The props for resource.\n * @param isSearchText -Is SearchText flag for input text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nexport const FormComponent = (\n form: ISearchFormViewProps,\n searchForm: INodeProps,\n formWrapper: INodeProps,\n isMobile: boolean,\n clearSearchButtonText: string,\n props: ISearchProps,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n \n );\n\n return isMobile ? (\n \n {form.cancelBtn}\n \n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n \n \n ) : (\n \n \n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\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 { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Render keywords heading.\n * @param keywordsHeading -The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render keywords reults.\n * @param keywordSuggest -The Keywords suggest Node props.\n * @param ulKeyword -The List Node props.\n * @param keywordsHeading -The Keywords result heading.\n * @param noResultText -The \"No Result\" text.\n * @param keywordSuggestions -The Keywords suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns -The JSX Element.\n */\nexport const KeywordSuggestionsComponent = (\n keywordSuggest: INodeProps,\n ulKeyword: INodeProps,\n keywordsHeading: string,\n noResultText: string,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return keywordSuggestions ? (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n
  • {noResultText}
  • \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param productSuggestionsHeading -The products suggestion result heading.\n * @returns The JSX Element.\n */\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\n\n return
    {productAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n \n );\n};\n\n/**\n * Render Products No result section.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    {props.resources.noResultContentHeadingText}
    \n
    \n {props.resources.noResultContentParagraphText}\n
    \n
    \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param productSuggest -The product suggest Node props.\n * @param ulProduct -The List Node props.\n * @param props -The props.\n * @param productSuggestions -The Product suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const ProductSuggestionsComponent = (\n productSuggest: INodeProps,\n ulProduct: INodeProps,\n props: ISearchProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n const liProduct: INodeProps = {\n tag: 'li',\n className: 'msc-no-result-content'\n };\n return productSuggestions ? (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n ) : (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {renderProductNotFoundResults(props)}\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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\nimport { FormComponent } from './components/search.form';\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\n\n/**\n * Render Title for AutoSuggest.\n * @param searchSuggestionHeading -The heading resource string.\n * @param searchText -The search string.\n * @returns -The JSX Element.\n */\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\n const searchTextString = '\"'.concat(searchText.concat('\"'));\n const searchAutoSuggestionHeading = searchSuggestionHeading\n ? format(searchSuggestionHeading, searchTextString)\n : `Search for ${searchTextString}`;\n\n return {searchAutoSuggestionHeading};\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC> = (\n props: ISearchViewProps & ISearchProps\n): JSX.Element => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n UlKeyword,\n UlProduct,\n form,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n context,\n isLoadingAutoSuggest,\n isLoadingNode,\n callbacks: { handleCancelSearchFocused }\n } = props;\n\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\n\n const [searchTextString, setSearchTextString] = useState();\n const [isMobilePort, setIsMobile] = useState(false);\n\n useEffect(() => {\n setSearchTextString(searchText);\n }, [searchText]);\n\n /**\n * ClearSearch callback method to clear search string.\n */\n const clearSearch = (): void => {\n setSearchTextString('');\n\n const propsForm = props.form as ISearchFormViewProps;\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\n\n if (propsFormInputCurrent) {\n propsFormInputCurrent.value = '';\n }\n\n propsFormInput.value = '';\n props.searchText = '';\n props.FormWrapper.action = '';\n };\n\n const isMobileViewport = useCallback(() => {\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\n setIsMobile(isMobileView);\n }, [context]);\n\n useEffect(() => {\n window.addEventListener('resize', isMobileViewport);\n isMobileViewport();\n }, [isMobileViewport]);\n\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isMobileView = viewport === 'sm' || viewport === 'xs';\n\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\n ? `${AutoSuggest.className} show`\n : `${AutoSuggest.className} hide`;\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\n\n return (\n \n {label}\n {FormComponent(\n form as ISearchFormViewProps,\n SearchForm,\n FormWrapper,\n isMobilePort,\n clearSearchButtonText,\n props,\n isSearchText,\n clearSearch\n )}\n {!isMobileView && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n \n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n {isMobileView && props.isSearchFormExpanded && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n \n );\n};\nexport default SearchView;\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":["searchRadiusUnit","HeadingTag","DealerSelectorEmptyMessage","_ref","resources","React","className","emptyLocationsText","DealerSelectorWaiting","classnames","DealerSelectorFoundLocationsMessage","_ref2","locations","searchRadius","preferredDistanceUnit","dealerCountMessage","milesShortText","dealerCountMessageInKm","replace","length","toString","DealerLocatorLocationLineItemComponent","props","location","index","storeName","OrgUnitName","distanceAsString","buildDistanceString","distance","isLocationDisabled","undefined","Math","floor","Distance","storeAddress","Address","channelId","ChannelId","id","dealerDetailsHeader","renderDealerDetails","dealerDetailsDescriptionText","dealerDetailsContractCodeText","ContractList","map","mfrCode","ManufacturerCode","ManufacturerName","ContractCode","ContractDescription","DealerLocatorLocationLines","constructor","super","onClickHandler","orgUnitLocation","this","onClick","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","_mapResources","contactInfoHeader","contactText","dealerDetailsText","dealerDetailsManufacturerCodeText","dealerDetailsLaborRateText","dealerDetailsNotesText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","componentDidMount","_stores","reaction","render","ArrayExtensions","hasElements","show","displayList","role","store","_renderStoreLocation","OrgUnitLocation","selected","key","ref","__decorate","observable","observer","DealerLocatorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","event","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","target","getAttribute","_searchTextChanged","async","inputValue","value","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","preventDefault","blur","performSearch","state","searchButtonAriaLabel","searchPlaceholderText","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","onChange","onKeyUp","Object","assign","color","storeSearchAttributes","EveLinePagination","nextPage","prevPage","changePage","currentPage","numPages","prev","next","disabled","Map","mapRef","kmToMiValue","defaultLookUpRadius","defaultPageLength","_attachMapAutoSuggest","config","autoSuggestOptions","context","telemetry","actionContext","requestContext","channel","data","storeSelectorStateManager","result","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","_objectSpread","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_getAndUpdateStoreLocation","shouldShowAllStores","_navigator","setState","isSearchInProgress","navigator","geolocation","getCurrentPosition","_updateLocations","position","coords","latitude","longitude","error","PERMISSION_DENIED","timeout","handleHeadingChange","heading","text","_initMap","pushpinAccessible","Events","addHandler","setSelectedStoreLocationId","getCredentials","mapSessionId","_updateMap","_this$props$data$stor2","_storeSelectorStateMa","pushpinOptions","orgUnitStoreInformation","_pushpinOptions$color","_pushpinOptions$selec","_pushpinOptions$size","_pushpinOptions$showI","mapLocation","entities","clear","pushpins","selectionColor","size","showIndex","pageLength","paginatedList","filter","slice","unitStoreInfo","entries","storeLocation","Latitude","Longitude","isSelectedLocation","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","push","currentLocation","setView","center","bounds","LocationRect","fromShapes","padding","clusterLayer","ClusterLayer","layers","insert","setOptions","orgUnitNumber","dealerDetails","getDealerDetailsAsync","callerContext","selectedDealer","tempDealerLocations","newDealerLocations","findIndex","loc","_loc$OrgUnitLocation","searchTerm","geoLocate","trim","radius","lookupRadius","defaultLatitudeValue","defaultLongitudeValue","distanceUnitValue","SearchRadiusUnit","km","lookupDistanceInMiles","round","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getOrgUnitLocationByArea","calRadius","useChannelMfr","newOrgUnitLocationsInput","GetDealerLocationsInput","newOrgUnits","getDealerLocations","_setOrgUnitStoreInformation","then","moduleId","input","onLocationSelected","Promise","resolve","showMapViewLink","parentElementRef","product","setOrgUnitStoreInformation","catch","message","icon","_getSvgIcon","distanceResults","originCoords","resultsCoords","dealerLocations","_this$props$data$stor5","_this$map","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor3","_this$props$data$stor4","loadMapApi","BingMapsEnabled","lang","locale","market","navigationBarMode","NavigationBarMode","minified","when","_this$props$data$stor7","setMapModuleLoaded","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$stor10","_this$props$context2","_this$props$data$stor11","_this$props$data$stor12","_this$props$data$stor13","_this$props$data$stor14","_this$props$data$stor15","_this$props$data$stor16","isDialogOpen","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","shouldDisplayMap","listMapViewState","displayMap","kilometersShortText","shouldDisplayList","paginatedLocationsList","ceil","page","scrollElement","document","querySelector","pagination","paginationPrev","paginationNext","viewProps","ModuleProps","tag","moduleProps","classname","Header","headerProps","Msdyn365","editProps","onEdit","request","dealerResultContainerProps","spinner","noLocationsMessage","locationsMessage","locationsList","search","MapProps","renderView","renderDealerList","Node","Module","FooterItemView","FooterItem","_renderElement","HeadingContainer","Link","linkText","image","EditableLink","AccountProfileEdit","moduleClassName","onTextBoxChange","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","window","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","nextProps","nextState","viewState","isShowLoading","accountProfileEdit","loading","modal","Modal","isOpen","modalBody","ModalBody","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","e","createElement","innerHTML","childNodes","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","ariaLabel","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","AccountProfileEditInputComponent","AccountProfileEditItem","AccountProfileEditLoading","_ref3","item","button","LocalAccount","payLoad","getPayloadObject","attributes","getTelemetryAttributes","Button","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","htmlFor","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","note","SalesLine","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","title","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","alert","orderInfomation","orderSummary","payment","help","Iframe","iframeRef","isConsentGiven","cookies","destinationUrl","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","cookieConsentRequiredMessage","targetURL","src","height","iframeAriaLabel","IFrameView","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","deliveryCode","currentTarget","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","Code","Description","tabIndex","onKeyDown","StoreSelectorLocationLines","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","InventoryLocationId","InventLocationId","StockLevelLabel","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","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","_sortStores","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","isCurrentLocation","isInStock","ItemAvailabilities","hideStockStatus","handlers","onSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","StoreSelectorSearchForm","_handleKeyPressPrev","Enter","Space","onShowAllStores","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","bind","TelemetryConstant","SearchStore","contentAction","etext","ShowAllStore","showAllStoreAttributes","ToggleMapView","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","StoreSelectorEmptyMessage","StoreSelectorWaiting","StoreSelectorTermsOfService","link","onTextChange","editableLink","linkUrl","openInNewTab","StoreSelectorFoundLocationsMessage","isSeeAllStore","storeCountMessage","storeCountMessageInKm","storeAllCountMessage","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","addEventListener","componentWillUnmount","removeEventListener","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","resourceLabel","stockLabel","stockText","canSelectLocation","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","secondsToTime","seconds","hours","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","productdeliveryOptions","deliveryOption","pickup","_delivery","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","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","onShowAllStoresHandler","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","setPreferredStoreLocation","clearPreferredStore","_setSelectedStore","isSeeAllStoreValue","_closeDialog","focus","closeDialog","styleDefault","preferredLocationId","storeLocationList","isDialog","modeDefault","getFullAvailableInventoryNearby","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$context$a","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isInlineView","isLocatorView","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","autoFocus","fade","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","outOfStockThreshold","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","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","cart","totalItemsInCart","renderModuleAttributes","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","header","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","Image","altText","gridSettings","imageSettings","lazyload","viewports","xs","w","h","q","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","form","searchForm","formWrapper","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","cancelBtnAriaLabel","cancelBtn","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","_item$id","LiProduct","AProduct","thumbnail","price","renderTitle","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","format","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","handleCancelSearchFocused","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","useEffect","propsFormInput","propsFormInputCurrent","action","isMobileViewport","useCallback","Browser","viewport","onBlur","isSearchFormExpanded","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","description","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","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","MsDyn365","isBrowser","_data$storeSelectorSt"],"sourceRoot":""}