{"version":3,"file":"static/js/20.4ee67e564818552c46cc.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.props.autogenerated.ts?994e","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-small-components.tsx?64a1","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-location-line-item/eve-map-location-line-item.components.tsx?0c9c","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-location-lines.tsx?c9b3","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-search-form.tsx?d14a","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-line-pagination.tsx?9846","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.tsx?1e68","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.view.tsx?4d70","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/footer-item.view.tsx?eacc","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/reviews-list.view.tsx?da88","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/footer-item.view.tsx?27ed","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/reviews-list.view.tsx?03f6","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps, IStoreSelectorViewProps } from './index';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IEveMap contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum searchRadiusUnit {\r\n mi = 'mi',\r\n km = 'km'\r\n}\r\n\r\nexport interface IEveMapConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n pushpinOptions?: IPushpinOptionsData;\r\n className?: string;\r\n clientRender?: boolean;\r\n useChannelMfr?: boolean;\r\n autoSuggestionEnabled?: boolean;\r\n autoSuggestOptions?: IAutoSuggestOptionsData;\r\n searchRadiusUnit?: searchRadiusUnit;\r\n lookupRadius: number;\r\n pageLength: number;\r\n defaultLatitudeValue: number;\r\n defaultLongitudeValue: number;\r\n}\r\n\r\nexport interface IEveMapResources {\r\n searchPlaceholderText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n seeAllStoresText: string;\r\n milesShortText: string;\r\n kilometersShortText: string;\r\n contactText: string;\r\n emptyLocationsText: string;\r\n dealerCountMessage: string;\r\n dealerAllCountMessage: string;\r\n dealerCountMessageInKm: string;\r\n dealerDetailsText: string;\r\n dealerDetailsManufacturerCodeText: string;\r\n dealerDetailsLaborRateText: string;\r\n dealerDetailsDescriptionText: string;\r\n dealerDetailsNotesText: string;\r\n dealerDetailsContractCodeText: string;\r\n paginationPrev: string;\r\n paginationNext: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IPushpinOptionsData {\r\n size?: number;\r\n color?: string;\r\n selectionColor?: string;\r\n showIndex?: boolean;\r\n}\r\n\r\nexport interface IAutoSuggestOptionsData {\r\n maxResults?: number;\r\n}\r\n\r\nexport interface IEveMapProps extends Msdyn365.IModule {\r\n resources: IEveMapResources;\r\n config: IEveMapConfig;\r\n}\r\n","// import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IEveMapResources } from '../eve-map.props.autogenerated';\r\n\r\nexport interface IDealerSelectorEmptyMessageProps {\r\n resources: IEveMapResources;\r\n}\r\nexport const DealerSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

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

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

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

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

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

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

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

{resources.contactInfoHeader}

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

{resources.dealerDetailsHeader}

\r\n {renderDealerDetails(location, resources)}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Store location line item component.\r\n */\r\nexport const DealerLocatorLocationLineItemComponent = dealerLocatorLocationLineItem as (\r\n props: IDealerLocatorLocationLineItemProps\r\n) => JSX.Element;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IEveMapResources } from '../eve-map.props.autogenerated';\r\nimport { IDealerLocatorLocationLineItemResources, DealerLocatorLocationLineItemComponent } from './eve-map-location-line-item';\r\nimport { IDealerLocations, IDealerLocation } from '../eve-map';\r\n\r\n/**\r\n * Store selector location lines props interface.\r\n */\r\nexport interface IStoreSelectorLocationLinesProps {\r\n locations?: IDealerLocations[];\r\n resources: IEveMapResources;\r\n preferredDistanceUnit?: string;\r\n selectedStoreLocationId?: string;\r\n displayList?: boolean;\r\n onClick: (locationId: string | undefined) => void;\r\n}\r\n\r\n/**\r\n * Displays all the location line items, or null if none exists.\r\n */\r\n@observer\r\nexport class DealerLocatorLocationLines extends React.PureComponent {\r\n @observable private _stores: IDealerLocations[] | undefined;\r\n\r\n private readonly selectedLocationRef: React.RefObject;\r\n\r\n private storeCounter: number;\r\n\r\n public constructor(props: IStoreSelectorLocationLinesProps) {\r\n super(props);\r\n this.selectedLocationRef = React.createRef();\r\n this.storeCounter = 0;\r\n }\r\n\r\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\r\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\r\n this._scrollIntoView();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.locations) {\r\n this._stores = [...this.props.locations];\r\n }\r\n\r\n reaction(\r\n () => this.props.locations,\r\n () => {\r\n if (this.props.locations) {\r\n this._stores = [...this.props.locations];\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!ArrayExtensions.hasElements(this._stores)) {\r\n return null;\r\n }\r\n this.storeCounter = 0;\r\n\r\n return (\r\n
\r\n {this._stores.map((store, index) => {\r\n return this._renderStoreLocation(store, index);\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On click Handler function.\r\n * @param orgUnitLocation -OrgUnit location.\r\n * @returns Click action on orgUnit Location.\r\n */\r\n private readonly onClickHandler = (orgUnitLocation: IDealerLocation | undefined) => () => {\r\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\r\n };\r\n\r\n private _renderStoreLocation(store: IDealerLocations, index: number): JSX.Element | undefined {\r\n const orgUnitLocation = store?.OrgUnitLocation;\r\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\r\n const defaultAriaSetsize = 0;\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return (\r\n \r\n \r\n
\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Scroll into view.\r\n */\r\n private readonly _scrollIntoView = () => {\r\n // scroll into view to have the page scroll to the top of the list when the page changes.\r\n const selectedLocationDiv = this.selectedLocationRef.current;\r\n const parent = selectedLocationDiv?.parentElement;\r\n if (selectedLocationDiv && parent) {\r\n // if (parent.scrollTop + parent.clientHeight > selectedLocationDiv.offsetTop) {\r\n // parent.scrollTop = selectedLocationDiv.offsetTop - parent.offsetTop - 20;\r\n // } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\r\n // // parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\r\n // }\r\n\r\n // Set the parent to the location of the selected dealer and slide it down by a small 20 px buffer.\r\n parent.scrollTop = selectedLocationDiv.offsetTop - parent.offsetTop - 20;\r\n }\r\n };\r\n\r\n /**\r\n * Is current location.\r\n * @param location - Org unit location.\r\n * @returns The current location.\r\n */\r\n // private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\r\n // (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\r\n // false;\r\n\r\n /**\r\n * Map resources.\r\n * @param resources - Store resoureces.\r\n * @returns Resources.\r\n */\r\n private readonly _mapResources = (resources: IEveMapResources): IDealerLocatorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n dealerDetailsHeader: resources.dealerDetailsText,\r\n dealerDetailsManufacturerCodeText: resources.dealerDetailsManufacturerCodeText,\r\n dealerDetailsLaborRateText: resources.dealerDetailsLaborRateText,\r\n dealerDetailsDescriptionText: resources.dealerDetailsDescriptionText,\r\n dealerDetailsNotesText: resources.dealerDetailsNotesText,\r\n dealerDetailsContractCodeText: resources.dealerDetailsContractCodeText\r\n };\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { KeyCodes } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Selector Search Form Props interface.\r\n */\r\nexport interface IDealerLocatorSearchFormProps {\r\n resources: {\r\n searchInputAriaLabel: string;\r\n searchButtonAriaLabel: string;\r\n searchPlaceholderText: string;\r\n seeAllStoresText: string;\r\n };\r\n id: string;\r\n value: string;\r\n performSearch(searchTerm: string): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n}\r\n\r\n/**\r\n * Simple search form consisting of search text and a search button.\r\n */\r\nexport class DealerLocatorSearchForm extends React.PureComponent {\r\n private readonly searchBoxRef: React.RefObject = React.createRef();\r\n\r\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private previousValue: string = '';\r\n\r\n private isSearchResultOpened: boolean = false;\r\n\r\n public constructor(props: IDealerLocatorSearchFormProps) {\r\n super(props);\r\n this.state = { value: '' };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: { searchButtonAriaLabel, searchPlaceholderText },\r\n id,\r\n value\r\n } = this.props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handles the key press on the input box.\r\n * @param event - Event object.\r\n */\r\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\r\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\r\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\r\n // In order to avoid that. Checking if the search result is open or not.\r\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\r\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\r\n if (activeDescedantValue) {\r\n if (this.previousValue === '') {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n return;\r\n }\r\n\r\n if (activeDescedantValue !== this.previousValue) {\r\n this.previousValue = activeDescedantValue;\r\n this.isSearchResultOpened = true;\r\n } else {\r\n this.isSearchResultOpened = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method called on search text changed.\r\n * @param event - Input value.\r\n */\r\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\r\n const inputValue: string = event.target.value;\r\n\r\n await this.props.searchTermChanged(inputValue);\r\n };\r\n\r\n /**\r\n * Method called on search submit.\r\n * @param event - Input value.\r\n */\r\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\r\n event.preventDefault(); // Prevents form submission\r\n this.searchBoxRef.current?.blur();\r\n if (!this.isSearchResultOpened) {\r\n await this.props.performSearch(this.props.value);\r\n }\r\n this.isSearchResultOpened = false;\r\n };\r\n}\r\n","import React from 'react';\r\n// import { ICartResources } from '../../definition-extensions/cart.ext.props.autogenerated';\r\n// import { ICheckoutResources } from '../../definition-extensions/checkout.ext.props.autogenerated';\r\n\r\ninterface IEveLinePaginationProps {\r\n nextPage: (e: React.MouseEvent) => void;\r\n prevPage: (e: React.MouseEvent) => void;\r\n changePage: (page: number) => void;\r\n currentPage: number;\r\n numPages: number;\r\n prev: string;\r\n next: string;\r\n}\r\n\r\n/**\r\n * Renders pagination navigation on the page, which displays 4 buttons that allow\r\n * user to navigate to the first, last, next or previous pages. Also displays\r\n * the current page out of the total number of pages. ( ie. 5/7 )\r\n *\r\n * @param {(e: React.MouseEvent) => void} nextPage\r\n * @param {(e: React.MouseEvent) => void} prevPage\r\n * @param {(page: number) => void} changePage\r\n * @param {number} currentPage\r\n * @param {number} numPages\r\n * @param {ICartResources} resources\r\n * @return {*} {React.ReactNode}\r\n */\r\nexport const EveLinePagination: React.FC = ({\r\n nextPage,\r\n prevPage,\r\n changePage,\r\n currentPage,\r\n numPages,\r\n prev,\r\n next\r\n}) => {\r\n const firstPage: number = 1;\r\n const baseClassName = 'eve-pagination';\r\n\r\n return (\r\n
\r\n {numPages > 1 && (\r\n <>\r\n <>\r\n changePage(1)}\r\n >\r\n {`${firstPage}`}\r\n \r\n \r\n {prev}\r\n \r\n \r\n
\r\n \r\n {currentPage} / {numPages}\r\n \r\n
\r\n <>\r\n \r\n {next}\r\n \r\n changePage(numPages)}\r\n >\r\n {`${numPages}`}\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/// \r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleProps, NodeTag, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport * as _ from 'lodash';\r\n\r\nimport { IEveMapData } from './eve-map.data';\r\nimport { IEveMapProps, IPushpinOptionsData, searchRadiusUnit as SearchRadiusUnit } from './eve-map.props.autogenerated';\r\nimport getDealerLocations, { GetDealerLocationsInput } from '../../actions/get-dealer-locations.action';\r\nimport { IDealerEntity } from '../../actions/DataServiceEntities.g';\r\nimport { getDealerDetailsAsync } from '../../actions/DataActionExtension.g';\r\nimport {\r\n DealerSelectorWaiting,\r\n DealerSelectorEmptyMessage,\r\n DealerSelectorFoundLocationsMessage,\r\n DealerLocatorLocationLines,\r\n DealerLocatorSearchForm\r\n} from './components';\r\nimport { EveLinePagination } from './components/eve-line-pagination';\r\n\r\n/**\r\n * Header Interface.\r\n */\r\nexport interface IHeader {\r\n headerProps: INodeProps;\r\n heading: React.ReactNode;\r\n}\r\n\r\n/**\r\n * MapViewProps Interface.\r\n */\r\nexport interface IMapViewProps extends IEveMapProps {\r\n ModuleProps: IModuleProps;\r\n Header: IHeader;\r\n MapProps: INodeProps;\r\n Map: Microsoft.Maps.Map | undefined;\r\n locationsMessage?: React.ReactNode;\r\n search?: React.ReactNode;\r\n spinner?: React.ReactNode;\r\n locationsList?: React.ReactNode;\r\n noLocationsMessage?: React.ReactNode;\r\n dealerResultContainerProps?: INodeProps;\r\n state: IEveMapState;\r\n pagination: React.ReactNode;\r\n}\r\n\r\n/**\r\n * EveMap State Interface.\r\n */\r\nexport interface IEveMapState {\r\n searchTerm?: string;\r\n isSearchInProgress: boolean;\r\n distanceResults: IDistanceResults;\r\n mapSessionId: string | undefined;\r\n dealerLocations: IFullOrgUnitAvailability[] | undefined;\r\n newDealerLocations: IDealerLocations[] | undefined;\r\n // state value that will store the current page\r\n currentPage: number;\r\n}\r\n\r\nexport interface ICoordinates {\r\n latitude: number;\r\n longitude: number;\r\n}\r\n\r\nexport interface IDistanceMatrixResult {\r\n destinationIndex: number;\r\n originIndex: number;\r\n totalWalkDuration: number;\r\n // travelDistance arrives in kilometers\r\n travelDistance: number;\r\n travelDuration: number;\r\n}\r\n\r\nexport interface IDistanceResults {\r\n originCoords: ICoordinates;\r\n resultsCoords: IDistanceMatrixResult[];\r\n}\r\n\r\nexport interface IDealerLocation {\r\n ChannelId?: number;\r\n Latitude?: number;\r\n Longitude?: number;\r\n OrgUnitName?: string;\r\n OrgUnitNumber?: string;\r\n Address?: string;\r\n PhoneNumber?: string;\r\n Distance?: number;\r\n ContractCode?: string;\r\n ContractCompensationRate?: number;\r\n ContractDescription?: string;\r\n ContractLaborRate?: number;\r\n ContractListedUnlisted?: boolean;\r\n ContractNotes?: string;\r\n ContractStatus?: boolean;\r\n ManufacturerCode?: string;\r\n ContractList?: IDealerEntity[];\r\n RecId?: number;\r\n}\r\n\r\nexport interface IDealerLocations {\r\n OrgUnitAvailability?: {\r\n OrgUnitLocation?: IDealerLocation;\r\n };\r\n OrgUnitLocation?: IDealerLocation;\r\n}\r\n\r\n// xoxo - does this actually need to be here?\r\nexport interface IEveMapPropsExtended extends IEveMapProps {\r\n mapData: any;\r\n}\r\n\r\n/**\r\n *\r\n * Map component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass Map extends React.PureComponent {\r\n @observable public map: Microsoft.Maps.Map | undefined;\r\n\r\n @observable public selectedDealer: IDealerEntity[] | undefined;\r\n\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n\r\n private readonly mapRef: React.RefObject = React.createRef();\r\n\r\n private readonly kmToMiValue: number = 1.609;\r\n\r\n private readonly defaultLookUpRadius: number = 200;\r\n\r\n private readonly defaultPageLength: number = 20;\r\n\r\n public constructor(props: IEveMapPropsExtended) {\r\n super(props);\r\n this.state = {\r\n searchTerm: '',\r\n isSearchInProgress: true,\r\n distanceResults: { originCoords: { latitude: 0, longitude: 0 }, resultsCoords: [] },\r\n dealerLocations: [],\r\n newDealerLocations: [],\r\n mapSessionId: undefined,\r\n // set the page to the first page when the module first renders\r\n currentPage: 1\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\r\n } = this.props;\r\n\r\n // // Adding Timeout to make sure it loads the data based upon the preferred store.\r\n setTimeout(() => {\r\n this._getAndUpdateStoreLocation();\r\n }, 0);\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (!context || context.id === this.props.id) {\r\n await this._searchTermChanged('');\r\n this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\r\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\r\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n\r\n this.map?.setOptions({ navigationBarMode: Microsoft.Maps.NavigationBarMode.minified });\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n this._initMap();\r\n this._updateMap();\r\n }\r\n\r\n when(\r\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n () => {\r\n this._initMap();\r\n }\r\n );\r\n\r\n reaction(\r\n () => {\r\n return [\r\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\r\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n this.map\r\n ];\r\n },\r\n () => {\r\n this._updateMap();\r\n }\r\n );\r\n\r\n if (isAutoSuggestionEnabled) {\r\n when(\r\n () => {\r\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\r\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\r\n return isMapApiLoaded && isDialogOpen && isSameContext;\r\n },\r\n () => {\r\n setTimeout(async () => {\r\n await this._attachMapAutoSuggest();\r\n }, 0);\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(): boolean {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n if (context && context.id === this.props.id) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { heading, className, lookupRadius, searchRadiusUnit },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n resources\r\n } = this.props;\r\n\r\n const { newDealerLocations, currentPage } = this.state;\r\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\r\n const preferredDistanceUnit = searchRadiusUnit === SearchRadiusUnit.km ? resources.kilometersShortText : resources.milesShortText;\r\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const pageLength = this.props.config.pageLength || this.defaultPageLength;\r\n const paginatedLocationsList = newDealerLocations?.slice((currentPage - 1) * pageLength, pageLength * currentPage);\r\n const numPages = newDealerLocations ? Math.ceil(newDealerLocations.length / pageLength) : 1;\r\n\r\n const nextPage = () => {\r\n changePage(this.state.currentPage + 1);\r\n };\r\n\r\n const prevPage = () => {\r\n changePage(this.state.currentPage - 1);\r\n };\r\n\r\n const changePage = (page: number) => {\r\n // Don't make a page change if it is below the first page or greater than the last page\r\n if (page <= 0 || page > numPages) {\r\n return;\r\n }\r\n\r\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\r\n\r\n const scrollElement = document.querySelector('div.ms-store-select__locations.show');\r\n\r\n if (scrollElement !== null) {\r\n scrollElement.scrollTop = 0;\r\n }\r\n\r\n this.setState(\r\n { currentPage: page },\r\n // Rerender the map with pins for current page\r\n () => this._updateMap()\r\n );\r\n };\r\n const pagination = (\r\n \r\n );\r\n\r\n const viewProps: IMapViewProps = {\r\n ...this.props,\r\n state: this.state,\r\n ModuleProps: {\r\n tag: 'div',\r\n moduleProps: this.props,\r\n className: classname('ms-map', { show: shouldDisplayMap }, className)\r\n },\r\n Header: {\r\n headerProps: { className: 'ms-map__header' },\r\n heading: heading?.text && (\r\n \r\n )\r\n },\r\n dealerResultContainerProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__dealer_container'\r\n },\r\n spinner: ,\r\n noLocationsMessage: ,\r\n locationsMessage: (\r\n \r\n ),\r\n locationsList:\r\n ArrayExtensions.hasElements(newDealerLocations) && newDealerLocations[0].OrgUnitLocation ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n search: (\r\n \r\n ),\r\n pagination,\r\n MapProps: {\r\n tag: 'div',\r\n className: 'ms-map__body',\r\n ref: this.mapRef\r\n },\r\n Map: this.map\r\n };\r\n this._updateMap();\r\n if (newDealerLocations) {\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n return <>;\r\n }\r\n\r\n /**\r\n * Initialize Map AutoSuggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n config: { autoSuggestOptions },\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n /**\r\n * Callback for the autosuggest API.\r\n */\r\n callback: () => {\r\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(\r\n `#ms-store-select__search-box_${this.props.id}`,\r\n `#ms-store-select__search-box-container_${this.props.id}`,\r\n this._onSuggestionSelected\r\n );\r\n },\r\n\r\n /**\r\n * Error call back for autosuggest API.\r\n */\r\n errorCallback: () => {\r\n if (telemetry) {\r\n telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: channel?.BingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * On Selecting Location Suggestion.\r\n * @param result - Map Suggestions List.\r\n */\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (context && context.id === this.props.id) {\r\n await this._searchTermChanged(result.formattedSuggestion);\r\n await this._performSearch(result.formattedSuggestion);\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called updating the store location.\r\n * @param shouldShowAllStores - Flag to show all stores.\r\n */\r\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: true });\r\n if (navigator?.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n async position => {\r\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\r\n this.setState({ isSearchInProgress: true });\r\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n async error => {\r\n // If the location setting is turned off\r\n if (error.PERMISSION_DENIED) {\r\n await this._searchTermChanged('');\r\n await this._updateLocations(0, 0, 0);\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n { timeout: 2000 }\r\n );\r\n } else {\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called on heading change.\r\n * @param event -Content Edit Event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Initialize the map.\r\n */\r\n private readonly _initMap = () => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\r\n credentials: channel?.BingMapsApiKey || '',\r\n pushpinAccessible: true\r\n });\r\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\r\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\r\n });\r\n this.map.getCredentials((credentials: string) => {\r\n // TODO: Need to figure out why using map session id in place of api key does not work.\r\n this.setState({ mapSessionId: credentials });\r\n });\r\n this._updateMap();\r\n }\r\n };\r\n\r\n /**\r\n * Update the map.\r\n */\r\n private readonly _updateMap = () => {\r\n const pushpinOptions: IPushpinOptionsData = { ...this.props.config.pushpinOptions };\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\r\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n if (this.map && orgUnitStoreInformation) {\r\n let mapLocation: OrgUnitLocation | undefined;\r\n this.map.entities.clear();\r\n const pushpins: Microsoft.Maps.Pushpin[] = [];\r\n pushpinOptions.color = pushpinOptions?.color ?? '#46555D';\r\n pushpinOptions.selectionColor = pushpinOptions?.selectionColor ?? '#003B64';\r\n pushpinOptions.size = pushpinOptions?.size ?? 1.25;\r\n pushpinOptions.showIndex = pushpinOptions?.showIndex ?? true;\r\n\r\n const currentPage = this.state.currentPage || 1;\r\n const pageLength = this.props.config.pageLength || this.defaultPageLength;\r\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitLocation !== undefined);\r\n const paginatedList = storeLocationList.slice((currentPage - 1) * pageLength, pageLength * currentPage);\r\n\r\n // for (const [index, unitStoreInfo] of storeLocationList.entries()) {\r\n for (const [index, unitStoreInfo] of paginatedList.entries()) {\r\n const storeLocation = unitStoreInfo.OrgUnitLocation;\r\n\r\n if (storeLocation?.Latitude && storeLocation.Longitude) {\r\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\r\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\r\n const pushpin = new Microsoft.Maps.Pushpin(\r\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\r\n options\r\n );\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\r\n this.handleClickEvent(storeLocation.OrgUnitNumber);\r\n });\r\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\r\n\r\n if (isSelectedLocation) {\r\n mapLocation = storeLocation;\r\n }\r\n }\r\n }\r\n\r\n if (mapLocation) {\r\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\r\n this.map.setView({ center: currentLocation });\r\n } else {\r\n // Create a LocationRect from array of pushpins and set the eve-map view.\r\n this.map.setView({\r\n // @ts-ignore\r\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins),\r\n padding: 80\r\n });\r\n }\r\n\r\n let clusterLayer;\r\n // //Load the Clustering module.\r\n Microsoft.Maps.loadModule('Microsoft.Maps.Clustering', function() {\r\n //Create a ClusterLayer and add it to the map.\r\n clusterLayer = new Microsoft.Maps.ClusterLayer(pushpins);\r\n });\r\n if (clusterLayer) {\r\n this.map.layers.clear();\r\n this.map.layers.insert(clusterLayer);\r\n }\r\n this.map.setOptions({ pushpinAccessible: true });\r\n }\r\n };\r\n\r\n /**\r\n * Handle click event.\r\n * @param orgUnitNumber - Organization unit number.\r\n */\r\n private readonly handleClickEvent = async (orgUnitNumber: string | undefined): Promise => {\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\r\n const currentSelectedStore = storeSelectorStateManager?.selectedStoreLocationId;\r\n if (currentSelectedStore === orgUnitNumber) {\r\n return;\r\n }\r\n if (storeSelectorStateManager && storeSelectorStateManager.context && storeSelectorStateManager.context.orgUnitStoreInformation) {\r\n storeSelectorStateManager.setSelectedStoreLocationId(undefined);\r\n\r\n // Add conditional to check to see if ContractList exists or not\r\n if (orgUnitNumber) {\r\n const dealerDetails = await getDealerDetailsAsync({ callerContext: this.props.context.actionContext }, orgUnitNumber);\r\n this.selectedDealer = dealerDetails;\r\n const tempDealerLocations = [...(this.state.newDealerLocations || [])];\r\n const index = tempDealerLocations.findIndex(loc => loc.OrgUnitLocation?.OrgUnitNumber === orgUnitNumber);\r\n if (tempDealerLocations[index].OrgUnitLocation) {\r\n tempDealerLocations[index].OrgUnitLocation!.ContractList = dealerDetails;\r\n }\r\n\r\n this.setState(prev => {\r\n return {\r\n ...prev,\r\n newDealerLocations: tempDealerLocations\r\n };\r\n });\r\n\r\n if (orgUnitNumber) {\r\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called on search.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _performSearch = async (searchTerm: string): Promise => {\r\n const {\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!searchTerm || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: true });\r\n\r\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\r\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\r\n if (location) {\r\n await this._updateLocations(location.latitude, location.longitude);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: false });\r\n };\r\n\r\n /**\r\n * Method to be called on search term changed.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\r\n this.setState({ searchTerm });\r\n };\r\n\r\n /**\r\n * Method to update user location.\r\n * @param latitude - User location.\r\n * @param longitude - User location.\r\n * @param radius - Search Criteria Radius.\r\n * @returns Void promise.\r\n */\r\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\r\n const {\r\n config: { lookupRadius, searchRadiusUnit, defaultLatitudeValue, defaultLongitudeValue },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.km ? 1 : 0;\r\n const lookupDistanceInMiles = lookupRadius\r\n ? distanceUnitValue\r\n ? Math.round(lookupRadius / this.kmToMiValue)\r\n : lookupRadius\r\n : this.defaultLookUpRadius;\r\n\r\n let localLatitude = latitude || defaultLatitudeValue;\r\n let long = longitude || defaultLongitudeValue;\r\n\r\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\r\n if (lastInlineStoreLocation && !this.state.searchTerm) {\r\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\r\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\r\n }\r\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\r\n await this.getOrgUnitLocationByArea(lookupDistanceInMiles, distanceUnitValue, localLatitude, long);\r\n return;\r\n };\r\n\r\n /**\r\n * Get org unit location by area.\r\n * @param calRadius - Radius.\r\n * @param distanceUnitValue - Distance unit value.\r\n * @param latitude - Latitude.\r\n * @param longitude - Longitude.\r\n * @returns - Returns a void promise.\r\n */\r\n private readonly getOrgUnitLocationByArea = async (\r\n calRadius: number,\r\n distanceUnitValue: number,\r\n latitude?: number,\r\n longitude?: number\r\n ): Promise => {\r\n const {\r\n config: { useChannelMfr },\r\n context: { actionContext }\r\n } = this.props;\r\n\r\n const newOrgUnitLocationsInput = new GetDealerLocationsInput(useChannelMfr || false, latitude || 0, longitude || 0, calRadius);\r\n const newOrgUnits = await getDealerLocations(newOrgUnitLocationsInput, actionContext);\r\n if (newOrgUnits && this.state.newDealerLocations) {\r\n void this._setOrgUnitStoreInformation(newOrgUnits).then(() => {\r\n this.setState({ newDealerLocations: [...newOrgUnits] });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to set store info.\r\n * @param orgUnitStoreInformation - Store Info Object.\r\n * @returns Void promise.\r\n */\r\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n telemetry\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const context = storeSelectorStateManager.context;\r\n const moduleId: string = context?.id ? context.id : this.props.id;\r\n let input: IStoreSelectionStateContext = {\r\n /**\r\n * On Location selected.\r\n * @returns - Returns promise.\r\n */\r\n onLocationSelected: async () => {\r\n return Promise.resolve();\r\n }\r\n };\r\n\r\n if (storeSelectorStateManager.context) {\r\n input = storeSelectorStateManager.context;\r\n }\r\n\r\n input = {\r\n ...input,\r\n id: moduleId,\r\n showMapViewLink: context?.showMapViewLink,\r\n parentElementRef: context?.parentElementRef,\r\n orgUnitStoreInformation: orgUnitStoreInformation,\r\n product: context?.product\r\n };\r\n\r\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\r\n if (telemetry) {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to Update store location state');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get the pushpin option.\r\n * @param isSelectedLocation - Is selected location.\r\n * @param index - Index.\r\n * @param pushpinOptions - PushpinOptions.\r\n * @returns - The pushpin options.\r\n */\r\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\r\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\r\n\r\n const size = pushpinOptions?.size || 1;\r\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\r\n const icon = this._getSvgIcon(size, color, text);\r\n\r\n return {\r\n // Fallback if icon doesn't render properly\r\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\r\n icon\r\n };\r\n };\r\n\r\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\r\n const baseValue: number = 32;\r\n return `\r\n \r\n ${text ? `${text}` : ''}\r\n `;\r\n };\r\n}\r\n\r\nexport default Map;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { /*IHeader,*/ IMapViewProps } from './eve-map';\r\n\r\n/**\r\n * Render the heading.\r\n * @param param0 -- Heading props.\r\n * @param param0.headerProps -- Heading Props.\r\n * @param param0.heading -- Heading Node.\r\n * @returns -- Returns the node.\r\n */\r\n// const MapHeader: React.FC = ({ headerProps, heading }) => {heading};\r\n\r\n/**\r\n * Renders the map view props.\r\n * @param param0 -- Map view props.\r\n * @param param0.ModuleProps -- Module props.\r\n * @param param0.Header -- Header props.\r\n * @param param0.MapProps -- Map props.\r\n * @returns -- Returns the map module.\r\n */\r\nconst MapView: React.FC = props => {\r\n const { ModuleProps, MapProps } = props;\r\n return (\r\n \r\n
\r\n {renderDealerList(props)}\r\n {/* Not using the map header - can remove and disable the configuration field? */}\r\n {/* {Header && }, */}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst renderDealerList: React.FC = props => {\r\n const {\r\n dealerResultContainerProps,\r\n locationsMessage,\r\n search,\r\n state,\r\n spinner,\r\n locationsList,\r\n noLocationsMessage,\r\n pagination\r\n // selectedLocation,\r\n // dealerDetailsModal // may just have the details appear by extending the selected dealer in the list\r\n } = props;\r\n return (\r\n \r\n {locationsMessage}\r\n {search}\r\n {/* {pagination} */}\r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}\r\n // {/* <>{noLocationsMessage} */}\r\n }\r\n {pagination}\r\n {/* Make the renderSelectedDealer function work??? */}\r\n {/* {selectedLocation && renderSelectedDealer(selectedLocation)} */}\r\n \r\n );\r\n};\r\n\r\nexport default MapView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListData,\r\n IReviewsListResources,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Build Review Card.\r\n * @param props - Review Card ViewProps.\r\n * @param resources - Resource Strings.\r\n * @param isUserReview - User review flag.\r\n * @returns JSX Element.\r\n */\r\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\r\n return (\r\n \r\n \r\n
\r\n {props.rating}\r\n {props.date}\r\n
\r\n {props.name}\r\n
\r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {isUserReview ? undefined :

\r\n {resources.wasReviewHelpfulText}\r\n

}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review list ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review modal ViewProps.\r\n * @param state - Review List State.\r\n * @returns JSX Element.\r\n */\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * ReviewsList view.\r\n * @param props - Ratings ReviewsList ViewProps.\r\n * @returns ReviewsList view module.\r\n */\r\nconst ReviewsListview: React.FC> = props => {\r\n const {\r\n filterByDropdown,\r\n heading,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n sortByDropdown,\r\n state,\r\n userReview,\r\n resources\r\n } = props;\r\n\r\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview, resources, true)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review, resources, false);\r\n })}\r\n \r\n { !ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(props)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListData,\r\n IReviewsListResources,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Build Review Card.\r\n * @param props - Review Card ViewProps.\r\n * @param resources - Resource Strings.\r\n * @param isUserReview - User review flag.\r\n * @returns JSX Element.\r\n */\r\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\r\n return (\r\n \r\n \r\n
\r\n {props.rating}\r\n {props.date}\r\n
\r\n {props.name}\r\n
\r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {isUserReview ? undefined :

\r\n {resources.wasReviewHelpfulText}\r\n

}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review list ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review modal ViewProps.\r\n * @param state - Review List State.\r\n * @returns JSX Element.\r\n */\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * ReviewsList view.\r\n * @param props - Ratings ReviewsList ViewProps.\r\n * @returns ReviewsList view module.\r\n */\r\nconst ReviewsListview: React.FC> = props => {\r\n const {\r\n filterByDropdown,\r\n heading,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n sortByDropdown,\r\n state,\r\n userReview,\r\n resources\r\n } = props;\r\n\r\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview, resources, true)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review, resources, false);\r\n })}\r\n \r\n { !ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(props)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress,\n note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

{countTitle}

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

\n

{groupTitle}

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

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

\n );\n return (\n
\n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n note,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n \n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

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

{resources.currentLocation}

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

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

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

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n
\n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n
\n
\n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n
\n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
\n {isError ? (\n \n \n ) : ('')}\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n"],"names":["AccountProfileEdit","React","constructor","props","super","moduleClassName","handleHeadingChange","event","this","config","heading","text","target","value","onTextBoxChange","id","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","resources","invalidEmailAddressError","map","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","Object","assign","EmailRegex","defaultRegex","source","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","data","render","viewProps","_objectSpread","viewState","isShowLoading","accountProfileEdit","moduleProps","className","classnames","loading","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","Msdyn365","editProps","onEdit","requestContext","accountProfileEditLocalAccount","_renderLocalAccount","renderView","str","e","document","createElement","innerHTML","childNodes","length","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","key","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","ariaLabel","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","push","emailAddressLabelText","undefined","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","__decorate","observable","observer","AccountProfileEditItem","_ref","Node","AccountProfileEditLoading","_ref3","Module","_ref2","item","error","index","button","LocalAccount","StoreSelector","renderSelectedStore","shouldHideInventory","preferredDistanceUnit","preferredStore","isPreferredStoreEnabled","hasEnabledOutOfStockCheck","productPickUpOptionList","shouldDisplayList","_selectedStore$OrgUni","availabilitiesWithHours","result","storeSelectorStateManager","storeLocations","selectedStoreLocationId","selectedStore","find","store","_store$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","OrgUnitNumber","orgUnitLocation","selectedStoreResources","_mapResources","_selectedStore$OrgUni2","_selectedStore$OrgUni3","selectedProps","shouldHideStockStatus","isCurrentLocation","_isCurrentLocation","alreadySelectedLocation","isInStock","_isProductInStock","ItemAvailabilities","stockStatusLabel","_stockInventoryLabel","preferredStoreLocationId","StoreId","isLocationDisabled","storePickUpOptionList","OrgUnitPickUpDeliveryModes","DeliveryOptions","handlers","onSelected","_onOrgUnitLocationSelected","onSetAsPreferredStore","_setPreferredStore","onRemovePreferredStore","_removePreferredStore","closeStoreDetailsModal","_closeStoreDetailModal","SelectedStoreComponent","handleLinkTextChange","termsOfServiceLink","linkText","onShowAllStoresHandler","_getAndUpdateStoreLocation","setState","filteredPickupMode","onFilterLocations","stores","filter","location","_location$OrgUnitPick","some","deliveryOption","Code","onFilteredPickupMode","deliveryCode","_attachMapAutoSuggest","async","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","_store$OrgUnitAvailab2","setPreferredStoreLocation","OrgUnitName","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","current","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","onLocationSelected","Promise","resolve","preferredLocationId","storeLocationList","_sortStores","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","deliveryMode","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","selectedLocation","hasEnableOutOfStockCheck","itemAvailabilities","ArrayExtensions","hasElements","AvailableQuantity","ProductInventoryInformation","_isInStock$OrgUnitAva","InventoryLocationId","InventLocationId","StockLevelLabel","storeCounter","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","reaction","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","_storeSelectorStateMa2","_storeSelectorStateMa3","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","showAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","listMapViewState","displayList","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","milesShortText","isEnableOutofStock","enableStockCheck","deliveryOptions","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","classname","autoFocus","fade","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","StoreSelectorFoundLocationsMessage","locations","searchRadius","isSeeAllStore","search","StoreSelectorSearchForm","performSearch","searchTermChanged","onShowAllStores","onToggleListMapViewState","locatorView","productPickUpDeliveryOptions","filterPickupModeSelected","hasEnabledPickupFilterToShowStore","spinner","StoreSelectorWaiting","locationsList","StoreSelectorLocationLines","outOfStockThreshold","enableOutOfStockCheck","storeLocatorView","onClick","shouldShowIndex","noLocationsMessage","StoreSelectorEmptyMessage","terms","StoreSelectorTermsOfService","link","onTextChange","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isPreferredStore","_value$OrgUnitAvailab","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","storeOpenFrom","secondsToTime","OpenFrom","storeOpenTo","OpenTo","storeHours","StoreHours","_store$OrgUnitAvailab4","hideStockStatus","toString","locationOpen","openFrom","openTo","storeHoursList","RegularStoreHours","buildStoreHours","storeDetailsMain","storeHeader","storeName","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","preferredStoreButton","removePreferredStoreButton","canSelectLocation","pickUpDeliveryOptionButton","pickupModes","renderDeliveryOptions","renderBody","Iframe","iframeRef","destinationUrl","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","role","targetURL","src","height","iframeAriaLabel","ref","HeadingTag","DealerSelectorEmptyMessage","emptyLocationsText","DealerSelectorWaiting","DealerSelectorFoundLocationsMessage","dealerCountMessage","dealerCountMessageInKm","replace","DealerLocatorLocationLineItemComponent","distanceAsString","buildDistanceString","distance","Math","floor","Distance","storeAddress","Address","channelId","ChannelId","dealerDetailsHeader","renderDealerDetails","dealerDetailsDescriptionText","dealerDetailsContractCodeText","ContractList","mfrCode","ManufacturerCode","ManufacturerName","ContractCode","ContractDescription","DealerLocatorLocationLines","onClickHandler","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","dealerDetailsText","dealerDetailsManufacturerCodeText","dealerDetailsLaborRateText","dealerDetailsNotesText","previousProps","_stores","show","_renderStoreLocation","selected","DealerLocatorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","getAttribute","_searchTextChanged","inputValue","_onSubmit","_this$searchBoxRef$cu","preventDefault","blur","searchButtonAriaLabel","searchPlaceholderText","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","color","storeSearchAttributes","EveLinePagination","nextPage","prevPage","changePage","currentPage","numPages","prev","next","disabled","Map","mapRef","kmToMiValue","defaultLookUpRadius","defaultPageLength","_initMap","pushpinAccessible","Events","addHandler","getCredentials","mapSessionId","_updateMap","pushpinOptions","_pushpinOptions$color","_pushpinOptions$selec","_pushpinOptions$size","_pushpinOptions$showI","mapLocation","entities","clear","pushpins","selectionColor","size","showIndex","pageLength","paginatedList","slice","unitStoreInfo","entries","storeLocation","isSelectedLocation","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","setView","center","bounds","LocationRect","fromShapes","padding","clusterLayer","ClusterLayer","layers","insert","setOptions","orgUnitNumber","dealerDetails","getDealerDetailsAsync","callerContext","selectedDealer","tempDealerLocations","newDealerLocations","findIndex","loc","_loc$OrgUnitLocation","defaultLatitudeValue","defaultLongitudeValue","SearchRadiusUnit","km","lookupDistanceInMiles","round","useChannelMfr","newOrgUnitLocationsInput","GetDealerLocationsInput","newOrgUnits","getDealerLocations","then","_getSvgIcon","distanceResults","originCoords","resultsCoords","dealerLocations","_this$map","navigationBarMode","NavigationBarMode","minified","setMapModuleLoaded","_this$props$context2","_this$props$data$stor13","_this$props$data$stor14","_this$props$data$stor15","_this$props$data$stor16","shouldDisplayMap","displayMap","paginatedLocationsList","ceil","page","scrollElement","querySelector","pagination","paginationPrev","paginationNext","Header","headerProps","dealerResultContainerProps","MapProps","renderDealerList","FooterItemView","FooterItem","_renderElement","HeadingContainer","Link","image","EditableLink","buildReviewCard","isUserReview","cardProps","rating","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","wasReviewHelpfulText","like","dislike","edit","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","apiSettings","Image","gridSettings","imageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","cropFocalRegion","renderProductImage","Name","ItemId","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","isFilterApplied","review","reviewModal","modalHeader","form","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReviewModal","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","note","SalesLine","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","title","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","orderInfomation","orderSummary","payment","help","IFrameView","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","getTelemetryAttributes","Button","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","Number","cart","totalItemsInCart","renderModuleAttributes","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","StoreSelectorFoundLocationsMessageComponent","storeCountMessage","storeCountMessageInKm","RichTextComponent","storeAllCountMessage","extractPhoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","ContactInformationType","Phone","IsPrivate","primaryPhoneContact","IsPrimary","Locator","renderStoreHours","displayTime","JSON","stringify","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","endDayShort","startDayFull","startDayShort","endDayFull","storeHoursDayPeriod","storeHoursDay","timeRange","matchDeliveryOptions","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","deliveryOptionList","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","onChangeHandler","currentTarget","dataset","description","handleDropdownToggle","filterDeliveryOption","pickupInStoreButtonText","filteredDeliveryMode","Description","renderLocationLinePickupButton","PickUpButtonComponent","pickupInStoreAriaLabel","pickupDeliveryOptionErrorMessage","attributes","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","phoneNumber","Contacts","resourceLabel","stockText","contentAction","etext","PreferredStore","preferredStoreAttribute","RemovePreferredStore","removePreferredStoreAttribute","_props$data$storeSele","stopPropagation","onSetPreferredStoreClickHandler","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","onPickupInStoreClickHandler","pickUpMethodSelection","parseInt","onKeyDown","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","Browser","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","clientHeight","MsDyn365","isBrowser","addEventListener","viewport","_data$storeSelectorSt","errorClassName","GetMaxLength","parsedMaxLength","isNaN","htmlFor","seconds","hours","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","_renderDeliveryOptions","bind","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","tabIndex","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","availabilityWithHours","i","_availabilityWithHour","StoreSelectorLocationLineItemComponent","_handleKeyPressPrev","Enter","Space","_onChangeHandler","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","pickupFilterByHeading","toggleButtonClass","toggleMapViewAttributes","SearchStore","ShowAllStore","showAllStoreAttributes","ToggleMapView","seeAllStoresText","viewListText","viewMapText","editableLink","linkUrl","openInNewTab","storeSelectorLocationLineItemComponentActions","onPickupModeSelectHandler","pickupMode","removePreferredStoreHandler","productdeliveryOptions","pickup","_delivery","stockLabel","preferredStoreAttributes","removePreferredStoreAttributes","pickUpButtonClickHandler","renderPickupModes","_props$selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","parentClassName"],"sourceRoot":""}