{"version":3,"file":"static/js/25.132ab24a65522964b5fd.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","webpack://Msdyn365.Commerce.Online/./src/modules/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/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/themes/b2b/views/invoices-list.view.tsx?2850","webpack://Msdyn365.Commerce.Online/./src/themes/b2b/views/navigation-menu.view.tsx?abe4","webpack://Msdyn365.Commerce.Online/./src/themes/b2b/views/search-result-container.view.tsx?db22","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","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/pickup-option-list.tsx?dae0","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/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\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 * as React from 'react';\n\nexport interface IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
    {error}
    ;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\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 { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\nimport { getInvoiceDetailsPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { OrderInvoice } from '@msdyn365-commerce/retail-proxy';\r\nimport { ICoreContext, IDateFormatOptions } from '@msdyn365-commerce/core-internal';\r\nimport { IInvoicesListProps } from '../definition-extensions/invoices-list.ext.props.autogenerated';\r\nimport { getUrlSync } from '@msdyn365-commerce/core';\r\ninterface IGroupInvoice {\r\n invoice: OrderInvoice[];\r\n group: string;\r\n}\r\nexport const InvoiceListView: React.FC> = props => {\r\n //const { invoiceIDLabel } = props.resources;\r\n const [invoiceList, setInvoiceList] = React.useState([]);\r\n\r\n React.useEffect(() => {\r\n const invoices = props.data.invoices.result!;\r\n invoices && setInvoiceList([...invoiceList, ...invoices]);\r\n }, [props.data.invoices.result]);\r\n const { header, filter, invoiceRequestModal, pagination } = props;\r\n const _className: string = 'msc-invoices-list';\r\n const formatDate = (context: ICoreContext, date: Date | undefined) => {\r\n if (date === undefined) {\r\n return '';\r\n }\r\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\r\n\r\n return context.cultureFormatter.formatDate(date, dateOptions);\r\n };\r\n const _renderEmptyInvoiceLinesPageContent = (): JSX.Element => {\r\n const containerClass = `${_className}__empty-lines__container`;\r\n const actionsContainerClass = `${containerClass}__actions`;\r\n return (\r\n
    \r\n
    {props.resources.invoiceEmptyInvoiceLinesTitle}
    \r\n
    {props.resources.invoiceEmptyInvoiceLinesDescription}
    \r\n
    \r\n \r\n {props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n let _renderInvoicesList;\r\n if (invoiceList?.length > 0) {\r\n let groups = invoiceList.reduce((pre, crr) => {\r\n let c = formatDate(props.context, crr.InvoiceDate).split(' ');\r\n let m = `${c[0]} ${c[2]}`;\r\n if (pre[m]) {\r\n pre[m].invoice.push(crr);\r\n } else {\r\n const grpInvoice: IGroupInvoice = {\r\n invoice: [crr],\r\n group: m\r\n };\r\n pre[m] = grpInvoice;\r\n }\r\n return pre;\r\n }, {});\r\n let groupByInvoice = Object.keys(groups).map(k => groups[k]);\r\n\r\n _renderInvoicesList = groupByInvoice.map(groupInvoice => {\r\n return (\r\n <>\r\n

    {groupInvoice?.group}

    \r\n {groupInvoice.invoice?.map((invoice: any) => {\r\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(invoice.Id!, props.context.actionContext);\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n });\r\n } else {\r\n _renderInvoicesList = _renderEmptyInvoiceLinesPageContent();\r\n }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {/* {content} */}\r\n
    {_renderInvoicesList}
    \r\n {pagination}\r\n
    \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent, INavigationState> {\r\n private currentLevel: number = 0;\r\n private escapeKey: number = 27;\r\n private menuNode: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n constructor(props: INavigationMenuViewProps & INavigationMenuProps<{}>) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return {isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData) => {\r\n return this._renderDrawerMenu(menuItem);\r\n })}\r\n \r\n );\r\n }\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n // VSI-Customizations start\r\n const categoriesToExclude = this.props.config.categoriesToExclude || [];\r\n const categoryMatched = !categoriesToExclude.some(cate => cate.toLowerCase().trim() === toggleButtonText?.toLowerCase().trim());\r\n return categoryMatched ? (\r\n \r\n
    \r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
    \r\n \r\n ) : null;\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return {linkText};\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n // VSI-Customizations start\r\n const categoriesToExclude = this.props.config.categoriesToExclude || [];\r\n if (categoriesToExclude.length > 0) {\r\n for (let index = 0; index < categoriesToExclude.length; index++) {\r\n const cateIndex = menuItemData.findIndex(menu => menu.linkText?.toLowerCase() === categoriesToExclude[index].toLowerCase());\r\n if (cateIndex >= 0) {\r\n menuItemData.splice(cateIndex, 1);\r\n }\r\n }\r\n }\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\r\n // const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n // VSI-Customizations start\r\n const categoriesToExclude = this.props.config.categoriesToExclude || [];\r\n const categoryMatched = !categoriesToExclude.some(cate => cate.toLowerCase().trim() === linkText.toLowerCase().trim());\r\n if (categoryMatched) {\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\r\n const categoryImageDisplay =\r\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n const promotionalContentDisplay =\r\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n {categoryImageDisplay &&\r\n this.state.categoryImage &&\r\n this.state.categoryImage.map(item => (\r\n \r\n {this.state.categoryImage && this._getCategoryImage(item?.src!, item.altText!.toString())}\r\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n private _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n const linkText = option && option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n option.promotionalContent.map(item => {\r\n if (item && item.image) {\r\n const imageSrc = item.image.src;\r\n promotionalImage.push({\r\n src: imageSrc,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n });\r\n }\r\n this.setState({\r\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n categoryImageAltText: linkText\r\n });\r\n };\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n private _getCategoryImage = (categoryImage: string, alttext: string): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, this.props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const ImageData: IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","import {\r\n ICategoryHierarchyViewProps,\r\n IRefineMenuViewProps,\r\n ISearchResultContainerViewProps,\r\n ISearchResultModalViewProps,\r\n ISortByViewProps,\r\n ITitleViewProps\r\n} from '@msdyn365-commerce-modules/search-result-container';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchResultContainerView: React.FC = props => {\r\n const {\r\n SearchResultContainer,\r\n products,\r\n pagination,\r\n ProductsContainer,\r\n ProductSectionContainer,\r\n choiceSummary,\r\n isMobile,\r\n modalToggle,\r\n searchResultModal,\r\n TitleViewProps,\r\n refineMenu,\r\n categoryHierarchy,\r\n sortByOptions,\r\n CategoryNavContainer,\r\n RefineAndProductSectionContainer,\r\n errorMessage,\r\n FeatureSearchContainer,\r\n similarLookProduct\r\n } = props;\r\n if (isMobile) {\r\n return (\r\n \r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n {modalToggle}\r\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions)}\r\n {similarLookProduct}\r\n \r\n {errorMessage}\r\n {products}\r\n \r\n {pagination}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\r\n \r\n {refineMenu && renderRefiner(refineMenu)}\r\n \r\n {similarLookProduct}\r\n
    \r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n
    \r\n
    {sortByOptions && renderSort(sortByOptions)}
    \r\n \r\n {errorMessage}\r\n {products}\r\n \r\n {pagination}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst createSearchResultModal = (\r\n modalProps: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps\r\n): JSX.Element => {\r\n return React.cloneElement(\r\n modalProps.modal,\r\n {},\r\n modalProps.modalHeader,\r\n createModalBody(modalProps, refineMenu, sortByDropDown),\r\n modalProps.modalFooter\r\n );\r\n};\r\n\r\nconst createModalBody = (\r\n props: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps\r\n): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown), renderRefiner(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {refiners.map((submenu, index) => (\r\n {submenu}\r\n ))}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderSort = (props: ISortByViewProps): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown) {\r\n return {sortByDropDown};\r\n }\r\n return null;\r\n};\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return (\r\n \r\n

    \r\n {title.titlePrefix}\r\n {title.titleText}({title.titleCount})\r\n

    \r\n
    \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default SearchResultContainerView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
    \n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n \n {errorMessage}\n {products}\n \n {pagination}\n
    \n
    \n
    \n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

    \n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

    \n
    \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\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 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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
    \n
    {this.props.promoCodeHeadingText}
    \n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 } 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 } 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, 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\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"],"names":["componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","props","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","React","currentViewModeState","onClickHandler","newViewModeState","onClick","viewModeDetailedViewAttributes","getTelemetryAttributes","telemetryContent","getPayloadObject","TelemetryConstant","ViewMode","viewModeListViewAttributes","className","classnames","Button","Object","assign","DetailedView","resources","detailedViewOptionAriaLabel","title","role","ListView","listViewOptionAriaLabel","StoreSelector","constructor","super","renderSelectedStore","shouldHideInventory","preferredDistanceUnit","preferredStore","isPreferredStoreEnabled","hasEnabledOutOfStockCheck","productPickUpOptionList","shouldDisplayList","_ref","_selectedStore$OrgUni","data","availabilitiesWithHours","result","storeSelectorStateManager","storeLocations","this","context","undefined","selectedStoreLocationId","selectedStore","find","store","_store$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","OrgUnitNumber","orgUnitLocation","selectedStoreResources","_mapResources","_selectedStore$OrgUni2","_selectedStore$OrgUni3","selectedProps","shouldHideStockStatus","isCurrentLocation","_isCurrentLocation","alreadySelectedLocation","isInStock","_isProductInStock","ItemAvailabilities","stockStatusLabel","_stockInventoryLabel","preferredStoreLocationId","StoreId","isLocationDisabled","state","storePickUpOptionList","OrgUnitPickUpDeliveryModes","DeliveryOptions","handlers","onSelected","_onOrgUnitLocationSelected","onSetAsPreferredStore","_setPreferredStore","onRemovePreferredStore","_removePreferredStore","closeStoreDetailsModal","_closeStoreDetailModal","SelectedStoreComponent","handleLinkTextChange","event","config","termsOfServiceLink","linkText","target","value","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","setState","filteredPickupMode","onFilterLocations","stores","filter","location","_location$OrgUnitPick","some","deliveryOption","Code","onFilteredPickupMode","deliveryCode","_attachMapAutoSuggest","async","autoSuggestOptions","telemetry","actionContext","requestContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","_objectSpread","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","id","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","_store$OrgUnitAvailab2","setPreferredStoreLocation","OrgUnitName","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","error","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","current","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","onLocationSelected","Promise","resolve","preferredLocationId","storeLocationList","_sortStores","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","deliveryMode","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","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","selectedLocation","hasEnableOutOfStockCheck","itemAvailabilities","ArrayExtensions","hasElements","AvailableQuantity","ProductInventoryInformation","index","length","_isInStock$OrgUnitAva","InventoryLocationId","InventLocationId","StockLevelLabel","getTelemetryObject","request","telemetryPageName","friendlyName","storeCounter","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","reaction","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","key","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","render","_storeSelectorStateMa2","_storeSelectorStateMa3","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","showAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","listMapViewState","displayList","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","milesShortText","isEnableOutofStock","enableStockCheck","deliveryOptions","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","viewProps","ModuleProps","tag","Modal","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","Msdyn365","text","editProps","onEdit","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","StoreSelectorFoundLocationsMessage","locations","searchRadius","isSeeAllStore","search","StoreSelectorSearchForm","performSearch","searchTermChanged","onShowAllStores","onToggleListMapViewState","locatorView","productPickUpDeliveryOptions","filterPickupModeSelected","hasEnabledPickupFilterToShowStore","spinner","StoreSelectorWaiting","locationsList","StoreSelectorLocationLines","outOfStockThreshold","enableOutOfStockCheck","storeLocatorView","shouldShowIndex","noLocationsMessage","StoreSelectorEmptyMessage","terms","StoreSelectorTermsOfService","link","onTextChange","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","isPreferredStore","_value$OrgUnitAvailab","isStoreLocatorView","storeList","map","storeLineProps","_createStoreLocationList","push","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","storeOpenFrom","secondsToTime","OpenFrom","storeOpenTo","OpenTo","storeHours","StoreHours","_store$OrgUnitAvailab4","hideStockStatus","toString","locationOpen","openFrom","openTo","storeHoursList","RegularStoreHours","buildStoreHours","__decorate","observer","storeDetailsMain","storeHeader","storeName","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","preferredStoreButton","removePreferredStoreButton","Node","canSelectLocation","pickUpDeliveryOptionButton","pickupModes","renderDeliveryOptions","Module","renderBody","BusinessPartnerPromotionTermsParagraph","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","checked","onToggleTermOfServiceModal","termsOfServiceModalOpened","onSubmit","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","callerContext","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","status","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","type","termsOfServiceLinkText","onChange","termsOfServiceAgreementText","termsOfServiceModal","termsOfServiceModalHeading","MsDyn365","submitButton","submitRequestLabel","disabled","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","label","user","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","payLoad","attributes","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","links","CookieCompliance","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","bind","componentDidMount","acceptCookiesAriaLabel","moduleConfig","isBrowser","onDismiss","CookieComplianceBanner","ref","AlertProps","Content","acceptButton","setConsentCookie","reload","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","targetURL","src","height","iframeAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","item","ProductComparisonItem","catalogId","ProductComparisonState","instance","accountInformation","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","buttonText","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","items","getCatalogId","InvoiceListView","invoiceList","setInvoiceList","invoices","header","invoiceRequestModal","pagination","formatDate","date","cultureFormatter","year","month","day","_renderInvoicesList","groups","reduce","pre","crr","c","InvoiceDate","split","m","invoice","grpInvoice","group","keys","k","groupInvoice","_groupInvoice$invoice","linkToInvoiceDetails","getInvoiceDetailsPageUrlSync","Id","href","TotalAmount","_renderEmptyInvoiceLinesPageContent","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","getUrlSync","invoiceEmptyInvoiceLinesContinueShoppingButtonText","NavigationMenuView","currentLevel","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","altText","promotionalContent","image","imageSrc","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","mobileViewLabelText","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","contains","_escFunction","keyCode","_closeSubmenu","_getCategoryImage","alttext","categoryImageUrl","generateImageUrl","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","ImageData","Image","gridSettings","imageSettings","categoryImageSettings","loadFailureBehavior","document","body","addEventListener","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","subMenu","_renderDrawer","_renderLinkMenuItem","toggleButtonText","categoriesToExclude","cate","toLowerCase","Drawer","openGlyph","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","cateIndex","findIndex","menu","_menu$linkText","splice","i","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","arguments","Link","imagesource","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","createSearchResultModal","modalProps","refineMenu","sortByDropDown","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainer","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","renderCustomerName","customer","FirstName","Name","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","_positionInSetOffset","promotionalItemImageSettings","_handleFocusOutside","relatedTarget","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_categoryImage$imageS","_onDrawerChange","drawerState","drawerKeyValue","newPair","posinset","setSize","keyValue","isDrawerOpen","colProps","toggleButtonProps","onToggle","collapseProps","currentPos","_menuItem$subMenu2","_menuItem$subMenu","menuItemDatum","isParent","shouldOpenNewTab","isRecoSearchPage","_props$context$action","query","recommendation","IFrameView","ProductComparisonButtonViewFunctionalComponent","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","note","channelAddress","SalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","_ref3","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","salesStatus","deliveryType","shipment","trackingInfo","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","loading","orderInfomation","orderSummary","payment","help","StoreSelectorFoundLocationsMessageComponent","storeCountMessage","storeCountMessageInKm","RichTextComponent","storeAllCountMessage","replace","extractPhoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","ContactInformationType","Phone","IsPrivate","primaryPhoneContact","IsPrimary","Locator","renderStoreHours","displayTime","JSON","stringify","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","endDayShort","startDayFull","startDayShort","endDayFull","storeHoursDayPeriod","storeHoursDay","timeRange","matchDeliveryOptions","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","deliveryOptionList","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","onChangeHandler","preventDefault","currentTarget","dataset","handleDropdownToggle","filterDeliveryOption","pickupInStoreButtonText","filteredDeliveryMode","Description","renderLocationLinePickupButton","PickUpButtonComponent","pickupInStoreAriaLabel","pickupDeliveryOptionErrorMessage","renderStoreLocationLineItem","locationLineItem","distanceAsString","buildDistanceString","distance","closeDistanceString","distanceString","floor","Distance","storeAddress","Address","phoneNumber","Contacts","resourceLabel","stockText","PickupInStore","PreferredStore","preferredStoreAttribute","RemovePreferredStore","removePreferredStoreAttribute","_props$data$storeSele","stopPropagation","onSetPreferredStoreClickHandler","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","show","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","onPickupInStoreClickHandler","pickUpMethodSelection","selected","Number","parseInt","onKeyDown","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","selectedLocationDiv","_selectedLocationDiv$","offset","getBoundingClientRect","parent","parentElement","totalHeight","scrollTop","top","clientHeight","window","_data$storeSelectorSt","displayMap","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","then","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","placeholder","_removePromotion","_event$currentTarget$","code","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","ApplyPromoCode","promoCodeHeadingText","seconds","hours","ampm","divisorForMinutes","getShortTimeString","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","_pickupListOptionMenu","expandSiteOptions","_onSelect","_renderDeliveryOptions","pickupListOptionMenuText","pickupmodeList","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","_scrollIntoView","selectedLocationRef","offsetTop","availabilityWithHours","_availabilityWithHour","componentDidUpdate","_stores","_renderStoreLocation","StoreSelectorLocationLineItemComponent","observable","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","_searchTextChanged","inputValue","_onSubmit","_this$searchBoxRef$cu","blur","_onChangeHandler","renderPickupModesList","pickupFilterMenuHeading","pickupFilterByHeading","toggleButtonClass","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","name","autoComplete","searchInputAriaLabel","onKeyUp","emptyLocationsText","storeSelectorLocationLineItemComponentActions","onPickupModeSelectHandler","pickupMode","removePreferredStoreHandler","productdeliveryOptions","pickup","_delivery","stockLabel","preferredStoreAttributes","removePreferredStoreAttributes","pickUpButtonClickHandler","renderPickupModes","_props$selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","parentClassName"],"sourceRoot":""}