{"version":3,"file":"static/js/26.a325a8ef5fc2e9acaf6c.chunk.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./src/components/select-input-group.tsx?f8b6","webpack://msdyn365.commerce.online/./src/components/text-input-group.tsx?ef5b","webpack://msdyn365.commerce.online/./src/components/input-group-form.tsx?75d7","webpack://msdyn365.commerce.online/./src/components/youtube-iframe.tsx?3b20","webpack://msdyn365.commerce.online/./src/modules/lightbox/lightbox.tsx?e911","webpack://msdyn365.commerce.online/./src/modules/smwe-content-block/components/links.tsx?7db3","webpack://msdyn365.commerce.online/./src/modules/smwe-content-block/smwe-content-block.props.autogenerated.ts?3229","webpack://msdyn365.commerce.online/./src/modules/smwe-content-block/smwe-content-block.tsx?2ffd","webpack://msdyn365.commerce.online/./src/modules/smwe-content-block/smwe-content-block.view.tsx?d329","webpack://msdyn365.commerce.online/./src/dataActions/validation-form-employee.ts?819b","webpack://msdyn365.commerce.online/./src/modules/validation-form/validation-form.tsx?bd6e","webpack://msdyn365.commerce.online/./src/themes/blend/views/content-block.view.tsx?abdd","webpack://msdyn365.commerce.online/./src/themes/elicit/views/content-block.view.tsx?55c5","webpack://msdyn365.commerce.online/./src/themes/emp/views/content-block.view.tsx?6122","webpack://msdyn365.commerce.online/./src/themes/fth/views/content-block.view.tsx?6045","webpack://msdyn365.commerce.online/./src/themes/stemichelle-new/views/content-block.view.tsx?4464","webpack://msdyn365.commerce.online/./src/themes/stemichelle/views/content-block.view.tsx?62ee","webpack://msdyn365.commerce.online/./src/themes/wine-estates/views/content-block.view.tsx?9289","webpack://msdyn365.commerce.online/./src/modules/account-welcome-tile/account-welcome-tile.tsx?2115","webpack://msdyn365.commerce.online/./src/modules/account-welcome-tile/account-welcome-tile.view.tsx?e5e3","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","webpack://msdyn365.commerce.online/./src/modules/image-list/image-list.tsx?5602","webpack://msdyn365.commerce.online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://msdyn365.commerce.online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://msdyn365.commerce.online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://msdyn365.commerce.online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","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-line-item/date-time-helpers.ts?fe27","webpack://msdyn365.commerce.online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://msdyn365.commerce.online/./src/modules/store-selector/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/selected-store/selected-store.tsx?bfbc","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"],"sourcesContent":["import { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport type selectListItem = {\r\n label: string;\r\n id: string;\r\n};\r\n\r\ninterface ISelectInputGroupProps {\r\n id: string;\r\n label?: string;\r\n selectList: selectListItem[];\r\n initialSelect?: selectListItem;\r\n htmlProps?: React.DetailedHTMLProps, HTMLSelectElement>;\r\n isValid(selection: selectListItem, id: string): string | void;\r\n onChange(selection: selectListItem, currentValidity: boolean, id: string): void;\r\n}\r\n\r\n/**\r\n * TextInputGroup is a wrapper that allows you to validate text values from the\r\n * user and returns the correct value after\r\n */\r\n@observer\r\nexport class SelectInputGroup extends React.Component {\r\n\r\n @observable private _internalValue: selectListItem;\r\n @observable private _errorMessage: string = '';\r\n @observable private _isFirstBlur: boolean = true;\r\n\r\n constructor(props: ISelectInputGroupProps) {\r\n super(props);\r\n\r\n if (props.initialSelect) {\r\n this._internalValue = props.initialSelect;\r\n } else {\r\n this._internalValue = props.selectList.find(select => !!select)!;\r\n }\r\n\r\n this._valueChanged = this._valueChanged.bind(this);\r\n this._blurred = this._blurred.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n \r\n {\r\n this.props.selectList\r\n .map(\r\n (select, key) =>\r\n \r\n {select.label}\r\n )\r\n }\r\n \r\n {this._jsxErrorMessage}\r\n
\r\n );\r\n }\r\n\r\n private _blurred(event: React.ChangeEvent): void {\r\n this._isFirstBlur = false;\r\n this._valueChanged(event);\r\n }\r\n\r\n private _valueChanged(event: React.ChangeEvent): void {\r\n const id = event.target.value;\r\n this._internalValue = this.props.selectList.find(select => select.id === id)!;\r\n const currentlyInvalid = this.props.isValid(this._internalValue, this.props.id);\r\n const isValid = (currentlyInvalid) ? false : true;\r\n\r\n // we only want to show an error if a user has clicked away and its\r\n // still wrong\r\n if (currentlyInvalid && !this._isFirstBlur) {\r\n this._errorMessage = currentlyInvalid;\r\n } else {\r\n this._errorMessage = '';\r\n }\r\n\r\n this.props.onChange(this._internalValue, isValid, this.props.id);\r\n }\r\n\r\n private get _jsxErrorMessage(): JSX.Element | void {\r\n if (this._errorMessage.length > 0) {\r\n return (\r\n

\r\n {this._errorMessage}\r\n

\r\n );\r\n }\r\n }\r\n}","import { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\ninterface ITextInputGroupProps {\r\n useDatePicker?: boolean;\r\n minDate?: string;\r\n label?: string;\r\n placeholder?: string;\r\n id: string;\r\n initialValue?: string;\r\n htmlProps?: React.DetailedHTMLProps, HTMLInputElement>;\r\n isValid(curValue: string, id: string): string | void;\r\n onChange(value: string, currentValidity: boolean, id: string): void;\r\n}\r\n\r\n/**\r\n * TextInputGroup is a wrapper that allows you to validate text values from the\r\n * user and returns the correct value after\r\n */\r\n@observer\r\nexport class TextInputGroup extends React.Component {\r\n\r\n @observable private _internalValue: string = '';\r\n @observable private _errorMessage: string = '';\r\n @observable private _isFirstBlur: boolean = true;\r\n\r\n constructor(props: ITextInputGroupProps) {\r\n super(props);\r\n\r\n if (props.initialValue) {\r\n this._internalValue = props.initialValue;\r\n const currentlyInvalid = this.props.isValid(this._internalValue, this.props.id);\r\n const isValid = (currentlyInvalid) ? false : true;\r\n this.props.onChange(this._internalValue, isValid, this.props.id);\r\n }\r\n\r\n this._valueChanged = this._valueChanged.bind(this);\r\n this._blurred = this._blurred.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const typeSettings = this.props.useDatePicker ?\r\n {\r\n type: 'date',\r\n min: this.props.minDate\r\n } :\r\n { type: 'text' };\r\n\r\n return (\r\n
\r\n \r\n \r\n
{this._jsxErrorMessage}
\r\n
\r\n );\r\n }\r\n\r\n private _blurred(event: React.ChangeEvent): void {\r\n this._isFirstBlur = false;\r\n this._valueChanged(event);\r\n }\r\n\r\n private _valueChanged(event: React.ChangeEvent): void {\r\n this._internalValue = event.target.value;\r\n const currentlyInvalid = this.props.isValid(this._internalValue, this.props.id);\r\n const isValid = (currentlyInvalid) ? false : true;\r\n\r\n // we only want to show an error if a user has clicked away and its\r\n // still wrong\r\n if (currentlyInvalid && !this._isFirstBlur) {\r\n this._errorMessage = currentlyInvalid;\r\n } else {\r\n this._errorMessage = '';\r\n }\r\n\r\n this.props.onChange(this._internalValue, isValid, this.props.id);\r\n }\r\n\r\n private get _jsxErrorMessage(): JSX.Element | void {\r\n if (this._errorMessage.length > 0) {\r\n return (\r\n

\r\n {this._errorMessage}\r\n

\r\n );\r\n }\r\n }\r\n}","import * as React from 'react';\r\nimport { SelectInputGroup, selectListItem } from './select-input-group';\r\nimport { TextInputGroup } from './text-input-group';\r\n\r\nexport type inputGroup = {\r\n labelText?: string;\r\n validationText?: string;\r\n};\r\n\r\ninterface IMailingListInputGroup {\r\n form: formInputGroupStructure;\r\n submitText?: string;\r\n onFinish(dataSet: unknown): void;\r\n onFieldValidityCheck?(value: string, id: string): boolean;\r\n}\r\n\r\ntype formInputGroupItem = {\r\n validity: boolean;\r\n value: string;\r\n useDatePicker?: boolean;\r\n minDate?: string;\r\n selectList?: selectListItem[];\r\n externalGroup: inputGroup;\r\n htmlProps?: unknown;\r\n regex?: RegExp;\r\n customRender?(jsx: React.ReactNode): JSX.Element;\r\n};\r\n\r\nexport type formInputGroupStructure = {\r\n [fieldName: string]: formInputGroupItem;\r\n};\r\n\r\n/**\r\n * Constructs only the necessary components of the mailing list inputs\r\n *\r\n * To add a new field, add it to the internal form structure object and\r\n * the external props typing\r\n */\r\nexport class FormInputGroupBuilder extends React.Component {\r\n\r\n private _formStructure: formInputGroupStructure = {};\r\n\r\n constructor(props: IMailingListInputGroup) {\r\n super(props);\r\n\r\n this._formStructure = props.form;\r\n this._handleFormExport = this._handleFormExport.bind(this);\r\n\r\n this._handleValidityUpdate = this._handleValidityUpdate.bind(this);\r\n this._handleValueFinish = this._handleValueFinish.bind(this);\r\n\r\n this._handleSelectionUpdate = this._handleSelectionUpdate.bind(this);\r\n this._handleSelectionValidity = this._handleSelectionValidity.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { submitText } = this.props;\r\n return (\r\n \r\n {Object.keys(this._formStructure).map(fieldName => {\r\n const field = this._formStructure[fieldName];\r\n if (field.customRender) {\r\n return field.customRender(this._renderField(fieldName, field));\r\n } else {\r\n return this._renderField(fieldName, field);\r\n }\r\n })}\r\n \r\n {submitText || 'SUBMIT'}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderField(fieldName: string, field: formInputGroupItem): JSX.Element {\r\n if (field.selectList && field.selectList.length > 0) {\r\n const defaultValue = field.selectList.find(item => item.id === field.value);\r\n return (\r\n , HTMLSelectElement> || {}}\r\n />\r\n );\r\n } else {\r\n return (\r\n , HTMLInputElement> || {}}\r\n />\r\n );\r\n }\r\n }\r\n\r\n private _handleFormExport(): void {\r\n const formData = {};\r\n Object.keys(this._formStructure).forEach(input => {\r\n formData[input] = this._formStructure[input].value;\r\n });\r\n this.props.onFinish(formData);\r\n }\r\n\r\n private _isFormValid(): boolean {\r\n const containsInvalidField = !!Object.keys(this._formStructure)\r\n .find((fieldName) => {\r\n const field = this._formStructure[fieldName];\r\n return !field.validity;\r\n });\r\n return !containsInvalidField;\r\n }\r\n\r\n private _handleSelectionUpdate(value: selectListItem, isValid: boolean, id: string): void {\r\n const fieldData = this._formStructure[id];\r\n fieldData.validity = isValid;\r\n fieldData.value = value.id;\r\n\r\n this.setState({});\r\n }\r\n\r\n private _handleSelectionValidity(value: selectListItem, id: string): void {\r\n // no validation necessary\r\n return;\r\n }\r\n\r\n private _handleValueFinish(value: string, isValid: boolean, id: string): void {\r\n const fieldData = this._formStructure[id];\r\n fieldData.validity = isValid;\r\n fieldData.value = value;\r\n\r\n // re-render, no reason to use mobx for this\r\n this.setState({});\r\n }\r\n\r\n private _handleValidityUpdate(value: string, id: string): string | void {\r\n const fieldData = this._formStructure[id];\r\n\r\n // should always be true but just in case\r\n if (fieldData) {\r\n const validationText = fieldData.externalGroup.validationText;\r\n if (this.props.onFieldValidityCheck) {\r\n const passedCheck = this.props.onFieldValidityCheck(value, id);\r\n if (!passedCheck) { return validationText; }\r\n }\r\n if (value.length === 0) { return validationText; }\r\n if (fieldData.regex && !fieldData.regex.test(value)) { return validationText; }\r\n }\r\n }\r\n}","import * as React from 'react';\r\n\r\ninterface IYoutubeIFrameProps {\r\n youtubeId: string | undefined;\r\n}\r\n\r\ndeclare module 'react' {\r\n // tslint:disable-next-line:interface-name\r\n interface HTMLAttributes extends DOMAttributes {\r\n frameborder?: string;\r\n allowfullscreen?: unknown;\r\n }\r\n}\r\n\r\n/**\r\n * iframe renderer for youtube\r\n */\r\nexport default class YoutubeIFrame extends React.Component {\r\n public render(): JSX.Element | null {\r\n const {\r\n youtubeId\r\n } = this.props;\r\n const iframeId = `youtube-${youtubeId}`;\r\n\r\n if (!youtubeId) {\r\n console.warn('YouTube Video: Missing YouTube ID');\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}","/* ---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * --------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n Button,\r\n Modal,\r\n ModalBody,\r\n ModalHeader\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ILightboxConfig,\r\n ILightboxProps\r\n} from './lightbox.props.autogenerated';\r\n\r\ninterface ILightBoxState extends React.ComponentState {\r\n isOpen: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Lightbox component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Lightbox extends React.PureComponent<\r\n ILightboxProps,\r\n ILightBoxState\r\n> {\r\n constructor(props: ILightboxProps) {\r\n super(props);\r\n this.state = { isOpen: false };\r\n this._closeModal = this._closeModal.bind(this);\r\n this._openModal = this._openModal.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const {\r\n config: { defaultOpenState }\r\n } = this.props;\r\n if (defaultOpenState) {\r\n this.setState({ isOpen: defaultOpenState });\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n const launchLightboxButton = this._launchLightboxButton(\r\n config.hasLaunchLightboxButton,\r\n config.launchLightboxButtonText\r\n );\r\n\r\n return (\r\n \r\n {launchLightboxButton}\r\n \r\n \r\n {config.modalHeader}\r\n \r\n \r\n {this.props.slots &&\r\n this.props.slots.content &&\r\n this.props.slots.content.length\r\n ? this.props.slots.content.map(\r\n (slot: React.ReactNode, index: number) => {\r\n return
{slot}
;\r\n }\r\n )\r\n : false}\r\n
\r\n \r\n \r\n );\r\n }\r\n\r\n private _launchLightboxButton(\r\n hasLaunchLightboxButton: boolean | undefined,\r\n buttonText: string | undefined\r\n ): JSX.Element | null {\r\n if (hasLaunchLightboxButton) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _closeModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n private _openModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n}\r\n\r\nexport default Lightbox;\r\n","/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../smwe-content-block.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ContentCardLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return(\r\n
\r\n { editableLinks && editableLinks.length ?\r\n \r\n : null\r\n }\r\n
\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if(!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link,index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n // role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\nexport default ContentCardLinks;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ISmweContentBlock 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 actionableRegion {\r\n imageAndLinks = 'imageAndLinks',\r\n linksOnly = 'linksOnly'\r\n}\r\n\r\nexport interface ISmweContentBlockConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n paragraph?: Msdyn365.RichText;\r\n image?: Msdyn365.IImageData;\r\n links?: ILinksData[];\r\n actionableRegion?: actionableRegion;\r\n imageLink?: Msdyn365.ILinkData;\r\n imageAriaLabel?: string;\r\n className?: string;\r\n colorTheme?: boolean;\r\n backgroundColor?: string;\r\n textColor?: 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 ariaLabel?: string;\r\n}\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface ISmweContentBlockProps extends Msdyn365.IModule {\r\n config: ISmweContentBlockConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport LinksComponent from './components/links';\r\nimport { actionableRegion as region, ISmweContentBlockProps } from './smwe-content-block.props.autogenerated';\r\n\r\nexport interface IContentBlockViewProps extends ISmweContentBlockProps<{}> {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsContainer: INodeProps;\r\n contentBlockAnchorTag?: INodeProps;\r\n imageLink?: string;\r\n imageAriaLabel?: string;\r\n}\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass ContentBlock extends React.PureComponent> {\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n public render(): JSX.Element | null {\r\n const {\r\n heading,\r\n paragraph,\r\n image,\r\n links,\r\n className,\r\n imageAriaLabel\r\n } = this.props.config;\r\n const contentBlockTitle = heading && (\r\n \r\n );\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings || {},\r\n imageSettings: image && image.imageSettings,\r\n };\r\n const contentBlockLinks = links && links.length > 0 && (\r\n \r\n );\r\n const contentBlockText = paragraph && (\r\n \r\n );\r\n const contentBlockImage = image && (\r\n \r\n );\r\n\r\n if (\r\n !contentBlockTitle &&\r\n !contentBlockText &&\r\n !contentBlockImage &&\r\n !contentBlockLinks\r\n ) {\r\n this.props.context.telemetry.error(\r\n 'Content block content is empty, module wont render.'\r\n );\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-content-block', className),\r\n },\r\n imageContainer: { className: 'ms-content-block__image' },\r\n detailsContainer: { className: 'ms-content-block__details' },\r\n contentBlockAnchorTag: {\r\n tag: 'a',\r\n className: 'ms-content-block__link',\r\n role: 'link',\r\n },\r\n imageLink: this._getImageLink(),\r\n imageAriaLabel\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.paragraph = event.target.value;\r\n /* Handle link text change*/\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[linkIndex]) {\r\n this.props.config.links[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n private _getImageLink(): string | null {\r\n const { imageLink, links, actionableRegion } = this.props.config;\r\n if (actionableRegion === region.imageAndLinks) {\r\n if (imageLink && imageLink.destinationUrl) {\r\n return imageLink.destinationUrl;\r\n } else if (links && links.length && links[0].linkUrl) {\r\n return links[0].linkUrl.destinationUrl;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport default ContentBlock;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './smwe-content-block';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const {\r\n config,\r\n contentBlockContainer,\r\n imageContainer,\r\n detailsContainer,\r\n title,\r\n text,\r\n links,\r\n image,\r\n contentBlockAnchorTag,\r\n imageLink,\r\n imageAriaLabel\r\n } = props;\r\n\r\n if (imageLink) {\r\n return (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {image}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { verifyEmployeeInput } from './DataActionExtension.g';\r\n\r\n/**\r\n * ValidationFormEmployee Input Action\r\n */\r\n\r\nexport class ValidationFormEmployeeInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => { return false; };\r\n public getCacheKey = () => `IValidationFormEmployee`;\r\n public getCacheObjectType = () => 'IValidationFormEmployee';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IValidationFormEmployeeData {\r\n text: string;\r\n}\r\n\r\nexport type validationFormEmployeeInfo = {\r\n employeeId: string;\r\n lastName: string;\r\n birthYear: string;\r\n customerId: string;\r\n};\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nexport const createEmployeeValidationInput = (inputData: validationFormEmployeeInfo, appContext: Msdyn365.ICoreContext<{ [x: string]: unknown }>): ValidationFormEmployeeInput => {\r\n return new ValidationFormEmployeeInput(\r\n verifyEmployeeInput(\r\n inputData.customerId,\r\n inputData.employeeId,\r\n inputData.lastName,\r\n inputData.birthYear\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nexport async function employeeValidationAction(input: ValidationFormEmployeeInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport const IValidationFormEmployeeAction = Msdyn365.createObservableDataAction({\r\n action: >employeeValidationAction,\r\n input: createEmployeeValidationInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport { FormInputGroupBuilder } from '../../components/input-group-form';\r\nimport { createEmployeeValidationInput, employeeValidationAction } from '../../dataActions/validation-form-employee';\r\nimport validateFriendsAndFamilyAction, { createValidateFriendsAndFamilyInput } from '../family-and-friends/actions/validate-friends-and-family.action';\r\nimport { IValidationFormProps } from './validation-form.props.autogenerated';\r\n\r\nexport interface IValidationFormViewProps extends IValidationFormProps<{}> {\r\n}\r\n\r\ntype validationFormData = {\r\n employeeNumber: string;\r\n lastName: string;\r\n birthYear: string;\r\n};\r\n\r\n/**\r\n *\r\n * ValidationForm component\r\n * @extends {React.Component>}\r\n */\r\n\r\n@observer\r\nclass ValidationForm extends React.Component> {\r\n\r\n @observable private _isFormCompleted: boolean = false;\r\n\r\n @observable private _displayValidationError: boolean = false;\r\n @observable private _displayCommunicationsError: boolean = false;\r\n\r\n @observable private _ffDisplayValidationError: boolean = false;\r\n @observable private _ffDisplayCommunicationsError: boolean = false;\r\n\r\n public constructor(props: IValidationFormProps<{}>) {\r\n super(props);\r\n\r\n this._onFinished = this._onFinished.bind(this);\r\n this._onFriendsAndFamilyFinished = this._onFriendsAndFamilyFinished.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n\r\n const {\r\n validationError, fatalError,\r\n validationForm__ffVerificationFailed\r\n } = this.props.resources;\r\n\r\n const {\r\n className,\r\n description, title,\r\n logo, emailContact\r\n } = this.props.config;\r\n\r\n return (\r\n
\r\n {logo && }\r\n\r\n {/* regular login form */}\r\n {title && }\r\n {!this._isFormCompleted && description && }\r\n
\r\n {!this._isFormCompleted && this._formJSX}\r\n
\r\n {this._displayValidationError && validationError &&
{validationError}
}\r\n {this._displayCommunicationsError && fatalError &&
{fatalError}
}\r\n {/* regular login form end */}\r\n\r\n {/* OR divider */}\r\n {!this._isFormCompleted &&\r\n
\r\n or\r\n
\r\n }\r\n {/* OR divider */}\r\n\r\n {/* FF login */}\r\n
\r\n {!this._isFormCompleted && this._familyAndFriendsJSX}\r\n
\r\n {this._ffDisplayValidationError && validationForm__ffVerificationFailed &&
{validationForm__ffVerificationFailed} {emailContact}
}\r\n {this._ffDisplayCommunicationsError && fatalError &&
{fatalError}
}\r\n {/* FF login */}\r\n\r\n {this._isFormCompleted && this._successJSX}\r\n
\r\n );\r\n }\r\n\r\n private get _successJSX(): JSX.Element {\r\n const { welcomeMessage } = this.props.config;\r\n return (\r\n \r\n {welcomeMessage && }\r\n \r\n );\r\n }\r\n\r\n private get _familyAndFriendsJSX(): JSX.Element {\r\n const {\r\n validationForm__ffValidation,\r\n validationForm__ffValidationRequiredError\r\n } = this.props.resources;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private get _formJSX(): JSX.Element {\r\n\r\n const {\r\n employeeNumber, employeeNumberValidation,\r\n birthYear, birthYearValidation,\r\n lastName, lastNameValidation\r\n } = this.props.resources;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _onFriendsAndFamilyFinished(formData: { validationCode?: string }): void {\r\n if (formData.validationCode) {\r\n const { redirectDelay, redirectLink } = this.props.config;\r\n\r\n const input = createValidateFriendsAndFamilyInput(\r\n this.props.context.actionContext,\r\n {\r\n code: formData.validationCode,\r\n emailListId: this.props.context.app.config.mailingListID || '',\r\n sourceId: this.props.context.app.config.mailingListSourceID || '' // possible to hardcode to WEB for now\r\n }\r\n );\r\n validateFriendsAndFamilyAction(input, this.props.context.actionContext)\r\n .then(requestFullfilled => {\r\n if (requestFullfilled.Status === 'SUCCESS') {\r\n this._isFormCompleted = true;\r\n this._ffDisplayCommunicationsError = false;\r\n this._ffDisplayValidationError = false;\r\n setTimeout(\r\n () => {\r\n window.location.replace(redirectLink.destinationUrl);\r\n },\r\n redirectDelay * 1000\r\n );\r\n } else {\r\n this._ffDisplayValidationError = true;\r\n this._isFormCompleted = false;\r\n this._ffDisplayCommunicationsError = false;\r\n }\r\n })\r\n .catch(e => {\r\n this._ffDisplayCommunicationsError = true;\r\n this._isFormCompleted = false;\r\n this._ffDisplayValidationError = false;\r\n });\r\n }\r\n }\r\n\r\n private _onFinished(formData: validationFormData): void {\r\n // process form here\r\n const { redirectDelay, redirectLink } = this.props.config;\r\n\r\n const input = createEmployeeValidationInput(\r\n {\r\n customerId: this.props.context.request.user.customerAccountNumber /* will exist at this stage always */ || 'CUST006052',\r\n employeeId: this._parseLeadingZeros(formData.employeeNumber),\r\n birthYear: formData.birthYear,\r\n lastName: formData.lastName\r\n },\r\n this.props.context\r\n );\r\n\r\n employeeValidationAction(input, this.props.context.actionContext)\r\n .then(requestFullfilled => {\r\n // having the set the opposite completion booleans like this\r\n // shouldn't be necessary but just in case\r\n if ((requestFullfilled as unknown as { Result: boolean }).Result) {\r\n this._isFormCompleted = true;\r\n this._displayValidationError = false;\r\n this._displayCommunicationsError = false;\r\n setTimeout(\r\n () => {\r\n window.location.replace(redirectLink.destinationUrl);\r\n },\r\n redirectDelay * 1000\r\n );\r\n } else {\r\n this._displayValidationError = true;\r\n this._isFormCompleted = false;\r\n this._displayCommunicationsError = false;\r\n }\r\n })\r\n .catch(e => {\r\n // this shouldn't happen, all error codes are set to 200 anyway\r\n console.error(e);\r\n this._displayCommunicationsError = true;\r\n this._isFormCompleted = false;\r\n this._displayValidationError = false;\r\n });\r\n }\r\n\r\n private _parseLeadingZeros(employeeNumber: string): string {\r\n return employeeNumber.replace(/^0+/, '');\r\n }\r\n}\r\n\r\nexport default ValidationForm;\r\n","import { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/dist/types/modules/content-block/content-block';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IClickableContainerLinkData, IContentBlockProps } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\nconst ContentBlockView: React.FC> = props => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image, config } = props;\r\n const clickableContainerLink = config.clickableContainerLink;\r\n const content = (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n if (clickableContainerLink && clickableContainerLink.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n};\r\n\r\nfunction _target(link: IClickableContainerLinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n}\r\n\r\nexport default ContentBlockView;\r\n","import { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/dist/types/modules/content-block/content-block';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IClickableContainerLinkData, IContentBlockProps } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\nconst ContentBlockView: React.FC> = props => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image, config } = props;\r\n const clickableContainerLink = config.clickableContainerLink;\r\n const content = (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n if (clickableContainerLink && clickableContainerLink.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n};\r\n\r\nfunction _target(link: IClickableContainerLinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n}\r\n\r\nexport default ContentBlockView;\r\n","import { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/dist/types/modules/content-block/content-block';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IClickableContainerLinkData, IContentBlockProps } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\nconst ContentBlockView: React.FC> = props => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image, config } = props;\r\n const clickableContainerLink = config.clickableContainerLink;\r\n const content = (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n if (clickableContainerLink && clickableContainerLink.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n};\r\n\r\nfunction _target(link: IClickableContainerLinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n}\r\n\r\nexport default ContentBlockView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/src/modules/content-block/./content-block';\r\nimport { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport YoutubeIFrame from '../../../components/youtube-iframe';\r\nimport { IClickableContainerLinkData, IContentBlockProps, ILinksData } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\ninterface IContentBlockState extends React.ComponentState {\r\n isModalOpen: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * ContentBlockView component\r\n * @extends {React.PureComponent, IContentBlockState>}\r\n */\r\nclass ContentBlockView extends React.PureComponent, IContentBlockState> {\r\n constructor(props: IContentBlockViewProps & IContentBlockProps<{}>) {\r\n super(props);\r\n this.state = { isModalOpen: false };\r\n this._toggleModal = this._toggleModal.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config,\r\n contentBlockContainer,\r\n detailsContainer,\r\n image,\r\n imageContainer,\r\n links,\r\n text,\r\n title\r\n } = this.props;\r\n const clickableContainerLink = config.clickableContainerLink;\r\n const isCustomTheme = config.colorTheme === 'custom' ? true : false;\r\n const colorThemeClass = config.colorTheme && `colortheme__${config.colorTheme}`;\r\n\r\n const content = (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {config.paragraphMobile ? this._renderParagraphs(this.props) : text}\r\n {isCustomTheme ? this._renderCustomLinks(this.props) : links}\r\n {config.youTubeLink && this._renderYouTubeLink(this.props)}\r\n \r\n \r\n );\r\n\r\n if (clickableContainerLink?.linkUrl?.destinationUrl) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n }\r\n\r\n private _target(link: IClickableContainerLinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n }\r\n\r\n private _renderParagraphs(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const { paragraph, paragraphMobile } = props.config;\r\n return (\r\n <>\r\n {paragraph && }\r\n {paragraphMobile && }\r\n \r\n );\r\n }\r\n\r\n private _renderCustomLinks(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const {\r\n buttonBackgroundColor,\r\n buttonBorderColor,\r\n buttonTextColor,\r\n links\r\n } = props.config;\r\n\r\n if (links && links.length > 0) {\r\n return (\r\n
\r\n {links.map((cta: ILinksData, index: number) => {\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n return (\r\n \r\n {cta.linkText}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderYouTubeLink(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const modalId = `youtube-${props.config.youTubeLink}`;\r\n return (\r\n
\r\n \r\n {props.config.youTubeText || ''}\r\n
\r\n \r\n \r\n \r\n {this.state.isModalOpen &&\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _toggleModal(): void {\r\n this.setState(prevState => ({\r\n isModalOpen: !prevState.isModalOpen\r\n }));\r\n }\r\n}\r\n\r\nexport default ContentBlockView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/src/modules/content-block/./content-block';\r\nimport { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport YoutubeIFrame from '../../../components/youtube-iframe';\r\nimport { IClickableContainerLinkData, IContentBlockProps, ILinksData } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\ninterface IContentBlockState extends React.ComponentState {\r\n isModalOpen: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * ContentBlockView component\r\n * @extends {React.PureComponent, IContentBlockState>}\r\n */\r\nclass ContentBlockView extends React.PureComponent, IContentBlockState> {\r\n constructor(props: IContentBlockViewProps & IContentBlockProps<{}>) {\r\n super(props);\r\n this.state = { isModalOpen: false };\r\n this._toggleModal = this._toggleModal.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config,\r\n contentBlockContainer,\r\n detailsContainer,\r\n image,\r\n imageContainer,\r\n links,\r\n text,\r\n title\r\n } = this.props;\r\n const clickableContainerLink = config.clickableContainerLink;\r\n const isCustomTheme = config.colorTheme === 'custom' ? true : false;\r\n const colorThemeClass = config.colorTheme && `colortheme__${config.colorTheme}`;\r\n\r\n const content = (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {config.paragraphMobile ? this._renderParagraphs(this.props) : text}\r\n {isCustomTheme ? this._renderCustomLinks(this.props) : links}\r\n {config.youTubeLink && this._renderYouTubeLink(this.props)}\r\n \r\n \r\n );\r\n\r\n if (clickableContainerLink?.linkUrl?.destinationUrl) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n }\r\n\r\n private _target(link: IClickableContainerLinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n }\r\n\r\n private _renderParagraphs(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const { paragraph, paragraphMobile } = props.config;\r\n return (\r\n <>\r\n {paragraph && }\r\n {paragraphMobile && }\r\n \r\n );\r\n }\r\n\r\n private _renderCustomLinks(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const {\r\n buttonBackgroundColor,\r\n buttonBorderColor,\r\n buttonTextColor,\r\n links\r\n } = props.config;\r\n\r\n if (links && links.length > 0) {\r\n return (\r\n
\r\n {links.map((cta: ILinksData, index: number) => {\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n return (\r\n \r\n {cta.linkText}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderYouTubeLink(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const modalId = `youtube-${props.config.youTubeLink}`;\r\n return (\r\n
\r\n \r\n {props.config.youTubeText || ''}\r\n
\r\n \r\n \r\n \r\n {this.state.isModalOpen &&\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _toggleModal(): void {\r\n this.setState(prevState => ({\r\n isModalOpen: !prevState.isModalOpen\r\n }));\r\n }\r\n}\r\n\r\nexport default ContentBlockView;\r\n","import { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/dist/types/modules/content-block/content-block';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IClickableContainerLinkData, IContentBlockProps } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\nconst ContentBlockView: React.FC> = props => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image, config } = props;\r\n const clickableContainerLink = config.clickableContainerLink;\r\n const content = (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n if (clickableContainerLink && clickableContainerLink.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n};\r\n\r\nfunction _target(link: IClickableContainerLinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n}\r\n\r\nexport default ContentBlockView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/src/modules/content-block/./content-block';\r\nimport { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport YoutubeIFrame from '../../../components/youtube-iframe';\r\nimport { IClickableContainerLinkData, IContentBlockProps, ILinksData } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\ninterface IContentBlockState extends React.ComponentState {\r\n isModalOpen: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * ContentBlockView component\r\n * @extends {React.PureComponent, IContentBlockState>}\r\n */\r\nclass ContentBlockView extends React.PureComponent, IContentBlockState> {\r\n constructor(props: IContentBlockViewProps & IContentBlockProps<{}>) {\r\n super(props);\r\n this.state = { isModalOpen: false };\r\n this._toggleModal = this._toggleModal.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config,\r\n contentBlockContainer,\r\n detailsContainer,\r\n image,\r\n imageContainer,\r\n links,\r\n text,\r\n title\r\n } = this.props;\r\n const clickableContainerLink = config.clickableContainerLink;\r\n const isCustomTheme = config.colorTheme === 'custom' ? true : false;\r\n const colorThemeClass = config.colorTheme && `colortheme__${config.colorTheme}`;\r\n\r\n const content = (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {config.paragraphMobile ? this._renderParagraphs(this.props) : text}\r\n {isCustomTheme ? this._renderCustomLinks(this.props) : links}\r\n {config.youTubeLink && this._renderYouTubeLink(this.props)}\r\n \r\n \r\n );\r\n\r\n if (clickableContainerLink?.linkUrl?.destinationUrl) {\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n }\r\n\r\n private _target(link: IClickableContainerLinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n }\r\n\r\n private _renderParagraphs(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const { paragraph, paragraphMobile } = props.config;\r\n return (\r\n <>\r\n {paragraph && }\r\n {paragraphMobile && }\r\n \r\n );\r\n }\r\n\r\n private _renderCustomLinks(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const {\r\n buttonBackgroundColor,\r\n buttonBorderColor,\r\n buttonTextColor,\r\n links\r\n } = props.config;\r\n\r\n if (links && links.length > 0) {\r\n return (\r\n
\r\n {links.map((cta: ILinksData, index: number) => {\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n return (\r\n \r\n {cta.linkText}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderYouTubeLink(props: IContentBlockProps<{}>): JSX.Element | null {\r\n const modalId = `youtube-${props.config.youTubeLink}`;\r\n return (\r\n
\r\n \r\n {props.config.youTubeText || ''}\r\n
\r\n \r\n \r\n \r\n {this.state.isModalOpen &&\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _toggleModal(): void {\r\n this.setState(prevState => ({\r\n isModalOpen: !prevState.isModalOpen\r\n }));\r\n }\r\n}\r\n\r\nexport default ContentBlockView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component.\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text ? config.heading.text : ''} ${\n accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''\n }`\n }\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\n \n )\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\nexport default AccountWelcomeTile;\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 { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n};\n\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\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 React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\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 { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n linkOpenInNewTab?: boolean;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n const imageLinkOpenInNewTab = link?.openInNewTab;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel,\n linkOpenInNewTab: imageLinkOpenInNewTab\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\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 { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
\n {isError ? (\n \n \n ) : ('')}\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\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, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\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"],"names":["SelectInputGroup","React","constructor","props","super","_errorMessage","_isFirstBlur","initialSelect","this","_internalValue","selectList","find","select","_valueChanged","bind","_blurred","render","className","label","Object","assign","onBlur","value","id","onChange","htmlProps","map","key","_jsxErrorMessage","event","target","currentlyInvalid","isValid","length","__decorate","observable","observer","TextInputGroup","initialValue","typeSettings","useDatePicker","type","min","minDate","htmlFor","placeholder","required","autoComplete","FormInputGroupBuilder","_formStructure","form","_handleFormExport","_handleValidityUpdate","_handleValueFinish","_handleSelectionUpdate","_handleSelectionValidity","submitText","keys","fieldName","field","customRender","_renderField","onClick","disabled","_isFormValid","defaultValue","item","undefined","externalGroup","labelText","formData","forEach","input","onFinish","validity","fieldData","setState","validationText","onFieldValidityCheck","regex","test","YoutubeIFrame","youtubeId","iframeId","sandbox","src","frameBorder","allow","allowFullScreen","title","console","warn","Lightbox","state","isOpen","_closeModal","_openModal","componentDidMount","config","defaultOpenState","launchLightboxButton","_launchLightboxButton","hasLaunchLightboxButton","launchLightboxButtonText","Modal","autoFocus","fade","horizontalPosition","verticalPosition","zIndex","toggle","applicationNode","ModalHeader","modalHeader","ModalBody","slots","content","slot","index","buttonText","Button","prevState","ContentCardLinks","_mapEditableLinks","linkdata","editableLinks","link","payLoad","getPayloadObject","telemetryContent","linkText","contentAction","etext","attributes","getTelemetryAttributes","btnClass","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","push","links","Msdyn365","editProps","onTextChange","requestContext","actionableRegion","HeadingTag","ContentBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","heading","text","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","image","imageAriaLabel","contentBlockTitle","tag","onEdit","imageProps","gridSettings","imageSettings","contentBlockLinks","LinksComponent","contentBlockText","contentBlockImage","error","contentBlockviewProps","_objectSpread","moduleClass","contentBlockContainer","moduleProps","classnames","imageContainer","detailsContainer","contentBlockAnchorTag","role","imageLink","_getImageLink","renderView","region","imageAndLinks","Module","style","colorTheme","backgroundColor","Node","href","color","textColor","ValidationFormEmployeeInput","shouldCacheOutput","getCacheKey","getCacheObjectType","dataCacheType","createEmployeeValidationInput","inputData","appContext","verifyEmployeeInput","customerId","employeeId","lastName","birthYear","async","employeeValidationAction","ctx","execute","action","ValidationForm","_isFormCompleted","_displayValidationError","_displayCommunicationsError","_ffDisplayValidationError","_ffDisplayCommunicationsError","_onFinished","_onFriendsAndFamilyFinished","validationError","fatalError","validationForm__ffVerificationFailed","resources","description","logo","emailContact","Image","Heading","RichTextComponent","_formJSX","_familyAndFriendsJSX","_successJSX","welcomeMessage","validationForm__ffValidation","validationForm__ffValidationRequiredError","validationCode","employeeNumber","employeeNumberValidation","birthYearValidation","lastNameValidation","redirectDelay","redirectLink","createValidateFriendsAndFamilyInput","actionContext","code","emailListId","app","mailingListID","sourceId","mailingListSourceID","validateFriendsAndFamilyAction","then","requestFullfilled","Status","setTimeout","window","location","replace","catch","e","user","customerAccountNumber","_parseLeadingZeros","Result","clickableContainerLink","ContentBlockView","isModalOpen","_toggleModal","_clickableContainerLi","isCustomTheme","colorThemeClass","paragraphMobile","_renderParagraphs","_renderCustomLinks","youTubeLink","_renderYouTubeLink","_target","buttonBackgroundColor","buttonBorderColor","buttonTextColor","cta","borderColor","rel","modalId","tabIndex","onKeyPress","youTubeText","modalClassName","AccountWelcomeTile","handleHeadingChange","data","accountInfo","accountInformation","result","FirstName","viewProps","RequestsTableColumnHeader","getUserName","StringExtensions","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","date","cultureFormatter","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","tableData","operationRequests","ArrayExtensions","hasElements","_request$TypeValue","_request$StatusValue","row","b2bRequestsTypeColumn","TableDataType","Text","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","filter","isMobile","mobileExcludedColumns","includes","name","sortable","columnSortAriaLabel","rows","editLinkText","deleteLinkText","viewLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","isNaN","Number","parseInt","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","url","reqContext","MsDyn365","isBrowser","URL","requestUrl","isSingleSelectOnly","actions","onDelete","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","format","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","isChannelTypeB2B","b2bRequestsStatus","table","computed","ImageList","images","_renderImageListItems","imageList","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","disableLazyLoad","_image$imageSettings","_link$linkText","imageLinkText","imageLinkAriaLabel","imageLinkOpenInNewTab","loadFailureBehavior","linkAltText","linkAriaLabel","linkOpenInNewTab","_heading$tag","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","altText","InteractiveFeatureCollectionLinks","InteractiveFeatureItem","_telemetryContent","_this$props$config$li","indexItem","itemCounter","isMosaic","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","current","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","preventDefault","deliveryCode","currentTarget","getAttribute","_renderDeliveryOptions","addEventListener","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","ref","delivery","Code","Description","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","onKeyDown","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","buildDistanceString","distance","preferredDistanceUnit","isLocationDisabled","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isCurrentLocation","isInStock","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","productPickUpOptionList","shouldShowIndex","storeName","OrgUnitName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","isPreferredStore","TelemetryConstant","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","isError","setError","contactInfoHeader","storeHoursHeader","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","availabilityInfoHeader","currentLocation","pickUpButtonClickHandler","renderPickupModes","filteredPickupMode","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","pickupDeliveryOptionErrorMessage","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactText","timeText","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreHours","ItemAvailabilities","toString","DeliveryOptions","productPickUpDeliveryOptions","stores","_value$OrgUnitAvailab","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","onSubmit","searchInputAriaLabel","onKeyUp","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","setPreferredStoreLocation","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","focus","closeDialog","_setOrgUnitStoreInformation","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","maps","mapSlot","isMobileDevice","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","classname","onClosed","isMobileView","HeaderContainerProps","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody"],"sourceRoot":""}