{"version":3,"file":"static/js/603cf5526aadde90dba0.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/actions/get-all-store-location-information.ts?4981","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/dobbies-store-selector.props.autogenerated.ts?51f5","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/components/pickup-option-list.tsx?e61b","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/components/store-pickup-option-list.tsx?da00","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/components/dobbies-store-selector-location-line-item/date-time-helpers.ts?77b9","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/components/dobbies-store-selector-location-line-item/dobbies-store-selector-location-line-item.components.tsx?3512","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/components/dobbies-store-selector-location-lines.tsx?1b96","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/components/dobbies-store-selector-search-form.tsx?0289","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/components/dobbies-store-selector-small-components.tsx?f5e2","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/dobbies-store-selector.tsx?40fe","webpack://Dobbies.Commerce/./src/modules/dobbies-store-selector/dobbies-store-selector.view.tsx?681d","webpack://Dobbies.Commerce/./src/themes/dobbies/actions/get-feature-state.override.action.ts?6984","webpack://Dobbies.Commerce/./lib/dobbies-store-selector/module-registration.js?8380","webpack://Dobbies.Commerce/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://Dobbies.Commerce/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://Dobbies.Commerce/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICreateActionContext\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n ChannelDeliveryOption,\r\n FeatureState,\r\n OrgUnitAvailability,\r\n OrgUnitLocation,\r\n SearchArea,\r\n StoreHours\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getChannelDeliveryOptionsAsync,\r\n getOrgUnitLocationsByAreaAsync,\r\n getStoreHoursAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\r\nimport getFeatureStateActionDataAction, { FeatureStateInput } from '../themes/dobbies/actions/get-feature-state.override.action';\r\nimport { QueryResultSettingsProxy, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\n/**\r\n * Get selected variant action input class.\r\n */\r\nexport class GetAllOrgUnitLocationsByAreaInput implements IActionInput {\r\n public Latitude?: number;\r\n\r\n public Longitude?: number;\r\n\r\n public Radius?: number;\r\n\r\n public DistanceUnitValue?: number;\r\n\r\n public IgnoreLocation?: boolean;\r\n\r\n constructor(_Latitude?: number, _Longitude?: number, _Radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\r\n this.Latitude = _Latitude;\r\n this.Longitude = _Longitude;\r\n this.Radius = _Radius;\r\n this.DistanceUnitValue = _DistanceUnitValue;\r\n this.IgnoreLocation = _IgnoreLocation;\r\n }\r\n\r\n public getCacheKey = () => 'GetAllOrgUnitLocationsByAreaInput';\r\n\r\n public getCacheObjectType = () => 'GetAllOrgUnitLocationsByAreaInput';\r\n\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\n/**\r\n * CreateInput method for the getSelectedVariant data action.\r\n * @param inputData The input data passed to the createInput method.\r\n */\r\nexport const createGetOrgUnitLocationsByAreaInput = (inputData: ICreateActionContext): GetAllOrgUnitLocationsByAreaInput => {\r\n return new GetAllOrgUnitLocationsByAreaInput();\r\n};\r\n\r\n/**\r\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\r\n * @param context\r\n */\r\nexport async function getFeatureState(context: IActionContext): Promise {\r\n return getFeatureStateActionDataAction(new FeatureStateInput(), context);\r\n}\r\n\r\n/**\r\n * Action method for the getSelectedVariant data action.\r\n * @param input The action input class.\r\n * @param ctx The action context.\r\n */\r\nexport async function getAllOrgUnitLocationsByArea(\r\n input: GetAllOrgUnitLocationsByAreaInput,\r\n ctx: IActionContext\r\n): Promise {\r\n if ((input.Radius === undefined || !input.Latitude || !input.Longitude) && !input.IgnoreLocation) {\r\n // No valid location we want to return empty array so module can show no locations message\r\n return [];\r\n }\r\n\r\n const searchArea: SearchArea = {\r\n Latitude: input.Latitude,\r\n Longitude: input.Longitude,\r\n Radius: input.Radius,\r\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\r\n };\r\n\r\n const featureState = await getFeatureState(ctx);\r\n const retailMulitplePickupMFeatureState = featureState?.find(\r\n item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\r\n )?.IsEnabled;\r\n\r\n return getOrgUnitLocationsByAreaAsync(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\r\n },\r\n searchArea\r\n )\r\n .then(async (stores: OrgUnitLocation[]) => {\r\n // console.log(\"🚀 ~ file: get-store-location-information-s.ts:112 ~ .then ~ stores:\", stores)\r\n // return stores\r\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\r\n\r\n // If mulitple pickup mode is enable then call getchanneldeliveryoption\r\n if (retailMulitplePickupMFeatureState) {\r\n const orgUnitChannel = stores.map(store => store.ChannelId);\r\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\r\n }\r\n const locationPromiseList = stores.map(store => {\r\n const locationDeliveryOption = locationDeliveryOptions?.find(\r\n _channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId\r\n );\r\n return _getLocationWithHours(store, locationDeliveryOption, ctx);\r\n });\r\n return Promise.all(locationPromiseList);\r\n })\r\n .catch((error: Error) => {\r\n ctx.trace('[GetOrgUnitLocationsByArea] error getting Locations');\r\n ctx.trace(error.message);\r\n ctx.telemetry.error(error.message);\r\n ctx.telemetry.debug('[GetOrgUnitLocationsByArea] error getting Locations');\r\n return [];\r\n });\r\n}\r\n\r\n/**\r\n * Action method that obtains the store information.\r\n * @param orgUnitLocation The org unit location.\r\n * @param storeMap A map that contains store information group by the inventory location id.\r\n * @param channelDeleiveryOptions\r\n * @param ctx The action context.\r\n */\r\nasync function _getLocationWithHours(\r\n orgUnitLocation: OrgUnitLocation,\r\n channelDeleiveryOptions: ChannelDeliveryOption | undefined,\r\n ctx: IActionContext\r\n): Promise {\r\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\r\n return { OrgUnitAvailability: undefined };\r\n }\r\n\r\n return getStoreHoursAsync({ callerContext: ctx }, orgUnitLocation.OrgUnitNumber)\r\n .then((hours: StoreHours) => {\r\n const availability: OrgUnitAvailability = {\r\n OrgUnitLocation: orgUnitLocation\r\n };\r\n\r\n if (hours && !(hours instanceof Error)) {\r\n return { OrgUnitAvailability: availability, StoreHours: hours, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\r\n }\r\n\r\n return { OrgUnitAvailability: availability, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\r\n })\r\n .catch((error: Error) => {\r\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\r\n ctx.trace(error.message);\r\n ctx.telemetry.exception(error);\r\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] error getting availability with hours');\r\n return { OrgUnitAvailability: {} };\r\n });\r\n}\r\n\r\n/**\r\n * Action method that obtains the store information.\r\n * @param channelCollection The org unit channel Id list.\r\n * @param ctx The action context.\r\n */\r\nasync function _getLocationPickUpDeliveryModes(\r\n channelCollection: (number | undefined)[],\r\n ctx: IActionContext\r\n): Promise {\r\n if (channelCollection?.length === 0 || channelCollection === undefined) {\r\n return undefined;\r\n }\r\n\r\n const channelIdList: number[] = [];\r\n channelCollection?.map(id => {\r\n if (id !== undefined) {\r\n return channelIdList.push(id);\r\n }\r\n return;\r\n });\r\n\r\n // To get all channel pickup delivery mode filterOption should be 4\r\n return getChannelDeliveryOptionsAsync(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\r\n },\r\n channelIdList,\r\n 4\r\n )\r\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\r\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\r\n return channelDeliveryOptions;\r\n }\r\n\r\n return undefined;\r\n })\r\n .catch((error: Error) => {\r\n ctx.trace(\r\n '[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options'\r\n );\r\n ctx.trace(error.message);\r\n ctx.telemetry.exception(error);\r\n ctx.telemetry.debug(\r\n '[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options'\r\n );\r\n return [];\r\n });\r\n}\r\n\r\n/**\r\n * The complete getAllOrgUnitLocationsByArea data action.\r\n */\r\nexport const getOrgUnitLocationsByAreaDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-store-location-information',\r\n action: >getAllOrgUnitLocationsByArea,\r\n input: createGetOrgUnitLocationsByAreaInput\r\n});\r\n\r\nexport default getOrgUnitLocationsByAreaDataAction;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IDobbiesStoreSelector containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum mode {\r\n findStores = 'findStores',\r\n pickupInStore = 'pickupInStore'\r\n}\r\n\r\nexport const enum searchRadiusUnit {\r\n miles = 'miles',\r\n kilometers = 'kilometers'\r\n}\r\n\r\nexport const enum style {\r\n inline = 'inline',\r\n dialog = 'dialog'\r\n}\r\n\r\nexport interface IDobbiesStoreSelectorConfig extends Msdyn365.IModuleConfig {\r\n heading?: string;\r\n termsOfServiceLink?: ITermsOfServiceLinkData;\r\n mode?: mode;\r\n searchRadiusUnit?: searchRadiusUnit;\r\n lookupRadius: number;\r\n style?: style;\r\n setAsPreferredStore?: boolean;\r\n enablePickupFilterToShowStore?: boolean;\r\n showAllStores?: boolean;\r\n autoSuggestionEnabled?: boolean;\r\n autoSuggestOptions?: IAutoSuggestOptionsData;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface IDobbiesStoreSelectorResources {\r\n findText: string;\r\n searchPlaceholderText: string;\r\n storeLinksText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n outOfStockText: string;\r\n inStockText: string;\r\n selectedStoreLocationText: string;\r\n emptyLocationsText: string;\r\n selectStoreText: string;\r\n selectStoreAriaFormatText: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n timeText: string;\r\n captionText: string;\r\n milesShortText: string;\r\n kilometersShortText: string;\r\n contactText: string;\r\n availabilityText: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeConfiguration: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n storeHoursClosedText: string;\r\n storeHoursMondayText: string;\r\n storeHoursTuesdayText: string;\r\n storeHoursWednesdayText: string;\r\n storeHoursThursdayText: string;\r\n storeHoursFridayText: string;\r\n storeHoursSaturdayText: string;\r\n storeHoursSundayText: string;\r\n storeHoursMondayFullText: string;\r\n storeHoursTuesdayFullText: string;\r\n storeHoursWednesdayFullText: string;\r\n storeHoursThursdayFullText: string;\r\n storeHoursFridayFullText: string;\r\n storeHoursSaturdayFullText: string;\r\n storeHoursSundayFullText: string;\r\n storePhoneAriaLabel: string;\r\n storeAddressAriaLabel: string;\r\n storeCountMessage: string;\r\n storeAllCountMessage: string;\r\n storeCountMessageInKm: string;\r\n storeSelectorHeaderText: string;\r\n storeLocatorHeaderText: string;\r\n seeAllStoresText: string;\r\n viewMapText: string;\r\n viewListText: string;\r\n pickupFilterByHeading: string;\r\n pickupFilterMenuHeading: string;\r\n}\r\n\r\nexport interface ITermsOfServiceLinkData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAutoSuggestOptionsData {\r\n maxResults?: number;\r\n}\r\n\r\nexport interface IDobbiesStoreSelectorProps extends Msdyn365.IModule {\r\n resources: IDobbiesStoreSelectorResources;\r\n config: IDobbiesStoreSelectorConfig;\r\n slots: {\r\n maps: React.ReactNode[];\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n/* tslint:disable: no-duplicate-imports */\r\n\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\nexport interface IPickUpOptionListProps {\r\n pickupListOptionMenuText: string;\r\n pickupmodeList?: DeliveryOption[];\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\nexport interface IPickOptionListState {\r\n expandSiteOptions: boolean;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option\r\n */\r\nexport class PickUpOptionList extends React.PureComponent {\r\n private _pickupListOptionMenu: React.RefObject;\r\n\r\n constructor(props: IPickUpOptionListProps) {\r\n super(props);\r\n this._rendeDeliveryOptions = this._rendeDeliveryOptions.bind(this);\r\n this._pickupListOptionMenu = React.createRef();\r\n this.state = {\r\n expandSiteOptions: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\r\n\r\n return (\r\n
\r\n \r\n {this.state.expandSiteOptions ? (\r\n
    \r\n {pickupmodeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n
  • \r\n {\r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n }\r\n
  • \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _rendeDeliveryOptions(): void {\r\n const expandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !expandSiteOptionsState\r\n });\r\n }\r\n\r\n private _onSelect = async (e: React.MouseEvent): Promise => {\r\n e.preventDefault();\r\n const deliveryCode = e.currentTarget.getAttribute('data-value');\r\n if (deliveryCode && deliveryCode.length > 0) {\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Pickup option list interface.\r\n */\r\nexport interface IStorePickUpOptionListProps {\r\n productPickupListOptionMenuText?: string;\r\n productPickupModeList?: DeliveryOption[];\r\n defaultOptionText?: string;\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Store Pickup option state interface.\r\n */\r\nexport interface IStorePickOptionListState {\r\n isFilterExpanded: boolean;\r\n selectedPickupMode?: string;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class StorePickUpOptionList extends React.PureComponent {\r\n private readonly _storePickupListOptionMenu: React.RefObject;\r\n\r\n public constructor(props: IStorePickUpOptionListProps) {\r\n super(props);\r\n this._storePickupListOptionMenu = React.createRef();\r\n this.state = {\r\n isFilterExpanded: false,\r\n selectedPickupMode: ''\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\r\n const selectedPickupModeDesc = defaultOptionText\r\n ? defaultOptionText\r\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\r\n const role = 'menu';\r\n return (\r\n
\r\n \r\n {this.state.isFilterExpanded ? (\r\n
    \r\n {productPickupModeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n
  • \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Method to call when drop dwon get selected.\r\n */\r\n private readonly _rendeDeliveryOptions = () => {\r\n const isExpandOptionsState = this.state.isFilterExpanded;\r\n this.setState({\r\n isFilterExpanded: !isExpandOptionsState\r\n });\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport get from 'lodash/get';\r\n\r\nimport { IStoreSelectorLocationLineItemResources } from '.';\r\n\r\nexport interface IHoursDisplayInfo {\r\n startDayShort: string;\r\n startDayFull: string;\r\n endDayShort?: string;\r\n endDayFull?: string;\r\n timeRange: string;\r\n}\r\n\r\ninterface IHoursInfo {\r\n isClosed: boolean;\r\n openTime?: number;\r\n closeTime?: number;\r\n}\r\n\r\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\r\n\r\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\r\n if (seconds === undefined) {\r\n return undefined;\r\n } else {\r\n let hours = Math.floor(seconds / (60 * 60));\r\n const ampm = hours >= 12 ? 'pm' : 'am';\r\n hours = hours % 12;\r\n hours = hours ? hours : 12;\r\n const divisorForMinutes = seconds % (60 * 60);\r\n const minutes =\r\n Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\r\n return `${hours}:${minutes}${ampm}`;\r\n }\r\n};\r\n\r\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.monday;\r\n case 'TUE':\r\n return resources.days.tuesday;\r\n case 'WED':\r\n return resources.days.wednesday;\r\n case 'THU':\r\n return resources.days.thursday;\r\n case 'FRI':\r\n return resources.days.friday;\r\n case 'SAT':\r\n return resources.days.saturday;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sunday;\r\n }\r\n};\r\n\r\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.mondayFull;\r\n case 'TUE':\r\n return resources.days.tuesdayFull;\r\n case 'WED':\r\n return resources.days.wednesdayFull;\r\n case 'THU':\r\n return resources.days.thursdayFull;\r\n case 'FRI':\r\n return resources.days.fridayFull;\r\n case 'SAT':\r\n return resources.days.saturdayFull;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sundayFull;\r\n }\r\n};\r\n\r\nconst buildHoursDisplayInfo = (\r\n startDay: DayType,\r\n endDay: DayType,\r\n hoursInfo: string,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): IHoursDisplayInfo => {\r\n return {\r\n startDayShort: getShortTimeString(startDay, resources),\r\n startDayFull: getFullTimeString(startDay, resources),\r\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\r\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\r\n timeRange: hoursInfo\r\n };\r\n};\r\n\r\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\r\n if (firstLine.isClosed && secondLine.isClosed) {\r\n return true;\r\n }\r\n\r\n if (!firstLine.isClosed && !secondLine.isClosed) {\r\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\r\n return {\r\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\r\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\r\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\r\n };\r\n};\r\n\r\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\r\n if (hoursInfo.isClosed) {\r\n return resources.closedText;\r\n } else {\r\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\r\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\r\n\r\n return `${openFrom} – ${openTo}`;\r\n }\r\n};\r\n\r\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\r\n const storeHoursList: IHoursDisplayInfo[] = [];\r\n\r\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\r\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\r\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\r\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\r\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\r\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\r\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\r\n\r\n let periodStart: DayType = 'MON';\r\n let periodEnd: DayType = 'MON';\r\n\r\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\r\n\r\n periodStart = 'TUE';\r\n }\r\n periodEnd = 'TUE';\r\n\r\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\r\n\r\n periodStart = 'WED';\r\n }\r\n periodEnd = 'WED';\r\n\r\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\r\n\r\n periodStart = 'THU';\r\n }\r\n periodEnd = 'THU';\r\n\r\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\r\n\r\n periodStart = 'FRI';\r\n }\r\n periodEnd = 'FRI';\r\n\r\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\r\n\r\n periodStart = 'SAT';\r\n }\r\n periodEnd = 'SAT';\r\n\r\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\r\n\r\n periodStart = 'SUN';\r\n }\r\n periodEnd = 'SUN';\r\n\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\r\n\r\n return storeHoursList;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\n\r\nimport * as React from 'react';\r\n\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { PickUpOptionList } from '../pickup-option-list';\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\r\n\r\nexport interface IStoreSelectorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n storeHoursHeader: string;\r\n availabilityInfoHeader: string;\r\n storeLinksText: string;\r\n closedText: string;\r\n\r\n outOfStock: string;\r\n inStock: string;\r\n\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n\r\n days: {\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n sunday: string;\r\n mondayFull: string;\r\n tuesdayFull: string;\r\n wednesdayFull: string;\r\n thursdayFull: string;\r\n fridayFull: string;\r\n saturdayFull: string;\r\n sundayFull: string;\r\n };\r\n}\r\n\r\nexport interface IStoreSelectorLocationLineItemProps {\r\n location: OrgUnitLocation;\r\n storeHours?: StoreHours;\r\n\r\n hideStockStatus?: boolean;\r\n isInStock?: boolean;\r\n isCurrentLocation?: boolean;\r\n\r\n resources: IStoreSelectorLocationLineItemResources;\r\n stockStatusLabel?: string;\r\n storeLocatorView?: boolean;\r\n isPreferredStoreEnabled?: boolean;\r\n index: string;\r\n preferredStoreLocationId: string | null;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n url: string; // VSI Customization\r\n linkText: string;\r\n /** The telemetry content */\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n isLocationDisabled?: boolean;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n };\r\n}\r\n\r\nconst StoreSelectorLocationLineItemComponentActions = {\r\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\r\n props.handlers.onSelected(props.location, deliveryMode);\r\n },\r\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\r\n },\r\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onRemovePreferredStore();\r\n }\r\n};\r\n\r\nconst renderStoreHours = (\r\n storeHours: StoreHours | undefined,\r\n location: OrgUnitLocation,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day houts\r\n if (storeHours && storeHours.RegularStoreHours) {\r\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\r\n\r\n return (\r\n
\r\n {storeHoursList.map(displayTime => (\r\n
\r\n {displayTime.endDayShort ? (\r\n
\r\n {displayTime.startDayShort}–\r\n {displayTime.endDayShort}\r\n
\r\n ) : (\r\n
\r\n {displayTime.startDayShort}\r\n
\r\n )}\r\n
{displayTime.timeRange}
\r\n
\r\n ))}\r\n
\r\n );\r\n } else {\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\r\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\r\n\r\n return (\r\n
\r\n {storeOpenFrom} - {storeOpenTo}\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport const buildDistanceString = (\r\n distance: number | undefined,\r\n preferredDistanceUnit: string,\r\n isLocationDisabled?: boolean\r\n): string | undefined => {\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < 1) {\r\n return `(<1 ${preferredDistanceUnit})`;\r\n } else {\r\n // Tape 10.102993 * 100 = 1010\r\n // 1010/ 100 10.10\r\n return `${Math.round(distance * 10) / 10} ${preferredDistanceUnit}`;\r\n }\r\n};\r\n\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\r\n\r\n if (allPhoneContacts && allPhoneContacts.length > 0) {\r\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryPhoneContact) {\r\n return primaryPhoneContact.Locator;\r\n }\r\n\r\n return allPhoneContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nconst StoreSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\r\n const onClick = () => StoreSelectorLocationLineItemComponentActions.onLocationSelected(props);\r\n\r\n const onChange = async (deliveryCode: string): Promise => {\r\n StoreSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\r\n };\r\n\r\n const {\r\n hideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n location,\r\n resources,\r\n storeHours,\r\n stockStatusLabel,\r\n storeLocatorView,\r\n index,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n telemetryContent,\r\n storePickUpOptionList,\r\n productPickUpOptionList,\r\n isLocationDisabled\r\n } = props;\r\n\r\n const storeName: string | undefined = location.OrgUnitName;\r\n // Make this false to display the address on ALL store locations whether location provided or not\r\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\r\n const storeAddress: string | undefined = location.Address;\r\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\r\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\r\n const canSelectLocation = hideStockStatus || isInStock;\r\n const pickupInStoreButtonText: string = resources.selectLocation;\r\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\r\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n const preferredStoreAttr = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const RemovePreferredStoreAttr = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n\r\n const setAsPreferredStore = () => StoreSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\r\n const removePreferredStore = () => StoreSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\r\n /* VSI Customization - START - 16/03/21 - Replace space with - in store name to make its url */\r\n const storeNameURL = storeName && storeName.replace(/\\s+/g, '-').toLowerCase();\r\n /* VSI Customization - END */\r\n\r\n /* VSI Customization - START - Remove GBR From your Shipping Address */\r\n const storeAddressText = storeAddress && storeAddress.slice(0, storeAddress.length - 4);\r\n /* VSI Customization - END */\r\n\r\n console.log(phoneNumber);\r\n return (\r\n
\r\n
\r\n {storeLocatorView && {index}}\r\n {storeName}\r\n {distanceAsString ? {distanceAsString} : false}\r\n
\r\n
\r\n
\r\n

{resources.contactInfoHeader}

\r\n {storeAddressText && (\r\n
\r\n \r\n {storeAddressText}\r\n
\r\n )}\r\n {/* VSI-Customization -- START Render link for the store */}\r\n \r\n {props.linkText}\r\n \r\n {/* VSI-Customization -- END */}\r\n {/* {phoneNumber && (\r\n
\r\n \r\n {phoneNumber}\r\n
\r\n )} */}\r\n
\r\n
\r\n

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\r\n {stockText &&

{stockText}

}\r\n {isCurrentLocation ? (\r\n

{resources.currentLocation}

\r\n ) : canSelectLocation ? (\r\n deliveryOptionList.length === 0 ? (\r\n \r\n {pickupInStoreButtonText}\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n false\r\n )}\r\n
\r\n )}\r\n {isPreferredStoreEnabled ? (\r\n isPreferredStore ? (\r\n \r\n {resources.preferredStoreText}\r\n \r\n ) : (\r\n \r\n {resources.setAsPreferredStoreText}\r\n \r\n )\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const matchDeliveryOptions = (\r\n productdeliveryOptions: DeliveryOption[] | undefined,\r\n storePickUpOptionList: DeliveryOption[] | undefined\r\n): DeliveryOption[] => {\r\n const deliveryOption: DeliveryOption[] = [];\r\n productdeliveryOptions?.map(delivery => {\r\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\r\n if (pickup) {\r\n deliveryOption.push(pickup);\r\n }\r\n });\r\n\r\n return deliveryOption;\r\n};\r\n\r\nexport const StoreSelectorLocationLineItemComponent = StoreSelectorLocationLineItem as (\r\n props: IStoreSelectorLocationLineItemProps\r\n) => JSX.Element;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\n/* eslint-disable security/detect-object-injection */\r\n\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IDobbiesStoreSelectorResources } from '../dobbies-store-selector.props.autogenerated';\r\nimport {\r\n IStoreSelectorLocationLineItemResources,\r\n StoreSelectorLocationLineItemComponent\r\n} from './dobbies-store-selector-location-line-item';\r\n\r\nexport interface IStoreSelectorLocationLinesProps {\r\n locations?: IFullOrgUnitAvailability[];\r\n resources: IDobbiesStoreSelectorResources;\r\n preferredDistanceUnit?: string;\r\n\r\n alreadySelectedLocation?: OrgUnitLocation;\r\n outOfStockThreshold: number;\r\n enableOutOfStockCheck: boolean;\r\n storeLocatorView?: boolean;\r\n selectedStoreLocationId?: string;\r\n isPreferredStoreEnabled?: boolean;\r\n displayList?: boolean;\r\n isLocationDisabled?: boolean;\r\n sortByName: boolean; // VSI Customization\r\n url: string; // VSI Customization\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n linkText: string;\r\n onClick: (locationId: string | undefined) => void;\r\n preferredStoreLocationId: string | null;\r\n onSetAsPreferredStore: (locationId: string | undefined) => void;\r\n onRemovePreferredStore: () => void;\r\n /** The telemetry content */\r\n telemetryContent?: ITelemetryContent;\r\n onLocationSelected(location: OrgUnitLocation | undefined): void;\r\n}\r\n\r\n/**\r\n * Displays all the location line items, or null if none exists\r\n */\r\n@observer\r\nexport class StoreSelectorLocationLines extends React.PureComponent {\r\n private selectedLocationRef: React.RefObject;\r\n\r\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\r\n\r\n constructor(props: IStoreSelectorLocationLinesProps) {\r\n super(props);\r\n this.selectedLocationRef = React.createRef();\r\n }\r\n\r\n public componentDidUpdate(prevProps: IStoreSelectorLocationLinesProps): void {\r\n if (this.props.selectedStoreLocationId !== prevProps.selectedStoreLocationId) {\r\n this._scrollIntoView();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.locations) {\r\n this._stores = this._sortStores(this.props.locations);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._stores || this._stores.length === 0) {\r\n return null;\r\n }\r\n\r\n let sortedStores = this._stores;\r\n // VSI customization --Remove plantFullFillment Store from store Selector\r\n if (!this.props.sortByName) {\r\n sortedStores = this._stores.sort(\r\n (a, b) => a.OrgUnitAvailability!.OrgUnitLocation!.Distance! - b.OrgUnitAvailability!.OrgUnitLocation!.Distance!\r\n );\r\n }\r\n const removePlantfullfillmentstore = sortedStores.filter((store: any) => {\r\n //any ,need to change\r\n if (\r\n store.OrgUnitAvailability?.OrgUnitLocation?.ChannelId !== 5637150576 &&\r\n store.OrgUnitAvailability?.OrgUnitLocation?.ChannelId !== 5637146076 &&\r\n store.OrgUnitAvailability?.OrgUnitLocation.OrgUnitNumber !== 'S096CNC'\r\n ) {\r\n return store;\r\n }\r\n });\r\n //End Customization\r\n if (!this.props.sortByName) {\r\n sortedStores = this._stores.sort(\r\n (a, b) => a.OrgUnitAvailability!.OrgUnitLocation!.Distance! - b.OrgUnitAvailability!.OrgUnitLocation!.Distance!\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {removePlantfullfillmentstore.map((store, index) => {\r\n return this._renderStoreLocation(store, index);\r\n })}\r\n
\r\n );\r\n }\r\n\r\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\r\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\r\n\r\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\r\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\r\n return (\r\n orgUnitLocation && (\r\n this.props.onClick(orgUnitLocation.OrgUnitNumber)}\r\n ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? this.selectedLocationRef : undefined}\r\n >\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n this.props.isPreferredStoreEnabled &&\r\n this.props.preferredStoreLocationId &&\r\n value?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n private _scrollIntoView = () => {\r\n const selectedLocationDiv = this.selectedLocationRef.current;\r\n const parent = selectedLocationDiv?.parentElement;\r\n if (selectedLocationDiv && parent) {\r\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop;\r\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\r\n }\r\n }\r\n };\r\n\r\n private _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\r\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\r\n false;\r\n\r\n private _isProductInStock = (ItemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n if (!this.props.enableOutOfStockCheck) {\r\n return true;\r\n }\r\n\r\n if (ItemAvailabilities && ItemAvailabilities.length > 0) {\r\n return ItemAvailabilities[0].AvailableQuantity ? ItemAvailabilities[0].AvailableQuantity > 0 : false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n private _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (availabilityWithHours?.ProductInventoryInformation && availabilityWithHours?.ProductInventoryInformation.length > 0) {\r\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\r\n if (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\r\n ) {\r\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n private _mapResources = (resources: IDobbiesStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n storeLinksText: resources.storeLinksText,\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.selectStoreText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\n\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\nexport interface IStoreSelectorSearchFormProps {\r\n resources: {\r\n searchInputAriaLabel: string;\r\n searchButtonAriaLabel: string;\r\n searchPlaceholderText: string;\r\n seeAllStoresText: string;\r\n viewListText: string;\r\n viewMapText: string;\r\n findText: string;\r\n };\r\n\r\n sortByName: boolean;\r\n id: string;\r\n value: string;\r\n isMapDisabled?: boolean;\r\n showAllStores?: boolean;\r\n displayList?: boolean;\r\n locatorView?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n /** The telemetry content */\r\n telemetryContent?: ITelemetryContent;\r\n sortLocations(): void;\r\n onShowAllStores(): void;\r\n onToggleListMapViewState(): void;\r\n performSearch(searchTerm: string): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n}\r\n\r\n/**\r\n * Simple search form consisting of search text and a search button\r\n */\r\nexport class StoreSelectorSearchForm extends React.PureComponent {\r\n private searchBoxRef: React.RefObject = React.createRef();\r\n private storeSearchAttributes: Msdyn365.IDictionary | undefined;\r\n private showAllStoreAttributes: Msdyn365.IDictionary | undefined;\r\n private toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n constructor(props: IStoreSelectorSearchFormProps) {\r\n super(props);\r\n this.state = { value: '' };\r\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\r\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\r\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\r\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: { searchButtonAriaLabel, searchPlaceholderText, seeAllStoresText, viewListText, viewMapText, findText },\r\n id,\r\n value,\r\n isMapDisabled,\r\n showAllStores,\r\n displayList,\r\n locatorView,\r\n onShowAllStores,\r\n onToggleListMapViewState,\r\n sortLocations,\r\n sortByName\r\n } = this.props;\r\n\r\n const toggleButtonText = displayList ? viewMapText : viewListText;\r\n\r\n return (\r\n
\r\n \r\n
\r\n )}\r\n {locatorView && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n private _searchTextChanged = async (e: React.ChangeEvent): Promise => {\r\n const inputValue: string = e.target.value;\r\n\r\n await this.props.searchTermChanged(inputValue);\r\n };\r\n\r\n private _onSubmit = async (e: React.SyntheticEvent): Promise => {\r\n e.preventDefault(); // Prevents form submission\r\n this.searchBoxRef.current?.blur();\r\n await this.props.performSearch(this.props.value);\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\n\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IDobbiesStoreSelectorResources, ITermsOfServiceLinkData } from '../dobbies-store-selector.props.autogenerated';\r\n\r\nexport interface IStoreSelectorEmptyMessageProps {\r\n resources: IDobbiesStoreSelectorResources;\r\n}\r\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

\r\n
\r\n);\r\n\r\nexport const StoreSelectorWaiting: React.FC = () =>
;\r\n\r\nexport interface IStoreSelectorTermsOfServiceProps {\r\n link?: ITermsOfServiceLinkData;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\r\n if (link) {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-store-select__terms-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button'\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport interface IStoreSelectorFoundLocationsMessage {\r\n resources: IDobbiesStoreSelectorResources;\r\n locations?: IFullOrgUnitAvailability[];\r\n searchRadius: number;\r\n preferredDistanceUnit: string;\r\n isSeeAllStore: boolean;\r\n}\r\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\r\n locations,\r\n searchRadius,\r\n resources,\r\n isSeeAllStore,\r\n preferredDistanceUnit\r\n}) => {\r\n if (locations) {\r\n const storeCountMessage =\r\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n return (\r\n
\r\n {isSeeAllStore\r\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\r\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/// \r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IDobbiesStoreSelectorData } from './dobbies-store-selector.data';\r\nimport {\r\n IDobbiesStoreSelectorProps,\r\n mode as modeEnum,\r\n searchRadiusUnit,\r\n style as styleEnum\r\n} from './dobbies-store-selector.props.autogenerated';\r\n\r\nimport {\r\n StoreSelectorEmptyMessage,\r\n StoreSelectorFoundLocationsMessage,\r\n StoreSelectorLocationLines,\r\n StoreSelectorSearchForm,\r\n StoreSelectorTermsOfService,\r\n StoreSelectorWaiting\r\n} from './components';\r\n\r\nimport {\r\n getFullAvailableInventoryNearby,\r\n GetFullAvailableInventoryNearbyInput,\r\n getOrgUnitLocationsByArea,\r\n GetOrgUnitLocationsByAreaInput,\r\n IFullOrgUnitAvailability\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport { IStoreInfo } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { getAllOrgUnitLocationsByArea, GetAllOrgUnitLocationsByAreaInput } from '../../actions/get-all-store-location-information';\r\nimport {\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n NodeTag\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport classname from 'classnames';\r\nexport interface IStoreSelectorState {\r\n isSearchInProgress: boolean;\r\n searchTerm?: string;\r\n isSeeAllStoreValue: boolean;\r\n isLocationDisabled?: boolean;\r\n sortByName: boolean;\r\n latitudeVal: number;\r\n longitudeVal: number;\r\n radiusVal: number;\r\n allStore: IFullOrgUnitAvailability[];\r\n}\r\n\r\nexport interface IStoreSelectorViewProps extends IDobbiesStoreSelectorProps {\r\n state: IStoreSelectorState;\r\n\r\n // Containers:\r\n ModuleProps: IModuleProps;\r\n BodyContainerProps: INodeProps;\r\n FooterContainerProps: INodeProps;\r\n HeaderContainerProps: INodeProps;\r\n HeaderProps?: React.ReactNode;\r\n\r\n // Components\r\n locationsMessage?: React.ReactNode;\r\n search?: React.ReactNode;\r\n spinner?: React.ReactNode;\r\n locationsList?: React.ReactNode;\r\n noLocationsMessage?: React.ReactNode;\r\n terms?: React.ReactNode;\r\n headerText?: React.ReactNode;\r\n\r\n callbacks: {\r\n closeDialog(): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n performSearch(searchTerm: string): Promise;\r\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\r\n getAndUpdateUserLocation(): Promise;\r\n attachMapAutoSuggest(): Promise;\r\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\r\n setPreferredStore(storeId: string | undefined): Promise;\r\n removePreferredStore(): Promise;\r\n setSelectedStore(storeId: string | undefined): Promise;\r\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\r\n };\r\n}\r\n\r\n/**\r\n *\r\n * Pick Up In Store module\r\n * @extends React.Component>}\r\n */\r\n@observer\r\nclass StoreSelector extends React.Component, IStoreSelectorState> {\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n private telemetryContent: ITelemetryContent;\r\n\r\n constructor(props: IDobbiesStoreSelectorProps) {\r\n super(props);\r\n this.state = {\r\n isSearchInProgress: true,\r\n searchTerm: '',\r\n isSeeAllStoreValue: false,\r\n sortByName: false,\r\n latitudeVal: 0,\r\n longitudeVal: 0,\r\n radiusVal: 1,\r\n allStore: []\r\n };\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.sortLocations = this.sortLocations.bind(this);\r\n }\r\n\r\n public sortLocations() {\r\n this.setState({\r\n sortByName: !this.state.sortByName\r\n });\r\n }\r\n\r\n // tslint:disable-next-line: max-func-body-length\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled }\r\n } = this.props;\r\n\r\n // Adding Timeout to make sure it loads the data based upon the preferred store.\r\n setTimeout(() => {\r\n this._getAndUpdateStoreLocation();\r\n }, 0);\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result && this.props.data.storeSelectorStateManager.result.isDialogOpen,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (context?.id === this.props.id) {\r\n this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result &&\r\n this.props.data.storeSelectorStateManager.result.context &&\r\n this.props.data.storeSelectorStateManager.result.context.id,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (!context || context?.id === this.props.id) {\r\n await this._searchTermChanged('');\r\n this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\r\n this.props.data.storeSelectorStateManager.result\r\n ?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\r\n })\r\n .then()\r\n .catch();\r\n }\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\r\n });\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n when(\r\n () => {\r\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\r\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\r\n return isMapApiLoaded && isDialogOpen && isSameContext;\r\n },\r\n async () => {\r\n setTimeout(async () => {\r\n await this._attachMapAutoSuggest();\r\n }, 0);\r\n }\r\n );\r\n }\r\n\r\n await this._getAllStores(31.5070767, 74.4315609, 0, 0);\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IDobbiesStoreSelectorProps): boolean {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n if (context && context.id === this.props.id) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n // tslint:disable-next-line:max-func-body-length cyclomatic-complexity\r\n public render(): JSX.Element {\r\n const {\r\n config: { termsOfServiceLink, className, heading, mode, style, setAsPreferredStore, showAllStores, lookupRadius },\r\n context: {\r\n telemetry,\r\n app: { config: appConfig },\r\n actionContext: {\r\n requestContext: { channel, cookies }\r\n }\r\n },\r\n resources,\r\n data: {\r\n availabilitiesWithHours: { result: availabilitiesWithHours },\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations }\r\n }\r\n } = this.props;\r\n /* VSI-Customization -- START Make URL and pass it down to component */\r\n const sitePath = this.props.context.request.sitePath;\r\n const urlOrigin = this.props.context.request.url.requestUrl.origin;\r\n const url = urlOrigin.concat((sitePath && `${sitePath}/`) || '/');\r\n /* VSI-Customization -- END */\r\n\r\n const isMapDisabled = channel && channel.BingMapsApiKey && channel.BingMapsEnabled ? false : true;\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n const isDialogOpen: boolean = storeSelectorStateManager\r\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\r\n : false;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const inlineView = styleDefault === styleEnum.inline;\r\n const locatorView = modeDefault === modeEnum.findStores;\r\n const hideInventory = locatorView;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\r\n const displayList = storeSelectorStateManager?.listMapViewState?.displayList;\r\n const isPreferredStoreEnabled = setAsPreferredStore && cookies?.isConsentGiven();\r\n const showLocationView =\r\n context &&\r\n (context.showMapViewLink === undefined || context.showMapViewLink) &&\r\n locatorView &&\r\n storeSelectorStateManager?.isMapModuleLoaded;\r\n\r\n const StoreSelectorActions = {\r\n toggleListMapViewState(): void {\r\n storeSelectorStateManager?.toggleListMapViewState();\r\n }\r\n };\r\n\r\n if (!(channel && channel.BingMapsApiKey)) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n }\r\n\r\n const configHeading: string | any = heading\r\n ? heading\r\n : locatorView\r\n ? resources.storeLocatorHeaderText\r\n : resources.storeSelectorHeaderText;\r\n const preferredDistanceUnit =\r\n this.props.config.searchRadiusUnit === searchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\r\n\r\n const viewProps = {\r\n ...(this.props as IDobbiesStoreSelectorProps),\r\n state: this.state,\r\n\r\n ModuleProps: {\r\n tag: inlineView ? ('div' as NodeTag) : Modal,\r\n moduleProps: this.props,\r\n className: classname(\r\n `ms-store-${inlineView ? 'locate' : 'select'}`,\r\n className,\r\n inlineView ? '' : 'msc-modal-input-required'\r\n ),\r\n autoFocus: true,\r\n fade: true,\r\n isOpen: isDialogOpen,\r\n onClosed: this._closeDialog,\r\n horizontalPosition: 'center',\r\n verticalPosition: 'center',\r\n toggle: this._closeDialog\r\n },\r\n HeaderContainerProps: {\r\n tag: inlineView ? ('div' as NodeTag) : ModalHeader,\r\n className: `ms-store-select__${inlineView ? 'header' : 'modal-header'}`,\r\n toggle: this._closeDialog\r\n },\r\n HeaderProps: configHeading && (\r\n \r\n ),\r\n FooterContainerProps: {\r\n tag: inlineView ? ('div' as NodeTag) : ModalFooter,\r\n className: `ms-store-select__${inlineView ? 'footer' : 'modal-footer'} ${!displayList ? 'map-only-view' : ''}`\r\n },\r\n BodyContainerProps: {\r\n tag: inlineView ? ('div' as NodeTag) : ModalBody,\r\n className: `ms-store-select__${inlineView ? 'body' : 'modal-body'}`\r\n },\r\n locationsMessage: !this.state.isLocationDisabled && (\r\n \r\n ),\r\n search: (\r\n this._getAndUpdateStoreLocation(true)}\r\n onToggleListMapViewState={StoreSelectorActions.toggleListMapViewState}\r\n displayList={displayList}\r\n locatorView={showLocationView}\r\n productPickUpDeliveryOptions={storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions}\r\n telemetryContent={this.telemetryContent}\r\n />\r\n ),\r\n spinner: ,\r\n locationsList: ((availabilitiesWithHours && availabilitiesWithHours.length) || (storeLocations && storeLocations.length)) && (\r\n \r\n ),\r\n noLocationsMessage: ,\r\n terms: (\r\n \r\n ),\r\n // Not being used in current context, we can use it here to pass more props.\r\n headerText: (\r\n {heading ? heading : locatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\r\n ),\r\n\r\n callbacks: {\r\n sortLocations: this.sortLocations,\r\n searchTermChanged: this._searchTermChanged,\r\n performSearch: this._performSearch,\r\n closeDialog: this._closeDialog,\r\n selectedLocation: this._onOrgUnitLocationSelected,\r\n getAndUpdateUserLocation: () => {\r\n this._getAndUpdateStoreLocation();\r\n return Promise.resolve();\r\n },\r\n attachMapAutoSuggest: this._attachMapAutoSuggest,\r\n onSuggestionSelected: this._onOrgUnitLocationSelected,\r\n setPreferredStore: this._setPreferredStore,\r\n removePreferredStore: this._removePreferredStore,\r\n setSelectedStore: this._setSelectedStore,\r\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\r\n }\r\n } as IStoreSelectorViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.termsOfServiceLink) {\r\n this.props.config.termsOfServiceLink.linkText = event.target.value;\r\n }\r\n };\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading = event.target.value);\r\n\r\n private _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n config: { autoSuggestOptions },\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(\r\n `#ms-store-select__search-box_${this.props.id}`,\r\n `#ms-store-select__search-box-container_${this.props.id}`,\r\n this._onSuggestionSelected\r\n );\r\n },\r\n errorCallback: () => {\r\n if (telemetry) {\r\n telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: channel?.BingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n private _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n const context =\r\n this.props.data.storeSelectorStateManager &&\r\n this.props.data.storeSelectorStateManager.result &&\r\n this.props.data.storeSelectorStateManager.result?.context;\r\n if (context && context?.id === this.props.id) {\r\n await this._searchTermChanged(result.formattedSuggestion);\r\n await this._performSearch(result.formattedSuggestion);\r\n }\r\n };\r\n\r\n private _setPreferredStore = async (storeId: string | undefined): Promise => {\r\n if (!storeId) {\r\n return;\r\n }\r\n\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n config: { mode },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations },\r\n availabilitiesWithHours: { result: availabilitiesWithHours }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n\r\n let stores: IFullOrgUnitAvailability[];\r\n if (modeDefault === modeEnum.findStores && storeLocations) {\r\n stores = storeLocations;\r\n } else {\r\n stores = availabilitiesWithHours!;\r\n }\r\n\r\n const preferedStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\r\n\r\n await storeSelectorStateManager.setPreferredStoreLocation(\r\n storeId,\r\n preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\r\n cookies?.isConsentGiven(),\r\n preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\r\n preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\r\n );\r\n };\r\n\r\n private _removePreferredStore = async (): Promise => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.clearPreferredStore(cookies?.isConsentGiven());\r\n };\r\n\r\n private _setSelectedStore = async (storeId: string | undefined): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\r\n };\r\n\r\n private _performSearch = async (searchTerm: string): Promise => {\r\n const {\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!searchTerm || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\r\n\r\n /* VSI-Customization -- Filter out store zip code */\r\n const filteredStore: any = this.state.allStore?.filter(\r\n (str: any) =>\r\n (str?.OrgUnitAvailability?.OrgUnitLocation.OrgUnitName?.toLowerCase()?.includes(searchTerm.trim()?.toLowerCase()) ||\r\n searchTerm\r\n .trim()\r\n ?.toLowerCase()\r\n ?.includes(str?.OrgUnitAvailability?.OrgUnitLocation.OrgUnitName?.toLowerCase())) &&\r\n str?.OrgUnitAvailability?.OrgUnitLocation.OrgUnitNumber !== 'S096CNC'\r\n );\r\n const searchStoreStr = filteredStore?.length >= 1 ? filteredStore[0]?.OrgUnitAvailability?.OrgUnitLocation.Zip : searchTerm;\r\n const location = await storeSelectorStateManager.geoLocate(searchStoreStr.trim() !== '' ? searchStoreStr : '0', actionContext);\r\n /* VSI-Customization -- END */\r\n\r\n if (location) {\r\n await this._updateLocations(location.latitude, location.longitude);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n\r\n this.setState({ isSearchInProgress: false });\r\n };\r\n\r\n private _searchTermChanged = async (searchTerm: string): Promise => {\r\n this.setState({ searchTerm: searchTerm });\r\n };\r\n\r\n private _getAndUpdateStoreLocation = (showAllStores?: boolean): void => {\r\n const {\r\n config: { style },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n\r\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\r\n\r\n if (navigator && navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n async position => {\r\n this.setState({ isLocationDisabled: false });\r\n if (showAllStores) {\r\n this.setState({ isSeeAllStoreValue: true });\r\n await this._searchTermChanged('');\r\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\r\n } else {\r\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\r\n }\r\n\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n async error => {\r\n // If the location setting is turned off\r\n console.log('Error', error);\r\n if (error.PERMISSION_DENIED) {\r\n this.setState({ isLocationDisabled: true });\r\n if (showAllStores) {\r\n this.setState({ isSeeAllStoreValue: true });\r\n await this._searchTermChanged('');\r\n await this._updateLocations(void 0, void 0, 0);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n }\r\n\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n {\r\n timeout: 5000\r\n }\r\n );\r\n } else {\r\n this.setState({ isSearchInProgress: false });\r\n }\r\n };\r\n\r\n private _closeDialog = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n this.setState({ searchTerm: '' });\r\n\r\n if (storeSelectorStateManager) {\r\n return storeSelectorStateManager.closeDialog();\r\n }\r\n };\r\n\r\n private _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n config: { style },\r\n telemetry\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const context = storeSelectorStateManager.context;\r\n const id: string = context && context.id ? context.id : this.props.id;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n await storeSelectorStateManager\r\n .setOrgUnitStoreInformation({\r\n id,\r\n showMapViewLink: context && context.showMapViewLink,\r\n isDialog: styleDefault === styleEnum.dialog,\r\n orgUnitStoreInformation,\r\n onLocationSelected: orgUnitLocation => {\r\n // TO-DO handle event for when location in selected\r\n return Promise.resolve();\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (telemetry) {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to Update store location state');\r\n }\r\n return;\r\n });\r\n return;\r\n };\r\n\r\n /**\r\n * Method to update user location.\r\n * @param latitude - User location.\r\n * @param longitude - User location.\r\n * @param radius - Search Criteria Radius.\r\n * @param distanceUnitValue - Search Criteria distance.\r\n * @returns Void promise.\r\n */\r\n private readonly _getAllStores = async (\r\n latitude?: number,\r\n longitude?: number,\r\n radius?: number,\r\n distanceUnitValue?: number\r\n ): Promise => {\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n\r\n const orgUnitLocationsInput = new GetAllOrgUnitLocationsByAreaInput(\r\n latitude,\r\n longitude,\r\n radius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n const orgUnitLocations = await getAllOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\r\n if (orgUnitLocations?.length >= 1) {\r\n this.setState({ allStore: orgUnitLocations });\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\r\n const {\r\n telemetry,\r\n config: { mode, lookupRadius, style },\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\r\n const distanceUnitValue = this.props.config.searchRadiusUnit === searchRadiusUnit.kilometers ? 1 : 0;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\r\n let lat = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\r\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\r\n if (styleDefault === styleEnum.inline) {\r\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\r\n if (lastInlineStoreLocation && !this.state.searchTerm) {\r\n lat = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : lat;\r\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\r\n }\r\n await storeSelectorStateManager?.setLastInlineStoreInfo(lat, long);\r\n }\r\n\r\n if (modeDefault === modeEnum.findStores) {\r\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\r\n lat,\r\n long,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\r\n if (orgUnitLocations) {\r\n const tempSortedLocations = orgUnitLocations.sort(\r\n (a, b) => a.OrgUnitAvailability!.OrgUnitLocation!.Distance! - b.OrgUnitAvailability!.OrgUnitLocation!.Distance!\r\n );\r\n\r\n await this._setOrgUnitStoreInformation(tempSortedLocations);\r\n await this._setSelectedStore(undefined);\r\n }\r\n return;\r\n }\r\n\r\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n if (!storeSelectorStateManager.context.product) {\r\n // TODO: Use alternative search method here to not make inventory check\r\n return;\r\n }\r\n\r\n const input = new GetFullAvailableInventoryNearbyInput(\r\n storeSelectorStateManager.context.product.RecordId,\r\n lat || 0,\r\n long || 0,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug(`Unable to get full available inventory near by`);\r\n });\r\n };\r\n\r\n private _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\r\n const {\r\n telemetry,\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager) {\r\n if (location && storeSelectorStateManager.context) {\r\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\r\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug(`Unable to get on org unit location selected`);\r\n });\r\n }\r\n\r\n await storeSelectorStateManager.closeDialog();\r\n }\r\n };\r\n}\r\n\r\nexport default StoreSelector;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { IStoreSelectorViewProps } from './dobbies-store-selector';\r\n\r\nconst StoreSelectorView: React.FC = props => {\r\n const {\r\n BodyContainerProps,\r\n FooterContainerProps,\r\n HeaderContainerProps,\r\n HeaderProps,\r\n ModuleProps,\r\n // headerText,\r\n locationsMessage,\r\n search,\r\n state,\r\n spinner,\r\n locationsList,\r\n noLocationsMessage,\r\n terms\r\n } = props;\r\n\r\n return (\r\n \r\n {HeaderProps}\r\n \r\n {locationsMessage}\r\n {search}\r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\r\n \r\n {terms}\r\n \r\n );\r\n};\r\n\r\nexport default StoreSelectorView;\r\n","import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { getFeatureStatesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\n\r\n/**\r\n * Input class for the getFeatureState data action\r\n */\r\nexport class FeatureStateInput implements IActionInput {\r\n public readonly featureNames: string[] = [\r\n 'Dynamics.AX.Application.RetailB2BEcommerceFeature',\r\n 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature',\r\n 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature',\r\n 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\r\n ];\r\n\r\n public getCacheKey = () => `FeatureState`;\r\n public getCacheObjectType = () => 'FeatureState';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\n/**\r\n * createInput method for the getFeatureState method\r\n * @param inputData The input data passed to the createInput method\r\n */\r\nexport const createGetFeatureStateInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new FeatureStateInput();\r\n};\r\n\r\n/**\r\n * The action method for the getFeatureState data action\r\n * @param input The action input\r\n * @param ctx The action context\r\n */\r\nexport async function getFeatureStateAction(input: FeatureStateInput, ctx: IActionContext): Promise {\r\n const featureState = await getFeatureStatesAsync({ callerContext: ctx }, input.featureNames);\r\n return featureState;\r\n}\r\n\r\n/**\r\n * The getFeatureState data action\r\n * Gets the feature state via the read RetailServer API\r\n * Returns address information associated with the retrieved customer\r\n */\r\nexport const getFeatureStateActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-feature-state',\r\n action: >getFeatureStateAction,\r\n input: createGetFeatureStateInput\r\n});\r\nexport default getFeatureStateActionDataAction;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['dobbies-store-selector'] = {\n c: () => require('partner/modules/dobbies-store-selector/dobbies-store-selector.tsx'),\n $type: 'containerModule',\n da: [{name:'availabilitiesWithHours', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'getAllStores', path:'actions/get-all-store-location-information', runOn: 1},{name:'storeLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-store-selector',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-store-selector'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'actions/get-all-store-location-information';\n let dataAction = require('partner/actions/get-all-store-location-information');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|dobbies-store-selector|dobbies-store-selector'] = {\n c: () => require('partner/modules/dobbies-store-selector/dobbies-store-selector.view.tsx'),\n cn: '__local__-__local__-dobbies-store-selector'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\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 { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["GetAllOrgUnitLocationsByAreaInput","constructor","_Latitude","_Longitude","_Radius","_DistanceUnitValue","_IgnoreLocation","getCacheKey","getCacheObjectType","dataCacheType","this","Latitude","Longitude","Radius","DistanceUnitValue","IgnoreLocation","createGetOrgUnitLocationsByAreaInput","inputData","async","getFeatureState","context","getFeatureStateActionDataAction","FeatureStateInput","getAllOrgUnitLocationsByArea","input","ctx","_featureState$find","undefined","searchArea","featureState","retailMulitplePickupMFeatureState","find","item","Name","IsEnabled","getOrgUnitLocationsByAreaAsync","callerContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","then","locationDeliveryOptions","orgUnitChannel","stores","map","store","ChannelId","channelCollection","length","channelIdList","id","push","getChannelDeliveryOptionsAsync","channelDeliveryOptions","Error","catch","error","trace","message","telemetry","exception","debug","_getLocationPickUpDeliveryModes","locationPromiseList","_locationDeliveryOpti","locationDeliveryOption","_channeldeliveryoption","orgUnitLocation","channelDeleiveryOptions","OrgUnitNumber","OrgUnitAvailability","getStoreHoursAsync","hours","availability","OrgUnitLocation","OrgUnitPickUpDeliveryModes","StoreHours","_getLocationWithHours","Promise","all","getOrgUnitLocationsByAreaDataAction","createObservableDataAction","action","mode","searchRadiusUnit","style","PickUpOptionList","React","props","super","_onSelect","e","preventDefault","deliveryCode","currentTarget","getAttribute","onChange","_rendeDeliveryOptions","bind","_pickupListOptionMenu","state","expandSiteOptions","render","pickupListOptionMenuText","pickupmodeList","className","onClick","role","ref","delivery","key","Code","tabIndex","Description","expandSiteOptionsState","setState","secondsToTime","seconds","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","resources","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","StoreSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","location","onSetAsPreferredStore","onRemovePreferredStore","renderStoreHours","RegularStoreHours","storeHoursList","buildStoreHours","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","displayTime","title","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isCurrentLocation","isInStock","stockStatusLabel","storeLocatorView","index","preferredStoreLocationId","isPreferredStoreEnabled","telemetryContent","productPickUpOptionList","isLocationDisabled","storeName","OrgUnitName","distanceAsString","buildDistanceString","distance","preferredDistanceUnit","round","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","isPreferredStore","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","attributes","getTelemetryAttributes","contentAction","etext","PreferredStore","preferredStoreAttr","RemovePreferredStore","RemovePreferredStoreAttr","deliveryOptionList","storeNameURL","toLowerCase","storeAddressText","slice","console","log","contactInfoHeader","href","url","linkText","storeHoursHeader","availabilityInfoHeader","currentLocation","Object","assign","preferredStoreAriaLabel","removePreferredStore","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStore","setAsPreferredStoreText","StoreSelectorLocationLines","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","ItemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactText","timeText","availabilityText","storeLinksText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","componentDidUpdate","prevProps","selectedStoreLocationId","componentDidMount","locations","_stores","_sortStores","sortedStores","sortByName","sort","a","b","removePlantfullfillmentstore","_store$OrgUnitAvailab","_store$OrgUnitAvailab2","_store$OrgUnitAvailab3","classnames","show","displayList","_renderStoreLocation","_store$OrgUnitAvailab4","_store$OrgUnitAvailab5","deliveryOptions","selected","toString","DeliveryOptions","productPickUpDeliveryOptions","value","_value$OrgUnitAvailab","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","_searchTextChanged","inputValue","target","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","toggleMapViewAttributes","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","findText","isMapDisabled","showAllStores","locatorView","onShowAllStores","onToggleListMapViewState","sortLocations","toggleButtonText","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","color","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","requestContext","onTextChange","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","StoreSelector","handleLinkTextChange","event","config","termsOfServiceLink","handleHeadingChange","heading","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","data","storeSelectorStateManager","result","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","_objectSpread","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_setPreferredStore","_preferedStore$OrgUni","_preferedStore$OrgUni2","_preferedStore$OrgUni3","storeId","cookies","storeLocations","availabilitiesWithHours","modeEnum","pickupInStore","findStores","preferedStore","setPreferredStoreLocation","isConsentGiven","_removePreferredStore","clearPreferredStore","_setSelectedStore","setSelectedStoreLocationId","_this$state$allStore","_filteredStore$","searchTerm","isSearchInProgress","isSeeAllStoreValue","filteredStore","allStore","str","_str$OrgUnitAvailabil","_searchTerm$trim","_searchTerm$trim2","_str$OrgUnitAvailabil2","_str$OrgUnitAvailabil3","includes","trim","searchStoreStr","Zip","geoLocate","_updateLocations","latitude","longitude","_getAndUpdateStoreLocation","styleEnum","dialog","inline","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","closeDialog","_setOrgUnitStoreInformation","styleDefault","setOrgUnitStoreInformation","showMapViewLink","isDialog","orgUnitStoreInformation","resolve","_getAllStores","radius","distanceUnitValue","orgUnitLocationsInput","orgUnitLocations","lookupRadius","calRadius","kilometers","modeDefault","preferredStore","lat","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","GetOrgUnitLocationsByAreaInput","getOrgUnitLocationsByArea","tempSortedLocations","product","GetFullAvailableInventoryNearbyInput","RecordId","getFullAvailableInventoryNearby","warning","_onOrgUnitLocationSelected","latitudeVal","longitudeVal","radiusVal","getTelemetryObject","request","telemetryPageName","friendlyName","_this$props$data$stor4","autoSuggestionEnabled","setTimeout","reaction","_this$props$data$stor2","_this$props$data$stor3","BingMapsEnabled","_this$props$data$stor5","_this$props$context","_this$props$context2","loadMapApi","lang","market","DefaultLanguageId","_this$props$data$stor6","_this$props$data$stor7","_this$props$context3","_this$props$context4","when","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$stor10","isSameContext","shouldComponentUpdate","nextProps","_storeSelectorStateMa","_storeSelectorStateMa2","_storeSelectorStateMa3","app","appConfig","sitePath","requestUrl","origin","concat","inlineView","hideInventory","listMapViewState","showLocationView","isMapModuleLoaded","StoreSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","viewProps","ModuleProps","tag","Modal","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","HeaderContainerProps","ModalHeader","HeaderProps","text","onEdit","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","locationsMessage","search","spinner","locationsList","outOfStockThreshold","enableStockCheck","StoreId","noLocationsMessage","terms","headerText","callbacks","selectedLocation","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","setSelectedStore","renderView","Module","Node","featureNames","createGetFeatureStateInput","getFeatureStateAction","getFeatureStatesAsync","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","displayMap","preferredStoreLocalStorageKey","_readFromToCookie","storeInfo","JSON","parse","_unused","_context","writeToCookie","arguments","StoreName","_writeToCookie","stringify","_removeCookie","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","computed","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchContent","jsonp","crypto","getRandomValues","Uint32Array","query","encodeURI","geolocationApiUrl","script","document","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","reject","_document2","_document3","defer","src","mapAPIReady","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","getGenericAction","module","exports","ReactDOM"],"sourceRoot":""}