{"version":3,"file":"static/js/21.fb84ca5febec990be4b6.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-header.component.tsx?3609","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-confirmation.tsx?406f","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-error.tsx?e789","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.tsx?8686","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-small-components.tsx?a27a","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-line-item.components.tsx?0d4f","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-lines.tsx?3695","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-payment-option-list.tsx?d919","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-search-form.tsx?6f95","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/distributor-selector.tsx?f21b","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.props.autogenerated.ts?994e","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-small-components.tsx?64a1","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-location-line-item/eve-map-location-line-item.components.tsx?0c9c","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-location-lines.tsx?c9b3","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-map-search-form.tsx?d14a","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/components/eve-line-pagination.tsx?9846","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.tsx?1e68","webpack://Msdyn365.Commerce.Online/./src/modules/eve-map/eve-map.view.tsx?4d70","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/checkout-order-confirmation.view.tsx?828a","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/OrderConfirmationDetail.tsx?19df","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/InvoicePaymentConfirmationDetail.tsx?c704","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/checkout-order-confirmation.view.tsx?128f","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?bd7a","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/distributor-selector.view.tsx?0f28","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-history.view.tsx?692d","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.categorysuggest.tsx?6bcf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.mobile.empty.tsx?ff32","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.form.tsx?d41a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.keywordsuggest.tsx?2724","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.productsuggest.tsx?6616","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search.view.tsx?bfa7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/sign-in.view.tsx?048a"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-header';\nconst headingClassName = `${componentClassName}__heading`;\nconst orderCountClassName = `${componentClassName}__order-count`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderResources {\n orderCountLabel: string;\n ordersCountLabel: string;\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderData interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderData {\n salesOrders: SalesOrder[];\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderProps\n extends Msdyn365.IComponentProps {\n className?: string;\n resources: IOrderHistoryWithSearchAndFiltersHeaderResources;\n textProps: Msdyn365.ITextProps;\n showOrderCount: boolean;\n extraActions?: React.ReactNode;\n onChange(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersHeader component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersHeaderFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersHeaderProps\n) => {\n const {\n resources,\n data: { salesOrders },\n textProps,\n showOrderCount,\n extraActions\n } = props;\n\n const orderCount = salesOrders?.length;\n const orderCountText = `(${orderCount} ${orderCount === 1 ? resources?.orderCountLabel : resources?.ordersCountLabel})`;\n\n return (\n \n {textProps?.text && (\n \n )}\n {showOrderCount && {orderCountText}}\n {extraActions}\n \n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersHeader component.\n */\nexport const OrderHistoryWithSearchAndFiltersHeaderComponent: React.FunctionComponent = Msdyn365.msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersHeaderProps\n>('OrderHistoryWithSearchAndFiltersHeaderComponent', { component: OrderHistoryWithSearchAndFiltersHeaderFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\n/**\n * CheckInConfirmation component Properties.\n */\nexport interface ICheckInConfirmationProps {\n /**\n * The confirmation text to show.\n */\n confirmationText: string;\n\n /**\n * Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n */\n shouldShowQrCode: boolean;\n\n /**\n * The label shows for channel reference ID.\n */\n channelReferenceIdLabel: string;\n\n /**\n * The channel reference ID to show. When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n */\n channelReferenceId?: string;\n}\n\n/**\n * CheckInConfirmation component for showing confirmation information after check-in succeed.\n * @param confirmationProps - The confirmation properties.\n * @param confirmationProps.confirmationText - The confirmation text.\n * @param confirmationProps.shouldShowQrCode - Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n * @param confirmationProps.channelReferenceIdLabel - The label shows for channel reference ID.\n * @param confirmationProps.channelReferenceId - The channel reference ID to show.\n * When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n * @returns The check-in confirmation component.\n */\nexport const CheckInConfirmationComponent: React.FC = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n
\n

{confirmationText}

\n {channelReferenceId && (\n

\n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n

\n )}\n {channelReferenceId && shouldShowQrCode && (\n \n \n \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 React from 'react';\n\n/**\n * Check-in error properties.\n */\nexport interface ICheckInErrorProps {\n errorMessage?: string;\n}\n\n/**\n * Check-in error.\n * @param errorProps - The error properties.\n * @param errorProps.errorMessage - The error message to show.\n * @returns The alert element showing check-in errors.\n */\nexport const CheckInErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\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 { IDictionary } from '@msdyn365-commerce/core';\nimport { CommerceProperty, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { CheckInConfirmationComponent } from './check-in-confirmation';\nimport { CheckInErrorComponent } from './check-in-error';\nimport { IAdditionalInformationKeysData, ICheckInForPickupConfig, ICheckInForPickupProps } from './check-in-for-pickup.props.autogenerated';\n\n/**\n * The interface representing a piece of additional information data.\n */\ninterface IAdditionalInformation {\n formKey: IAdditionalInformationKeysData;\n value: string;\n}\n\n/**\n * The state for check-in view.\n */\nexport interface ICheckInViewState {\n /**\n * If the module has header error to show.\n */\n isHeaderError: boolean;\n\n /**\n * If the customer has checked in.\n */\n isCheckedIn: boolean;\n\n /**\n * Additional information to capture.\n */\n additionalInformation: IDictionary[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise;\n}\n\n/**\n * The state of the CheckInForPickup module.\n */\nexport interface ICheckInForPickupState {\n /**\n * The header error message.\n */\n headerErrorMessage: string;\n\n /**\n * If the customer has checked in successfully.\n */\n isCheckedIn: boolean;\n}\n\n/**\n *\n * CheckIn component.\n * @extends {React.Component, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component, ICheckInForPickupState> {\n public constructor(props: ICheckInForPickupProps) {\n super(props);\n this.state = {\n headerErrorMessage: '',\n isCheckedIn: false\n };\n }\n\n public render(): JSX.Element | null {\n const isHeaderError: boolean = this.state.headerErrorMessage !== '';\n\n const viewProps = {\n ...this.props,\n headerError: ,\n confirmationComponent: (\n \n ),\n checkInForOrderPickup: this.checkInForOrderPickup,\n additionalInformationValues: this.props.config.additionalInformationKeys\n ? this.props.config.additionalInformationKeys.map(() => {\n return {};\n })\n : undefined,\n viewState: {\n isHeaderError,\n isCheckedIn: this.state.isCheckedIn\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public shouldComponentUpdate(nextProps: ICheckInForPickupProps, nextState: ICheckInForPickupState): boolean {\n if (\n this.props.config.additionalInformationHeading !== nextProps.config.additionalInformationHeading ||\n this.props.config.confirmationText !== nextProps.config.confirmationText\n ) {\n return true;\n }\n if (this.state.headerErrorMessage !== nextState.headerErrorMessage || this.state.isCheckedIn !== nextState.isCheckedIn) {\n return true;\n }\n return false;\n }\n\n public async componentDidMount(): Promise {\n await this._onInit();\n }\n\n /**\n * The async callback for submitting check-in.\n * @param additionalInformationList - The optional additional information captured.\n * @returns The async result.\n */\n public checkInForOrderPickup = async (additionalInformationList?: IAdditionalInformation[]): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query!.channelId, 10);\n const channelReferenceId: string = this.props.context.request.query!.channelReferenceId;\n const packingSlipId: string = this.props.context.request.query!.packingSlipId;\n\n const additionalInformationToSubmit: { formKey: string; value: string }[] | undefined = additionalInformationList?.map(\n additionalInformationKeyValuePair => {\n return {\n formKey: additionalInformationKeyValuePair.formKey.resourceId ?? '',\n value: additionalInformationKeyValuePair.value\n };\n }\n );\n const extensionPropertyList: CommerceProperty[] = [];\n if (!ObjectExtensions.isNullOrUndefined(additionalInformationToSubmit)) {\n for (const additionalInformation of additionalInformationToSubmit) {\n extensionPropertyList.push({\n Key: additionalInformation.formKey,\n Value: {\n StringValue: additionalInformation.value\n }\n });\n }\n }\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId,\n extensionPropertyList\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n return Promise.resolve();\n };\n\n /**\n * The action performed on module initialization.\n * @returns The async result.\n */\n private readonly _onInit = async (): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query?.channelId ?? '', 10);\n const channelReferenceId: string | undefined = this.props.context.request.query?.channelReferenceId;\n const packingSlipId: string | undefined = this.props.context.request.query?.packingSlipId;\n if (Number.isNaN(channelId) || !channelReferenceId || !packingSlipId) {\n // No error message shown in editor mode.\n if (this.props.context.request.params.isEditor) {\n return Promise.resolve();\n } else if (this.props.context.request.params.isPreview) {\n this.setState({ headerErrorMessage: this.props.resources.requiredParameterMissingErrorMessage });\n } else {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage });\n }\n this.props.context.telemetry.error(\n 'One or more required URL parameters are missing. ' +\n 'Please make sure you have pass in channelId, channelReferenceId and packingSlipId through URL parameter.'\n );\n return Promise.resolve();\n }\n\n const { additionalInformationKeys } = this.props.config;\n\n const hasAdditionalInformation: boolean = ArrayExtensions.hasElements(additionalInformationKeys);\n\n // Call check-in-for-pickup directly if no additional information to capture.\n if (!hasAdditionalInformation) {\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n }\n return Promise.resolve();\n };\n}\n\nexport default CheckInForPickup;\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 { IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\nimport classnames from 'classnames';\nimport { ITermsOfServiceLinkData } from '../distributor-selector.props.autogenerated';\n\nexport interface IDistributorSelectorFoundResultsMessage {\n distributorCountMessage: string;\n distributors?: IDistributorInfo[];\n}\n\nexport interface IDistributorSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport interface IDistributorDoNotShowProps {\n onChange(event: React.ChangeEvent): void;\n doNotShowAgainMessage: string;\n}\n\nexport interface IDistributorButtonProps {\n onClick(event: React.MouseEvent): void;\n text: string;\n className: string;\n}\n\nexport interface IDistributorEmptyMessageProps {\n emptyLocationsText?: string;\n}\n\nexport const DistributorSelectorCountMessage: React.FC = ({\n distributors,\n distributorCountMessage\n}) => {\n if (distributors) {\n return (\n
\n {distributorCountMessage.replace('{count}', distributors.length.toString())}\n
\n );\n }\n\n return null;\n};\n\nexport const DistributorSelectorTermsOfService: React.FC = ({\n link,\n requestContext,\n onTextChange\n}) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-distributor-selector__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 const DistributorSelectorWaiting: React.FC = () => {\n return
;\n};\n\nexport const DistributorSelectorDoNotShowAgain: React.FC = ({ onChange, doNotShowAgainMessage }) => {\n return (\n
\n \n {doNotShowAgainMessage}\n
\n );\n};\n\nexport const DistributorSelectorButton: React.FC = ({ onClick, text, className }) => {\n return (\n \n );\n};\n\nexport const DistributorEmptyMessage: React.FC = ({ emptyLocationsText }) => (\n
\n

{emptyLocationsText}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Distributor selector line item resources.\n */\n// @ts-ignore\nexport interface IDistributorSelectorDistributorLineItemResources {\n currentDistributorText: string;\n locationHeadingText: string;\n primaryContactText: string;\n paymentTypeText: string;\n viewAllDistributorText: string;\n deliveryMethodHeadingText: string;\n}\n\n/**\n * Distributor Locator line item props.\n */\nexport interface IDistributorSelectorLineItemProps {\n mainClassName: string;\n selectDistributorText?: string;\n distributor: IDistributorInfo;\n resources: IDistributorSelectorDistributorLineItemResources;\n index: string;\n currentDistributorId: number | undefined;\n distributorDetailsToBeShown?: string[];\n shouldShowIndex?: boolean;\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n handlers: {\n onSetAsCurrentDistributor(distributorId: number | undefined): void;\n onViewAllDistributorDetails(distributorId: number | undefined): void;\n };\n}\n\n/**\n * Set Preferred distributor functionality.\n * @param props -Distributor locator location items.\n * @returns Distributor locator selected location line item action.\n */\nconst onSetCurrentDistributorClickHandler = (props: IDistributorSelectorLineItemProps) => () => {\n props.handlers.onSetAsCurrentDistributor(props.distributor.OrgUnit?.RecordId);\n};\n\nconst onViewAllDistributorDetailsClickHandler = (props: IDistributorSelectorLineItemProps) => () => {\n props.handlers.onViewAllDistributorDetails(props.distributor.OrgUnit?.RecordId);\n};\n\n/**\n * Renders distributor selector line items.\n * @param props - Distributor selector line items props.\n * @returns - HTML.\n */\nconst distributorSelectorLineItem: React.FC = (props: IDistributorSelectorLineItemProps) => {\n const {\n distributor,\n resources,\n index,\n currentDistributorId,\n telemetryContent,\n shouldShowIndex,\n selectDistributorText,\n distributorDetailsToBeShown,\n mainClassName\n } = props;\n\n const distributorName: string | undefined = distributor.OrgUnit?.OrgUnitName;\n const isCurrentDistributor = currentDistributorId === distributor.OrgUnit?.RecordId;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.CurrentDistributor);\n const currentDistributorAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const distributorAddress = distributor.OrgUnit?.OrgUnitAddress?.FullAddress;\n const distributorPhoneNo = distributor.OrgUnit?.OrgUnitAddress?.Phone;\n const deliveryMethods = distributor?.OrgUnitDeliveryOptions?.DeliveryOptions;\n\n return (\n
\n {isCurrentDistributor ? (\n
\n
{resources.currentDistributorText}
\n
\n ) : null}\n
\n {shouldShowIndex && {index}}\n {distributorName}\n
\n
\n {distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('location') > -1 ? (\n
\n {resources.locationHeadingText}\n {distributorAddress && (\n
\n \n {distributorAddress}\n
\n )}\n
\n ) : null}\n {distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('primaryContact') > -1 ? (\n
\n {resources.primaryContactText}\n {distributorPhoneNo && (\n
\n \n {distributorPhoneNo}\n
\n )}\n
\n ) : null}\n {distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('deliveryMethod') > -1 ? (\n
\n {resources.deliveryMethodHeadingText}\n {ArrayExtensions.hasElements(deliveryMethods) && (\n
\n <>\n {deliveryMethods?.map(deliveryMethod => {\n return (\n \n {deliveryMethod.Description}\n \n );\n })}\n \n
\n )}\n
\n ) : null}\n \n {resources.viewAllDistributorText}\n \n {!isCurrentDistributor ? (\n \n {selectDistributorText}\n \n ) : null}\n
\n
\n );\n};\n\n/**\n * Distributor line item component.\n */\nexport const DistributorSelectorLineItemComponent = distributorSelectorLineItem as (\n props: IDistributorSelectorLineItemProps\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 { ArrayExtensions, IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { OrgUnit } from '@msdyn365-commerce/retail-proxy';\nimport React from 'react';\nimport { observable, reaction } from 'mobx';\nimport classnames from 'classnames';\nimport { IDistributorSelectorResources } from '../distributor-selector.props.autogenerated';\nimport { DistributorSelectorLineItemComponent } from './distributor-selector-line-item.components';\n\n/**\n * Distributor selector lines props interface.\n */\nexport interface IDistributorSelectorLinesProps {\n mainClassName: string;\n distributors?: IDistributorInfo[];\n resources: IDistributorSelectorResources;\n selectedDistributorId?: number;\n shouldDisplayList?: boolean;\n isLocationDisabled?: boolean;\n currentDistributorId: number | undefined;\n shouldShowIndex: boolean;\n distributorDetailsToBeShown?: string[];\n selectDistributorText?: string;\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onDistributorSelected(distributor: OrgUnit | undefined): void;\n onSetAsCurrentDistributor: (distributorId: number | undefined) => void;\n onViewAllDistributorDetails: (distributorId: number | undefined) => void;\n}\n\nexport class DistributorSelectorLines extends React.PureComponent {\n private readonly selectedDistributorRef: React.RefObject;\n private distributorCounter: number;\n @observable private shouldDisplayList: boolean | undefined;\n\n public constructor(props: IDistributorSelectorLinesProps) {\n super(props);\n this.selectedDistributorRef = React.createRef();\n this.distributorCounter = 0;\n this.shouldDisplayList = this.props.shouldDisplayList;\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.shouldDisplayList,\n () => {\n setTimeout(() => {\n this._scrollIntoView();\n }, 0);\n }\n );\n }\n\n public componentDidUpdate(previousProps: IDistributorSelectorLinesProps): void {\n if (this.props.selectedDistributorId !== previousProps.selectedDistributorId) {\n this._scrollIntoView();\n }\n }\n\n public render(): JSX.Element | null {\n const { distributors, mainClassName } = this.props;\n this.shouldDisplayList = this.props.shouldDisplayList;\n\n if (!ArrayExtensions.hasElements(distributors)) {\n return null;\n }\n\n this.distributorCounter = 0;\n\n return (\n
\n {distributors.map((distributor, index) => {\n return this._renderDistributor(distributor, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnit -OrgUnit distributor.\n * @returns Click action on orgUnit Distributor.\n */\n private readonly onDistributorSelected = (orgUnit: OrgUnit | undefined) => () => {\n this.props.onDistributorSelected(orgUnit);\n };\n\n private _renderDistributor(distributor: IDistributorInfo, index: number): JSX.Element | undefined {\n const {\n distributors,\n mainClassName,\n currentDistributorId,\n resources,\n telemetryContent,\n distributorDetailsToBeShown,\n selectDistributorText,\n shouldShowIndex,\n onSetAsCurrentDistributor,\n onViewAllDistributorDetails\n } = this.props;\n const selectedDistributorId = this.props.selectedDistributorId;\n const defaultAriaSetsize = 0;\n const orgUnit = distributor?.OrgUnit;\n if (distributor) {\n ++this.distributorCounter;\n return (\n \n \n
\n );\n }\n return undefined;\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedDistributorDiv = this.selectedDistributorRef.current;\n // In devices with a screen width of less than 768px, we display a toggle button that allows users to switch between the distributor list and the map.\n // The distributor list is initially shown in the list view, followed by the map. Each view has its own scrolling behavior, and they are contained within separate parent wrapper div's.\n const parent = this.props.shouldDisplayList\n ? selectedDistributorDiv?.parentElement?.parentElement\n : selectedDistributorDiv?.parentElement;\n if (selectedDistributorDiv && parent) {\n if (this.props.shouldDisplayList) {\n if (parent.scrollTop > selectedDistributorDiv.offsetTop) {\n parent.scrollTop = selectedDistributorDiv.offsetTop - 10;\n } else if (\n selectedDistributorDiv.offsetTop + selectedDistributorDiv.clientHeight >\n parent.scrollTop + parent.clientHeight\n ) {\n parent.scrollTop = selectedDistributorDiv.offsetTop + selectedDistributorDiv.clientHeight - parent.clientHeight - 10;\n }\n } else {\n if (parent.scrollLeft > selectedDistributorDiv.offsetLeft) {\n parent.scrollLeft = selectedDistributorDiv.offsetLeft;\n } else if (\n selectedDistributorDiv.offsetLeft + selectedDistributorDiv.clientHeight >\n parent.scrollLeft + parent.clientHeight\n ) {\n parent.scrollLeft = selectedDistributorDiv.offsetLeft + selectedDistributorDiv.clientHeight - parent.clientHeight - 10;\n }\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 { TenderType } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Distributor Payment type list interface.\n */\nexport interface IDistributorPaymentTypesListProps {\n mainClassName: string;\n paymentTypesMenuText?: string;\n paymentTypesList?: TenderType[];\n defaultOptionText?: string;\n onChange(paymentType: string): Promise;\n}\n\n/**\n * Distributor Payment types state interface.\n */\nexport interface IDistributorPaymentTypeListState {\n isFilterExpanded: boolean;\n selectedPaymentTypes?: string;\n}\n\n/**\n * Distributor payment option list Filter\n */\nexport class DistributorPaymentOptionList extends React.PureComponent {\n private readonly _distributorPaymentTypesMenu: React.RefObject;\n\n public constructor(props: IDistributorPaymentTypesListProps) {\n super(props);\n this._distributorPaymentTypesMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPaymentTypes: ''\n };\n }\n\n public render(): JSX.Element {\n const { mainClassName, paymentTypesMenuText, paymentTypesList, defaultOptionText } = this.props;\n const selectedPaymentTypesDesc = defaultOptionText\n ? defaultOptionText\n : paymentTypesList?.find((payment: TenderType) => payment.TenderTypeId === this.state.selectedPaymentTypes)?.Name;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {paymentTypesList?.map((tenderType: TenderType) => {\n return (\n \n \n {tenderType.Name}\n \n \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop down get selected.\n */\n private readonly _renderTenderTypes = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n private readonly handleFilterSelection = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n const paymentCode = event.currentTarget.getAttribute('data-value');\n if (paymentCode !== null) {\n this.setState({\n selectedPaymentTypes: paymentCode\n });\n\n this._renderTenderTypes();\n await this.props.onChange(paymentCode);\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 {\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\nimport { TenderType } from '@msdyn365-commerce/retail-proxy';\nimport { DistributorPaymentOptionList } from './distributor-payment-option-list';\n\n/**\n * Distributor Selector Search Form Props interface.\n */\nexport interface IDistributorSelectorSearchFormProps {\n mainClassName: string;\n shouldDisplayList?: boolean;\n telemetryContent?: ITelemetryContent;\n viewMapText: string;\n viewListText: string;\n paymentFilterMenuHeading: string;\n paymentFilterByHeading: string;\n showLocatorView?: boolean;\n showPaymentTypeFilter?: boolean;\n paymentTypes?: TenderType[];\n filteredPaymentType?: string;\n onPaymentFilterSelected(tenderTypeId: string): void;\n onToggleListMapViewState(): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class DistributorSelectorSearchForm extends React.PureComponent {\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n public constructor(props: IDistributorSelectorSearchFormProps) {\n super(props);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.ToggleMapView);\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n mainClassName,\n shouldDisplayList,\n viewMapText,\n viewListText,\n showLocatorView,\n paymentTypes,\n paymentFilterMenuHeading,\n paymentFilterByHeading,\n showPaymentTypeFilter,\n onToggleListMapViewState\n } = this.props;\n const toggleButtonText = shouldDisplayList ? viewMapText : viewListText;\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n\n return (\n
\n
\n {showLocatorView && (\n \n {toggleButtonText}\n \n )}\n {showPaymentTypeFilter &&\n this.renderPaymentTypeList(this.props, paymentTypes, paymentFilterMenuHeading, paymentFilterByHeading)}\n
\n
\n );\n }\n\n /**\n * Method called on payment filter change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (tenderTypeId: string): Promise => {\n this.props.onPaymentFilterSelected(tenderTypeId);\n return Promise.resolve();\n };\n\n private readonly renderPaymentTypeList = (\n props: IDistributorSelectorSearchFormProps,\n paymentTypesOptions: TenderType[] | undefined,\n paymentFilterMenuHeading: string | undefined,\n paymentFilterByHeading: string | undefined\n ): JSX.Element | null => {\n return (\n <>\n
{paymentFilterByHeading}
\n \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\n/// \n\nimport * as React from 'react';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classname from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport { ArrayExtensions, IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport { OrgUnit, TenderType } from '@msdyn365-commerce/retail-proxy';\nimport { IDistributorSelectorData } from './distributor-selector.data';\nimport { IDistributorSelectorProps } from './distributor-selector.props.autogenerated';\nimport {\n DistributorSelectorButton,\n DistributorSelectorDoNotShowAgain,\n DistributorSelectorCountMessage,\n DistributorSelectorTermsOfService,\n DistributorSelectorWaiting,\n DistributorEmptyMessage\n} from './components/distributor-selector-small-components';\nimport { DistributorSelectorLines } from './components/distributor-selector-lines';\nimport { DistributorSelectorSearchForm } from './components/distributor-selector-search-form';\n\n/**\n * Distributor State Interface.\n */\nexport interface IDistributorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isLocationDisabled?: boolean;\n showDistributorDetails?: boolean;\n showWarningDialog?: boolean;\n warningDialogState?: boolean;\n currentSelectedDistributor?: IDistributorInfo;\n distributorId: number | undefined;\n distributorDetailsFromPopup: boolean;\n filteredPaymentTypeId: string;\n}\n\nexport interface ICurrentDistributor {\n DistributorName?: string;\n DistributorId?: number;\n}\n\n/**\n * Distributor View Props Interface.\n */\nexport interface IDistributorSelectorViewProps extends IDistributorSelectorProps {\n state: IDistributorState;\n\n // Current distributor button props\n currentDistributorContainer?: IModuleProps;\n currentDistributorButton: React.ReactNode;\n\n // Containers:\n moduleProps: IModuleProps;\n bodyContainerProps: INodeProps;\n footerContainerProps: INodeProps;\n headerContainerProps: INodeProps;\n\n // Distributor warning Props\n distributorWarningHeaderProps?: React.ReactNode;\n distributorWarningContentHeadingProps?: React.ReactNode;\n distributorWarningContent?: React.ReactNode;\n distributorWarningDoNotShowAgain?: React.ReactNode;\n distributorWarningContinue?: React.ReactNode;\n distributorWarningCancel?: React.ReactNode;\n distributorWarningButtonWrapper: INodeProps;\n\n // Distributor selector Props\n distributorSelectorHeaderProps?: React.ReactNode;\n // Components\n distributorCountMessage?: React.ReactNode;\n searchForm?: React.ReactNode;\n spinner?: React.ReactNode;\n noDistributorsMessage?: React.ReactNode;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n distributorDetailsModal?: INodeProps;\n bodyWrapperProps?: INodeProps;\n distributorsResultContainerProps: INodeProps;\n distributorsResultWrapperProps: INodeProps;\n distributorLinesViewProps?: React.ReactNode;\n terms?: React.ReactNode;\n\n // distributor details modal popup\n showDistributorDetailsPopup: boolean;\n distributorDetailsModalPopup: IModuleProps;\n distributorDetailsModalHeader: INodeProps;\n distributorDetailsHeaderProps: React.ReactNode;\n distributorDetailsModalBody: INodeProps;\n distributorDetailsModalBodyContainer: INodeProps;\n\n distributorDetailsLocation: React.ReactNode;\n distributorDetailsPrimaryContact: React.ReactNode;\n distributorDetailsDeliveryMethods: React.ReactNode;\n distributorDetailsViewAllDetails: React.ReactNode;\n distributorDetailsModalFooter: INodeProps;\n distributorDetailsChangeDistributor: React.ReactNode;\n\n // distributor details slider\n distributorDetailsSliderWrapper: INodeProps;\n distributorDetailsSliderHeaderContainer: INodeProps;\n distributorDetailsSliderFooterContainer: INodeProps;\n distributorDetailsSliderBodyContainer: INodeProps;\n distributorDetailsSliderDistributorName: React.ReactNode;\n distributorDetailsSliderHeaderContent: React.ReactNode;\n distributorDetailsSliderInformationWrapper: INodeProps;\n distributorDetailsSliderCurrentDistributorTitle: React.ReactNode;\n distributorDetailsSliderSelectDistributor: React.ReactNode;\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n *\n * DistributorSelector component\n * @extends {React.Component>}\n */\n@observer\nclass DistributorSelector extends React.Component, IDistributorState> {\n private readonly telemetryContent: ITelemetryContent;\n private mainClass = 'ms-distributor-selector';\n private headerClass = 'ms-header__current-distributor';\n private readonly currentDistributorBtnRef: React.RefObject = React.createRef();\n private currentDistributor?: ICurrentDistributor;\n\n public constructor(props: IDistributorSelectorProps) {\n super(props);\n this.state = {\n isSearchInProgress: true,\n searchTerm: '',\n showWarningDialog: false,\n showDistributorDetails: false,\n distributorId: undefined,\n distributorDetailsFromPopup: false,\n filteredPaymentTypeId: ''\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.currentDistributor = this.getCurrentDistributor();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n },\n request: { user }\n }\n } = this.props;\n\n if (this.props.data.distributorSelectorStateManager.result) {\n await this._getAndUpdateDistributorList();\n this.checkUserStateAndOpenDialog(user);\n }\n\n reaction(\n () => this.props.data.distributorSelectorStateManager.result,\n async () => {\n await this._getAndUpdateDistributorList();\n this.checkUserStateAndOpenDialog(user);\n }\n );\n\n reaction(\n () => this.props.data.distributorSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.distributorSelectorStateManager.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\n public render(): JSX.Element | null {\n const {\n config: {\n className,\n distributorSelectorHeading,\n distributorWarningDialogHeading,\n distributorWarningContent,\n termsOfServiceLink,\n distributorDetailsToBeShown,\n selectDistributorText,\n doNotShowAgainCheckbox,\n noDistributorFoundText\n },\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n },\n context: {\n request: { user }\n },\n slots: { maps: mapSlot },\n resources\n } = this.props;\n const { showWarningDialog } = this.state;\n const currentDistributorId = this.currentDistributor?.DistributorId;\n const currentDistributorName = this.currentDistributor?.DistributorName;\n const headerText = currentDistributorName ? currentDistributorName : resources.headerCurrentDistributorText;\n\n let distributorInfoList = distributorSelectorStateManager?.distributorList;\n const paymentTypes = this.getUniquePaymentTypes(distributorInfoList);\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const selectedDistributorId = distributorSelectorStateManager?.selectedDistributorId;\n\n const distributorDetails = this.state.showDistributorDetails\n ? this.getDistributorDetails(this.state.distributorId)\n : this.getDistributorDetails(currentDistributorId);\n const isCurrentDistributorSelected = this.state.distributorId === currentDistributorId;\n const shouldOpenDistributorSelectorDialog = !!distributorSelectorStateManager?.isDistributorSelectorDialogOpen;\n const shouldOpenDistributorDetailPopup = !!(distributorSelectorStateManager?.isDistributorDetailPopupOpen && distributorDetails);\n const shouldDisplayList = distributorSelectorStateManager?.listMapViewState?.displayList;\n if (this.state.filteredPaymentTypeId && distributorInfoList) {\n distributorInfoList = this.filterDistributorsByPaymentTypes(distributorInfoList, this.state.filteredPaymentTypeId);\n }\n const sortedDistributorList = distributorInfoList ? this._sortDistributor(distributorInfoList, currentDistributorId) : [];\n\n const canShowLocationView =\n (distributorSelectorStateManager?.distributorSelectorContext?.showMapViewLink === undefined ||\n distributorSelectorStateManager.distributorSelectorContext.showMapViewLink) &&\n distributorSelectorStateManager?.isMapModuleLoaded &&\n hasMapSlot;\n\n const showDistributorDetailsOnMap = distributorSelectorStateManager?.showDistributorDetailsOnMap;\n\n // @ts-ignore\n const viewProps: IDistributorSelectorViewProps = {\n ...(this.props as IDistributorSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n showDistributorDetailsPopup: shouldOpenDistributorDetailPopup,\n currentDistributorContainer: this.shouldShowDistributors(user)\n ? {\n tag: 'div' as NodeTag,\n moduleProps: this.props,\n className: `${this.headerClass}-container`\n }\n : undefined,\n currentDistributorButton: (\n \n {headerText}\n \n ),\n moduleProps: {\n tag: Modal,\n moduleProps: this.props,\n className: classname(hasMapSlot ? `${this.mainClass} maps` : `${this.mainClass}`, className),\n autoFocus: true,\n fade: true,\n isOpen: shouldOpenDistributorSelectorDialog,\n 'aria-label': showWarningDialog ? distributorWarningDialogHeading : distributorSelectorHeading,\n onClosed: this._closeDistributorSelectorDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle:\n currentDistributorId || !ArrayExtensions.hasElements(distributorInfoList)\n ? this._closeDistributorSelectorDialog\n : undefined\n },\n isMobileView: isMobileDevice,\n headerContainerProps: {\n tag: ModalHeader,\n className: `${this.mainClass}-modal-header`,\n toggle:\n currentDistributorId || !ArrayExtensions.hasElements(distributorInfoList)\n ? this._closeDistributorSelectorDialog\n : undefined\n },\n distributorSelectorHeaderProps: distributorSelectorHeading && (\n \n ),\n distributorWarningHeaderProps: distributorWarningDialogHeading && (\n \n ),\n distributorWarningContent: distributorWarningContent && (\n \n ),\n footerContainerProps: {\n tag: ModalFooter,\n className: classname(`${this.mainClass}__modal-footer`, this.state.showWarningDialog ? 'distributor-warning-footer' : '')\n },\n bodyContainerProps: {\n tag: ModalBody,\n className: classname(`${this.mainClass}__modal-body`, this.state.showWarningDialog ? 'distributor-warning' : '')\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: `${this.mainClass}__body_wrapper`\n },\n distributorsResultContainerProps: {\n tag: 'div' as NodeTag,\n className: classname(`${this.mainClass}__distributor_container`, shouldDisplayList ? 'show' : 'hide')\n },\n distributorsResultWrapperProps: {\n tag: 'div' as NodeTag,\n className: classname(`${this.mainClass}__distributors_wrapper`, !showDistributorDetailsOnMap ? 'hide' : '')\n },\n mapContainerProps: hasMapSlot\n ? {\n tag: 'div' as NodeTag,\n className: classname(`${this.mainClass}__map_container`, !shouldDisplayList ? 'show' : 'hide')\n }\n : undefined,\n distributorCountMessage: (\n \n ),\n searchForm: (\n \n ),\n spinner: ,\n distributorLinesViewProps: ArrayExtensions.hasElements(distributorInfoList) ? (\n \n ) : (\n undefined\n ),\n noDistributorsMessage: ,\n terms: (\n \n ),\n distributorWarningButtonWrapper: {\n tag: 'div' as NodeTag,\n className: `${this.mainClass}__footer-button-wrapper`\n },\n distributorWarningDoNotShowAgain: doNotShowAgainCheckbox && (\n \n ),\n distributorWarningContinue: (\n \n ),\n distributorWarningCancel: (\n \n ),\n ...this.renderDistributorDetailsViewProps(distributorDetails),\n ...this.renderDistributorSliderViewProps(distributorDetails, isCurrentDistributorSelected)\n };\n return this.props.renderView(viewProps);\n }\n\n public toggleListMapViewState = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n await distributorSelectorStateManager?.toggleListMapViewState();\n };\n\n /**\n * Method to be called on the click on don't show again checkbox.\n */\n public onChangeForDoNotShow = (event: React.ChangeEvent): void => {\n this.setState({ warningDialogState: event.target.checked });\n };\n\n public onSelectDistributor = async (): Promise => {\n if (this.state.distributorId) {\n await this._setCurrentDistributor(this.state.distributorId);\n }\n };\n\n public onChangeDistributorClick = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n if (distributorSelectorStateManager) {\n // Set selected distributor id\n await distributorSelectorStateManager.setSelectedDistributorId(undefined);\n\n if (distributorSelectorStateManager.isDistributorDetailPopupOpen) {\n // close the detail popup\n await distributorSelectorStateManager.closeDistributorDetailPopup();\n }\n\n if (distributorSelectorStateManager.isDistributorSelectorDialogOpen) {\n this.setState({ distributorId: undefined, showDistributorDetails: false, distributorDetailsFromPopup: false });\n } else {\n // Open the distributor selector modal\n await distributorSelectorStateManager.openDistributorSelectorDialog({\n parentElementRef: this.currentDistributorBtnRef\n });\n }\n }\n };\n\n public onDistributorCloseButtonClick = async () => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n if (distributorSelectorStateManager) {\n await distributorSelectorStateManager.closeDistributorDetailPopup();\n }\n };\n\n /**\n * Method to be called on the click on the continue button.\n */\n public continueButtonClick = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n const currentDistributor = this.state.currentSelectedDistributor;\n\n if (this.state.warningDialogState) {\n distributorSelectorStateManager?.hideWarningMessage(cookies.isConsentGiven());\n }\n\n await this._closeDistributorSelectorDialog();\n this.redirectToDistributorURL(currentDistributor);\n };\n\n /**\n * Method to be called on click on the cancel button.\n */\n public cancelButtonClick = async (): Promise => {\n await this._closeDistributorSelectorDialog();\n this.setState({ warningDialogState: false, showWarningDialog: false, currentSelectedDistributor: undefined });\n };\n\n public backToSearchClick = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n this.setState({ showDistributorDetails: false, distributorId: undefined });\n await distributorSelectorStateManager?.setSelectedDistributorId(undefined);\n };\n\n public onViewAllDistributorDetailsFromPopup = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n if (distributorSelectorStateManager) {\n if (!this.currentDistributor?.DistributorId) {\n return;\n }\n\n // close the detail popup\n await distributorSelectorStateManager.closeDistributorDetailPopup();\n\n // Open the distributor selector modal\n await distributorSelectorStateManager.openDistributorSelectorDialog({\n parentElementRef: this.currentDistributorBtnRef\n });\n\n // Set selected distributor id\n await distributorSelectorStateManager.setSelectedDistributorId(this.currentDistributor?.DistributorId);\n\n this.setState({\n distributorId: this.currentDistributor?.DistributorId,\n showDistributorDetails: true,\n distributorDetailsFromPopup: true\n });\n }\n };\n\n public onViewAllDistributorDetails = async (distributorId: number | undefined): Promise => {\n if (!distributorId) {\n return;\n }\n this.setState({ distributorId: distributorId, showDistributorDetails: true });\n };\n\n private getCurrentDistributor = (): ICurrentDistributor | undefined => {\n const {\n context: {\n request: {\n url: { requestUrl },\n user\n }\n }\n } = this.props;\n\n // We show the distributor selector module when the user is signed-in.\n if (user.isAuthenticated) {\n const distributorList = this.props.data.distributorList?.result;\n\n const currentDistributor = distributorList?.find(distributor =>\n distributor.MarketSettings?.localeItems.some(\n locale => requestUrl.href.toLowerCase().indexOf(locale.localeBaseUrl.toLowerCase()) >= 0\n )\n );\n\n if (currentDistributor) {\n return {\n DistributorId: currentDistributor.OrgUnit?.RecordId,\n DistributorName: currentDistributor.OrgUnit?.OrgUnitName\n };\n } else {\n return undefined;\n }\n }\n return undefined;\n };\n\n private getUniquePaymentTypes = (distributors?: IDistributorInfo[]) => {\n const uniquePaymentTypes = new Set();\n distributors?.forEach(distributor => {\n distributor.PaymentTypes?.forEach(paymentType => {\n uniquePaymentTypes.add(paymentType);\n });\n });\n return [...uniquePaymentTypes];\n };\n\n /**\n * The method to be called for filtering store locations based on the user's selected filters.\n * @param distributors - Distributors List.\n * @param filteredPaymentTypeId - Filter selected by the user.\n * @returns -Filtered distributors.\n */\n private readonly filterDistributorsByPaymentTypes = (distributors: IDistributorInfo[], filteredPaymentTypeId: string) => {\n return distributors.filter(distributor => {\n return distributor?.PaymentTypes?.some(paymentType => {\n return paymentType.TenderTypeId === filteredPaymentTypeId;\n });\n });\n };\n\n /**\n * Redirect user to the distributor selector site.\n * @param currentDistributor - Current distributor details\n */\n private redirectToDistributorURL = (currentDistributor: IDistributorInfo | undefined) => {\n const { telemetry } = this.props;\n const marketSettings = currentDistributor?.MarketSettings;\n\n // Check if the current locale is present.\n const currentLocale = marketSettings?.localeItems.find(localeItem => localeItem.locale === this.props.context.request.locale);\n let distributorURL = '';\n if (currentLocale) {\n distributorURL = currentLocale.localeBaseUrl;\n } else {\n // Check if the default locale is set.\n let defaultLocale = marketSettings?.localeItems.find(localeItem => localeItem.isDefaultLocale);\n if (!defaultLocale) {\n defaultLocale = ArrayExtensions.hasElements(marketSettings?.localeItems) ? marketSettings?.localeItems[0] : undefined;\n } else {\n distributorURL = defaultLocale.localeBaseUrl;\n }\n }\n\n if (distributorURL) {\n if (!distributorURL.startsWith('https://')) {\n distributorURL = `https://${distributorURL}`;\n }\n window.location.href = distributorURL;\n } else if (telemetry) {\n telemetry.debug('redirectToDistributorURL: Distributor URL is empty');\n }\n };\n\n /**\n * Handle click on the distributor selector.\n * @returns : Promise void.\n */\n private handleDistributorSelectorClick = async () => {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n\n if (this.currentDistributor?.DistributorId) {\n if (distributorSelectorStateManager?.isDistributorDetailPopupOpen) {\n distributorSelectorStateManager?.closeDistributorDetailPopup();\n } else {\n await distributorSelectorStateManager?.openDistributorDetailPopup({\n parentElementRef: this.currentDistributorBtnRef\n });\n }\n return;\n }\n };\n\n /**\n * Filter distributors by payment types.\n * @param tenderTypeId -Delivery Code.\n */\n private readonly onFilteredPaymentType = (tenderTypeId: string) => {\n this.setState({ filteredPaymentTypeId: tenderTypeId });\n };\n\n /**\n * Creates the distributor details view props.\n * @param distributorDetails: Distributor details\n * @returns : View props for the distributor details.\n */\n private renderDistributorDetailsViewProps = (distributorDetails: IDistributorInfo | undefined) => {\n const {\n config: { switchDistributorText, distributorDetailsToBeShown },\n resources\n } = this.props;\n const distributorAddress = distributorDetails?.OrgUnit?.OrgUnitAddress?.FullAddress;\n const distributorPhoneNo = distributorDetails?.OrgUnit?.OrgUnitAddress?.Phone;\n const deliveryMethods = distributorDetails?.OrgUnitDeliveryOptions?.DeliveryOptions;\n\n const distributorDetailsViewProps = {\n distributorDetailsModalPopup: {\n tag: 'div',\n moduleProps: this.props,\n className: classname(`${this.mainClass}__details_dialog`)\n },\n distributorDetailsModalHeader: {\n tag: 'div',\n className: `${this.mainClass}__dialog__header`\n },\n distributorDetailsHeaderProps: (\n <>\n {distributorDetails?.OrgUnit?.OrgUnitName || ''}\n \n \n ),\n distributorDetailsModalBody: {\n tag: 'div',\n className: `${this.mainClass}__dialog__body`\n },\n distributorDetailsModalBodyContainer: {\n tag: 'div',\n className: `${this.mainClass}__dialog__container`\n },\n distributorDetailsLocation: (this.state.showDistributorDetails ||\n (distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('location') > -1)) && (\n
\n {resources.locationHeadingText}\n {distributorAddress && (\n
\n \n {distributorAddress}\n
\n )}\n
\n ),\n distributorDetailsPrimaryContact: (this.state.showDistributorDetails ||\n (distributorDetailsToBeShown && distributorDetailsToBeShown?.indexOf('primaryContact') > -1)) && (\n
\n {resources.primaryContactText}\n {distributorPhoneNo && (\n
\n \n {distributorPhoneNo}\n
\n )}\n
\n ),\n distributorDetailsDeliveryMethods: (this.state.showDistributorDetails ||\n (distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('deliveryMethod') > -1)) && (\n
\n {resources.deliveryMethodHeadingText}\n {ArrayExtensions.hasElements(deliveryMethods) && (\n
\n <>\n {deliveryMethods?.map(deliveryMethod => {\n return (\n \n {deliveryMethod.Description}\n \n );\n })}\n \n
\n )}\n
\n ),\n distributorDetailsViewAllDetails: (\n \n {resources.viewAllDistributorText}\n \n ),\n distributorDetailsChangeDistributor: (\n \n ),\n distributorDetailsModalFooter: {\n tag: 'div',\n className: `${this.mainClass}__dialog__footer`\n },\n distributorDetailsSliderWrapper: {\n tag: 'div',\n className: classname(\n `${this.mainClass}__details-slider-wrapper`,\n this.state.showDistributorDetails ? 'show' : '',\n this.state.distributorDetailsFromPopup ? 'no-header' : ''\n )\n }\n };\n return distributorDetailsViewProps;\n };\n\n private renderDistributorSliderViewProps = (\n distributorDetails: IDistributorInfo | undefined,\n isCurrentDistributorSelected: boolean\n ) => {\n const {\n resources,\n config: { selectDistributorText }\n } = this.props;\n const payLoad: IPayLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.CurrentDistributor);\n const currentDistributorAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n\n const distributorSliderViewProps = {\n distributorDetailsSliderDistributorName: (\n
{distributorDetails?.OrgUnit?.OrgUnitName}
\n ),\n distributorDetailsSliderHeaderContent: (\n \n {resources.distributorSliderBackToSearch}\n \n ),\n distributorDetailsSliderHeaderContainer: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-heading`\n },\n distributorDetailsSliderBodyContainer: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-body`\n },\n distributorDetailsSliderFooterContainer: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-footer`\n },\n distributorDetailsSliderInformationWrapper: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-info-wrapper`\n },\n distributorDetailsSlidercurrentDistributorTitle: isCurrentDistributorSelected && (\n
\n
{resources.currentDistributorText}
\n
\n ),\n distributorDetailsSliderSelectDistributor: !isCurrentDistributorSelected && (\n \n {\n \n }\n \n )\n };\n return distributorSliderViewProps;\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n private handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.state.showWarningDialog) {\n this.props.config.distributorWarningDialogHeading = event.target.value;\n } else {\n this.props.config.distributorSelectorHeading = event.target.value;\n }\n };\n\n /**\n * Method to be called on warning text change.\n * @param event -Content Edit Event.\n */\n private handleWarningTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.distributorWarningContent = event.target.value;\n };\n\n /**\n * Method to be called on term of service text change.\n * @param event -Content Edit Event.\n */\n private 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 distributor text change.\n * @param event -Content Edit Event.\n */\n private handleSelectDistributorTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n if (this.props.config.selectDistributorText) {\n this.props.config.selectDistributorText = event.target.value;\n }\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n private handleChangeDistributorTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n if (this.props.config.switchDistributorText) {\n this.props.config.switchDistributorText = event.target.value;\n }\n };\n\n private shouldShowDistributors = (user: Msdyn365.IRequestContextUser): boolean => {\n const isOboRequest = Msdyn365.isOboRequest(this.props.context.request);\n const isOBOAccountSelected = isOboRequest && !!this.props.context.request.cookies.getAccountSelectionCookie();\n return isOBOAccountSelected || (!isOboRequest && !!user.isSignedIn);\n };\n\n /**\n * If the user is authenticated but has no current distributor, open the distributor selector dialog.\n * @param user - IRequestContextUser\n */\n private checkUserStateAndOpenDialog = (user: Msdyn365.IRequestContextUser) => {\n if (!this.currentDistributor && this.shouldShowDistributors(user)) {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager.result;\n distributorSelectorStateManager?.openDistributorSelectorDialog({\n parentElementRef: this.currentDistributorBtnRef\n });\n }\n };\n\n /**\n * Get the distributor details from the distributorId\n * @param distributorId - Distributor Id\n * @returns - Returns the distributor info.\n */\n private getDistributorDetails = (distributorId: number | undefined): IDistributorInfo | undefined => {\n const {\n data: {\n distributorList: { result: distributorList }\n }\n } = this.props;\n\n return distributorList?.find(distributor => distributor.OrgUnit?.RecordId === distributorId);\n };\n\n /**\n * Method to be called updating the distributor list.\n */\n private readonly _getAndUpdateDistributorList = async (): Promise => {\n const {\n data: {\n distributorList: { result: distributorList }\n }\n } = this.props;\n\n this.setState({ isSearchInProgress: true });\n\n if (distributorList) {\n await this._updateDistributorListInStateManager(distributorList);\n }\n\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to update the distributor state manager.\n * @param distributorList - distributor Info Object.\n * @returns Void promise.\n */\n private readonly _updateDistributorListInStateManager = async (distributorList: IDistributorInfo[]): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n },\n telemetry\n } = this.props;\n\n if (!distributorSelectorStateManager || !distributorList) {\n return;\n }\n\n const currentDistributorId = this.currentDistributor?.DistributorId;\n const sortedDistributorList = this._sortDistributor(distributorList, currentDistributorId);\n\n // When serializing the distributor selector state manager, functions get stripped.\n if (distributorSelectorStateManager.setDistributorsList) {\n await distributorSelectorStateManager.setDistributorsList(sortedDistributorList).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update distributor state');\n }\n });\n }\n };\n\n /**\n * Method will sort all distributor.\n * @param distributors - Distributor List.\n * @param currentDistributorId - Distributor Id.\n * @returns List of distributor.\n */\n private _sortDistributor(distributors: IDistributorInfo[], currentDistributorId: number | undefined): IDistributorInfo[] {\n const isCurrentDistributor = (value: IDistributorInfo) => currentDistributorId && value.OrgUnit?.RecordId === currentDistributorId;\n\n return [...distributors.filter(isCurrentDistributor), ...distributors.filter(distributor => !isCurrentDistributor(distributor))];\n }\n\n /**\n * Method to be called closing the distributor selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDistributorSelectorDialog = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n if (distributorSelectorStateManager) {\n distributorSelectorStateManager.distributorSelectorContext?.parentElementRef?.current?.focus();\n // Update the distributor map visibility to true.\n distributorSelectorStateManager.updateDistributorMapVisibility(true);\n await distributorSelectorStateManager.setSelectedDistributorId(undefined);\n await distributorSelectorStateManager.closeDistributorSelectorDialog();\n this.setState({\n searchTerm: '',\n showWarningDialog: false,\n currentSelectedDistributor: undefined,\n distributorDetailsFromPopup: false,\n showDistributorDetails: false,\n distributorId: undefined\n });\n }\n };\n\n /**\n * On Selecting distributor.\n * @param distributorId - Distributor Id.\n */\n private readonly _setSelectedDistributor = async (orgUnit: OrgUnit | undefined): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n if (!distributorSelectorStateManager || !orgUnit) {\n return;\n }\n\n await distributorSelectorStateManager.setSelectedDistributorId(orgUnit.RecordId);\n };\n\n /**\n * On Selecting Current Distributor.\n * @param distributorId - Distributor Id.\n */\n private readonly _setCurrentDistributor = async (distributorId: number | undefined): Promise => {\n if (!distributorId) {\n return;\n }\n\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n if (!distributorSelectorStateManager) {\n return;\n }\n const distributorList = distributorSelectorStateManager?.distributorList;\n const currentDistributor = distributorList?.find(distributor => distributor.OrgUnit?.RecordId === distributorId);\n if (distributorSelectorStateManager.hideDistributorWarning || !this.currentDistributor) {\n this.redirectToDistributorURL(currentDistributor);\n await this._closeDistributorSelectorDialog();\n } else {\n this.setState({ showWarningDialog: true, currentSelectedDistributor: currentDistributor });\n }\n };\n}\n\nexport default DistributorSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList 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 private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IEveMap contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum searchRadiusUnit {\r\n mi = 'mi',\r\n km = 'km'\r\n}\r\n\r\nexport interface IEveMapConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n pushpinOptions?: IPushpinOptionsData;\r\n className?: string;\r\n clientRender?: boolean;\r\n useChannelMfr?: boolean;\r\n autoSuggestionEnabled?: boolean;\r\n autoSuggestOptions?: IAutoSuggestOptionsData;\r\n searchRadiusUnit?: searchRadiusUnit;\r\n lookupRadius: number;\r\n pageLength: number;\r\n defaultLatitudeValue: number;\r\n defaultLongitudeValue: number;\r\n}\r\n\r\nexport interface IEveMapResources {\r\n searchPlaceholderText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n seeAllStoresText: string;\r\n milesShortText: string;\r\n kilometersShortText: string;\r\n contactText: string;\r\n emptyLocationsText: string;\r\n dealerCountMessage: string;\r\n dealerAllCountMessage: string;\r\n dealerCountMessageInKm: string;\r\n dealerDetailsText: string;\r\n dealerDetailsManufacturerCodeText: string;\r\n dealerDetailsLaborRateText: string;\r\n dealerDetailsDescriptionText: string;\r\n dealerDetailsNotesText: string;\r\n dealerDetailsContractCodeText: string;\r\n paginationPrev: string;\r\n paginationNext: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IPushpinOptionsData {\r\n size?: number;\r\n color?: string;\r\n selectionColor?: string;\r\n showIndex?: boolean;\r\n}\r\n\r\nexport interface IAutoSuggestOptionsData {\r\n maxResults?: number;\r\n}\r\n\r\nexport interface IEveMapProps extends Msdyn365.IModule {\r\n resources: IEveMapResources;\r\n config: IEveMapConfig;\r\n}\r\n","// import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IEveMapResources } from '../eve-map.props.autogenerated';\r\n\r\nexport interface IDealerSelectorEmptyMessageProps {\r\n resources: IEveMapResources;\r\n}\r\nexport const DealerSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

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

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

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

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

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

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

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

{resources.contactInfoHeader}

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

{resources.dealerDetailsHeader}

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

\r\n {chargeName}: \r\n {chargeAmount}\r\n

\r\n );\r\n};\r\n\r\nexport const OrderConfirmationDetail: React.FC = ({\r\n salesOrder,\r\n cultureFormatter,\r\n customer,\r\n deliveryMode,\r\n orderedProducts,\r\n resources,\r\n chargeLinesBreakdown\r\n}) => {\r\n // const getProductDescription = (itemId: string): string => orderedProducts.find(p => p.ItemId === itemId)?.Description || '';\r\n const getProductName = (itemId: string): string => orderedProducts.find(p => p.ItemId === itemId)?.Name || '';\r\n const salesOrderAttrs = salesOrder.AttributeValues || [];\r\n const attr = salesOrderAttrs?.find(s => s.Name === 'po-number') as AttributeTextValue;\r\n\r\n return (\r\n
\r\n
\r\n

{resources.orderConfirmationHeading}

\r\n window.print()} />\r\n
\r\n\r\n
\r\n
\r\n
{resources.orderInformationHeading}
\r\n
\r\n
\r\n

{resources.webReferenceNumber}

\r\n

{salesOrder.ChannelReferenceId}

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

{resources.salesOrderNumber}

\r\n

{resources.salesOrderPending}

\r\n
\r\n {attr ? (\r\n
\r\n

{resources.poNumber}

\r\n

{attr.TextValue}

\r\n
\r\n ) : (\r\n undefined\r\n )}\r\n\r\n
\r\n

{resources.orderDate}

\r\n

\r\n {cultureFormatter.formatDate(salesOrder.CreatedDateTime!, {\r\n year: 'numeric',\r\n month: 'short',\r\n day: '2-digit'\r\n })}\r\n

\r\n
\r\n
\r\n {salesOrder.Comment ? (\r\n
\r\n
\r\n

{resources.notes}

\r\n

{salesOrder.Comment}

\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n
{resources.accountInformationHeading}
\r\n
\r\n
\r\n

{resources.accountName}

\r\n

{customer?.FirstName}

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

{resources.accountNumber}

\r\n

{customer?.AccountNumber}

\r\n
\r\n
\r\n
\r\n
\r\n
{resources.shippingInformationHeading}
\r\n
\r\n
\r\n

{resources.shippingAddress}

\r\n

{salesOrder.ShippingAddress?.Name}

\r\n

{salesOrder.ShippingAddress?.FullAddress}

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

{resources.shippingMethod}

\r\n

{deliveryMode}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {salesOrder.SalesLines?.map((so, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{resources.line}{resources.itemId}{resources.description}{resources.price}{resources.quantity}{resources.total}
{so.LineNumber}{so.ItemId}\r\n {getProductName(so.ItemId!)}\r\n {so.Comment ? (\r\n <>\r\n Notes: \r\n {so.Comment}\r\n \r\n ) : null}\r\n {so.OriginalPrice ? cultureFormatter.formatCurrency(so.OriginalPrice) : 'N/A'}{so.Quantity}{so.TotalAmount ? cultureFormatter.formatCurrency(so.TotalAmount) : 'N/A'}
\r\n
\r\n {salesOrder.ChargeLines && otherChargesLines(salesOrder, chargeLinesBreakdown, cultureFormatter)}\r\n\r\n
\r\n

{resources.orderTotalAmount}

\r\n

{salesOrder.TotalAmount ? cultureFormatter.formatCurrency(salesOrder.TotalAmount) : 'N/A'}

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { CartLine, Customer, SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { ICultureInfoFormatter } from '@msdyn365-commerce/core-internal';\r\nimport { ICheckoutOrderConfirmationResources } from '../../definition-extensions/checkout-order-confirmation.ext.props.autogenerated';\r\n\r\nexport interface IOrderConfirmationDetailProps {\r\n cultureFormatter: ICultureInfoFormatter;\r\n salesOrder: SalesOrder;\r\n customer: Customer | undefined;\r\n deliveryMode: string;\r\n orderedProducts: SimpleProduct[];\r\n resources: ICheckoutOrderConfirmationResources;\r\n chargeLinesBreakdown: IChargeLinesBreakdownData[];\r\n cartLines: CartLine[];\r\n}\r\n\r\nexport interface IChargeLinesBreakdownData {\r\n chargeLineLabel?: string;\r\n chargeCode?: string;\r\n}\r\n\r\nexport const otherChargesLines = (\r\n salesOrder: SalesOrder,\r\n chargeLinesBreakdown: IChargeLinesBreakdownData[],\r\n cultureFormatter: ICultureInfoFormatter\r\n) => {\r\n const chargeCodes = chargeLinesBreakdown;\r\n let lines = salesOrder.ChargeLines;\r\n let linesNode: React.ReactNode[] = [];\r\n let otherChargeTotal = salesOrder.ChargeAmount || 0;\r\n let currencyFormatter = cultureFormatter.formatCurrency;\r\n\r\n chargeCodes?.map(c => {\r\n const node = lines\r\n ?.filter(line => line.ChargeCode === c.chargeCode)\r\n .map(r => {\r\n otherChargeTotal -= r.CalculatedAmount || 0;\r\n return renderLineChargeNode(c.chargeLineLabel || '', currencyFormatter(r.CalculatedAmount?.toString() ?? ''));\r\n });\r\n linesNode.push(node);\r\n });\r\n\r\n if (otherChargeTotal >= 0.01) {\r\n const otherChargesNode = renderLineChargeNode('Other Charges', currencyFormatter(otherChargeTotal.toString() ?? ''));\r\n linesNode.push(otherChargesNode);\r\n }\r\n\r\n return <>{linesNode};\r\n};\r\n\r\nexport const renderLineChargeNode = (chargeName: string, chargeAmount: string): React.ReactNode => {\r\n return (\r\n

\r\n {chargeName}: \r\n {chargeAmount}\r\n

\r\n );\r\n};\r\n\r\nexport const InvoicePaymentConfirmationDetail: React.FC = ({\r\n salesOrder,\r\n cultureFormatter,\r\n customer,\r\n deliveryMode,\r\n orderedProducts,\r\n resources,\r\n chargeLinesBreakdown,\r\n cartLines\r\n}) => {\r\n const getProductName = (itemId: string): string => orderedProducts.find(p => p.ItemId === itemId)?.Name || '';\r\n console.log('salesOrder', salesOrder);\r\n\r\n return (\r\n
\r\n
\r\n

{resources.paymentSubmittedHeading}

\r\n window.print()} />\r\n
\r\n\r\n
\r\n
\r\n
{resources.paymentInformationHeading}
\r\n
\r\n
\r\n

{resources.thankYou}

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

{resources.paymentDate}

\r\n

\r\n {cultureFormatter.formatDate(salesOrder.CreatedDateTime!, {\r\n year: 'numeric',\r\n month: 'short',\r\n day: '2-digit'\r\n })}\r\n

\r\n
\r\n
\r\n {salesOrder.Comment ? (\r\n
\r\n
\r\n

{resources.notes}

\r\n

{salesOrder.Comment}

\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n
{resources.accountInformationHeading}
\r\n
\r\n
\r\n

{resources.accountName}

\r\n

{customer?.FirstName}

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

{resources.accountNumber}

\r\n

{customer?.AccountNumber}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n {salesOrder.SalesLines?.map((so, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n */}\r\n \r\n {cartLines?.map((cl, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{resources.line}{resources.itemId}{resources.description}{resources.price}{resources.quantity}{resources.total}
{so.LineNumber}{so.ItemId}\r\n {getProductName(so.ItemId!)}\r\n {so.Comment ? (\r\n <>\r\n Notes: \r\n {so.Comment}\r\n \r\n ) : null}\r\n {so.OriginalPrice ? cultureFormatter.formatCurrency(so.OriginalPrice) : 'N/A'}{so.Quantity}{so.TotalAmount ? cultureFormatter.formatCurrency(so.TotalAmount) : 'N/A'}
{cl.LineNumber}{cl.ItemId}\r\n {getProductName(cl.ItemId!)}\r\n {cl.Comment ? (\r\n <>\r\n Notes: \r\n {cl.Comment}\r\n \r\n ) : null}\r\n {cl.OriginalPrice ? cultureFormatter.formatCurrency(cl.OriginalPrice) : 'N/A'}{cl.Quantity}{cl.ExtendedPrice ? cultureFormatter.formatCurrency(cl.ExtendedPrice) : 'N/A'}
\r\n
\r\n {salesOrder.ChargeLines && otherChargesLines(salesOrder, chargeLinesBreakdown, cultureFormatter)}\r\n\r\n
\r\n

{resources.orderTotalAmount}

\r\n

{salesOrder.TotalAmount ? cultureFormatter.formatCurrency(salesOrder.TotalAmount) : 'N/A'}

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IHelp,\r\n IOrderSummary,\r\n IPaymentMethods\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common';\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-sales-line';\r\nimport { ICheckoutOrderConfirmationViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/./checkout-order-confirmation';\r\nimport { OrderConfirmationDetail } from './components/OrderConfirmationDetail';\r\nimport { ICheckoutOrderConfirmationProps } from '../definition-extensions/checkout-order-confirmation.ext.props.autogenerated';\r\nimport { ICheckoutOrderConfirmationData } from '../definition-extensions/checkout-order-confirmation.data';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { InvoicePaymentConfirmationDetail } from './components/InvoicePaymentConfirmationDetail';\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps\r\n // receiptEmail\r\n // createdDate,\r\n // channelReferenceId\r\n}) => (\r\n \r\n {/* {channelReferenceId} */}\r\n {/* {receiptEmail} */}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n {salesLine}\r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n pickupDateTimeslot,\r\n trackingInfo\r\n}) => (\r\n \r\n {heading}\r\n {count}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = ({\r\n orderSummaryProps,\r\n heading,\r\n subtotal,\r\n shipping,\r\n tax,\r\n totalAmount,\r\n earnedPoints\r\n}) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderConfirmationView: React.FC> = ({\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n resources,\r\n ...rest\r\n}) => {\r\n const DLV_MODE_KEY = 'dlv-mode';\r\n const [dlvMode, setDlvMode] = React.useState('');\r\n const salesOrder = rest.data.checkout.result?.salesOrder;\r\n const cart = rest.data.checkout.result?.checkoutCart.cart;\r\n\r\n const orderedProducts = rest.data.checkout.result?.orderedProducts || [];\r\n React.useEffect(() => {\r\n setDlvMode(window.sessionStorage.getItem(DLV_MODE_KEY) || '');\r\n sessionStorage.removeItem(DLV_MODE_KEY);\r\n }, []);\r\n\r\n return (\r\n \r\n {/*{heading}*/}\r\n {alert}\r\n {loading}\r\n {salesOrder && (\r\n rest.salesOrder?.SalesLines?.[0]?.IsInvoiceLine ? (\r\n \r\n ) : \r\n \r\n )}\r\n {/* {orderInfomation && } */}\r\n {backToShoppingLink}\r\n {/*{groups && }*/}\r\n {/*{orderSummary && }*/}\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\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 { FormBuilder } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckInViewProps } from './check-in-for-pickup';\n\n/**\n * The check-in view for submitting check-in, capturing additional information, and showing check-in confirmation.\n * @param props - The check-in view properties.\n * @returns The check-in view as a react component.\n */\nconst CheckInViewComponent: React.FC = (props: ICheckInViewProps) => {\n const { headerError, checkInForOrderPickup, confirmationComponent, viewState } = props;\n return (\n <>\n {viewState.isHeaderError && headerError}\n {!viewState.isHeaderError && ArrayExtensions.hasElements(props.config.additionalInformationKeys) && (\n \n )}\n {!viewState.isHeaderError &&\n !ArrayExtensions.hasElements(props.config.additionalInformationKeys) &&\n viewState.isCheckedIn &&\n confirmationComponent}\n \n );\n};\n\nexport default CheckInViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { IDistributorSelectorViewProps } from './distributor-selector';\n\n/**\n * Render the body of the popup.\n * @param props -- Distributor selector view props.\n * @returns -- Returns the html.\n */\nconst renderDistributorSelectorBody: React.FC = props => {\n const {\n bodyContainerProps,\n state,\n spinner,\n distributorLinesViewProps,\n maps,\n bodyWrapperProps,\n distributorsResultContainerProps,\n distributorsResultWrapperProps,\n mapContainerProps,\n distributorCountMessage,\n searchForm,\n noDistributorsMessage\n } = props;\n\n return (\n \n \n {searchForm}\n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n \n {distributorLinesViewProps ? (\n <>\n {distributorCountMessage}\n {distributorLinesViewProps}\n \n ) : (\n <>{noDistributorsMessage}\n )}\n \n )}\n \n {mapContainerProps ? (\n \n {maps}\n {distributorLinesViewProps}\n \n ) : (\n undefined\n )}\n \n \n );\n};\n\nconst renderDistributorDetails: React.FC = props => {\n const {\n distributorDetailsSliderWrapper,\n distributorDetailsSliderHeaderContainer,\n distributorDetailsSliderHeaderContent,\n distributorDetailsSliderBodyContainer,\n distributorDetailsSliderCurrentDistributorTitle,\n distributorDetailsSliderFooterContainer,\n distributorDetailsSliderDistributorName,\n distributorDetailsSliderInformationWrapper,\n distributorDetailsLocation,\n distributorDetailsPrimaryContact,\n distributorDetailsSliderSelectDistributor,\n terms,\n distributorDetailsChangeDistributor,\n state,\n distributorDetailsDeliveryMethods\n } = props;\n\n return (\n \n {!state.distributorDetailsFromPopup ? (\n {distributorDetailsSliderHeaderContent}\n ) : null}\n \n {distributorDetailsSliderCurrentDistributorTitle}\n {distributorDetailsSliderDistributorName}\n \n {distributorDetailsLocation}\n {distributorDetailsPrimaryContact}\n {distributorDetailsDeliveryMethods}\n \n {distributorDetailsSliderSelectDistributor}\n {state.distributorDetailsFromPopup ? distributorDetailsChangeDistributor : null}\n \n {terms}\n \n );\n};\n\nconst renderDistributorWarningBody: React.FC = props => {\n const { bodyContainerProps, distributorWarningContent } = props;\n\n return {distributorWarningContent};\n};\n\nconst renderDistributorSelectorModal: React.FC = props => {\n const { footerContainerProps, headerContainerProps, distributorSelectorHeaderProps, moduleProps, terms } = props;\n return (\n \n {renderDistributorDetails(props)}\n {distributorSelectorHeaderProps}\n {renderDistributorSelectorBody(props)}\n {terms}\n \n );\n};\n\nconst renderDistributorDetailsPopup = (props: IDistributorSelectorViewProps): JSX.Element | null => {\n const {\n distributorDetailsModalPopup,\n distributorDetailsModalHeader,\n distributorDetailsHeaderProps,\n distributorDetailsModalBody,\n distributorDetailsModalBodyContainer,\n distributorDetailsLocation,\n distributorDetailsPrimaryContact,\n distributorDetailsViewAllDetails,\n distributorDetailsChangeDistributor,\n distributorDetailsModalFooter,\n showDistributorDetailsPopup,\n distributorDetailsDeliveryMethods\n } = props;\n if (showDistributorDetailsPopup) {\n return (\n \n {distributorDetailsHeaderProps}\n \n \n {distributorDetailsLocation}\n {distributorDetailsPrimaryContact}\n {distributorDetailsDeliveryMethods}\n \n {distributorDetailsViewAllDetails}\n \n {distributorDetailsChangeDistributor}\n \n );\n }\n return null;\n};\n\nconst renderWarningDialog = (props: IDistributorSelectorViewProps): JSX.Element | undefined => {\n const {\n footerContainerProps,\n headerContainerProps,\n distributorWarningHeaderProps,\n moduleProps,\n distributorWarningButtonWrapper,\n distributorWarningDoNotShowAgain,\n distributorWarningContinue,\n distributorWarningCancel\n } = props;\n return (\n \n {distributorWarningHeaderProps}\n {renderDistributorWarningBody(props)}\n \n {distributorWarningDoNotShowAgain}\n \n {distributorWarningCancel} {distributorWarningContinue}\n \n \n \n );\n};\n\n/**\n * Distributor selector view props.\n * @param props - Distributor selector view props.\n * @returns - HTML.\n */\nconst DistributorSelectorView: React.FC = props => {\n const { currentDistributorContainer, currentDistributorButton, state } = props;\n\n return currentDistributorContainer ? (\n \n {currentDistributorButton}\n {renderDistributorDetailsPopup(props)}\n {state.showWarningDialog ? renderWarningDialog(props) : renderDistributorSelectorModal(props)}\n \n ) : null;\n};\n\nexport default DistributorSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\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 {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n
\n {orderInfomation.placedBy && {orderInfomation.placedBy}}\n
{orderInfomation && }
\n
\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n
\n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Categories heading.\n * @param inCategoriesHeading - The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\n\n return
{categoryAutoSuggestionHeading}
;\n};\n\n/**\n * Render Categories suggestion result.\n * @param inCategoriesHeading - The Categories result heading.\n * @param noResultText - The \"No Result\" text.\n * @param props - The Categories suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const CategorySuggestionsComponent = (\n inCategoriesHeading: string,\n noResultText: string,\n props: ISearchViewProps & ISearchProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n
  • {noResultText}
  • \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n const imageSettings = {\n lazyload: true,\n viewports: {\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\n }\n };\n return (\n \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param props -The props.\n * @returns The JSX Element.\n */\nexport const MobileAutoSuggestEmptyComponent = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    \n
    {props.resources.emptyMobileSearchTextHeading}
    \n
    {props.resources.emptyMobileSearchText}
    \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\n\n/**\n * Render Clear button for mobile viewport.\n * @param clearSearchButtonText -The Clear button text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\n return (\n \n );\n};\n\n/**\n * Render Search form.\n * @param form -Form view props.\n * @param searchForm -Search Form props.\n * @param formWrapper -Form Wrapper props.\n * @param isMobile -Is mobile viewport flag.\n * @param clearSearchButtonText -The Clear button text.\n * @param props -The props for resource.\n * @param isSearchText -Is SearchText flag for input text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nexport const FormComponent = (\n form: ISearchFormViewProps,\n searchForm: INodeProps,\n formWrapper: INodeProps,\n isMobile: boolean,\n clearSearchButtonText: string,\n props: ISearchProps,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n \n );\n\n return isMobile ? (\n \n {form.cancelBtn}\n \n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n \n \n ) : (\n \n \n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Render keywords heading.\n * @param keywordsHeading -The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render keywords reults.\n * @param keywordSuggest -The Keywords suggest Node props.\n * @param ulKeyword -The List Node props.\n * @param keywordsHeading -The Keywords result heading.\n * @param noResultText -The \"No Result\" text.\n * @param keywordSuggestions -The Keywords suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns -The JSX Element.\n */\nexport const KeywordSuggestionsComponent = (\n keywordSuggest: INodeProps,\n ulKeyword: INodeProps,\n keywordsHeading: string,\n noResultText: string,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return keywordSuggestions ? (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n
  • {noResultText}
  • \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param productSuggestionsHeading -The products suggestion result heading.\n * @returns The JSX Element.\n */\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\n\n return
    {productAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n \n );\n};\n\n/**\n * Render Products No result section.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    {props.resources.noResultContentHeadingText}
    \n
    \n {props.resources.noResultContentParagraphText}\n
    \n
    \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param productSuggest -The product suggest Node props.\n * @param ulProduct -The List Node props.\n * @param props -The props.\n * @param productSuggestions -The Product suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const ProductSuggestionsComponent = (\n productSuggest: INodeProps,\n ulProduct: INodeProps,\n props: ISearchProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n const liProduct: INodeProps = {\n tag: 'li',\n className: 'msc-no-result-content'\n };\n return productSuggestions ? (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n ) : (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {renderProductNotFoundResults(props)}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\nimport { FormComponent } from './components/search.form';\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\n\n/**\n * Render Title for AutoSuggest.\n * @param searchSuggestionHeading -The heading resource string.\n * @param searchText -The search string.\n * @returns -The JSX Element.\n */\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\n const searchTextString = '\"'.concat(searchText.concat('\"'));\n const searchAutoSuggestionHeading = searchSuggestionHeading\n ? format(searchSuggestionHeading, searchTextString)\n : `Search for ${searchTextString}`;\n\n return {searchAutoSuggestionHeading};\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC> = (\n props: ISearchViewProps & ISearchProps\n): JSX.Element => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n UlKeyword,\n UlProduct,\n form,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n context,\n isLoadingAutoSuggest,\n isLoadingNode,\n callbacks: { handleCancelSearchFocused }\n } = props;\n\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\n\n const [searchTextString, setSearchTextString] = useState();\n const [isMobilePort, setIsMobile] = useState(false);\n\n useEffect(() => {\n setSearchTextString(searchText);\n }, [searchText]);\n\n /**\n * ClearSearch callback method to clear search string.\n */\n const clearSearch = (): void => {\n setSearchTextString('');\n\n const propsForm = props.form as ISearchFormViewProps;\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\n\n if (propsFormInputCurrent) {\n propsFormInputCurrent.value = '';\n }\n\n propsFormInput.value = '';\n props.searchText = '';\n props.FormWrapper.action = '';\n };\n\n const isMobileViewport = useCallback(() => {\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\n setIsMobile(isMobileView);\n }, [context]);\n\n useEffect(() => {\n window.addEventListener('resize', isMobileViewport);\n isMobileViewport();\n }, [isMobileViewport]);\n\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isMobileView = viewport === 'sm' || viewport === 'xs';\n\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\n ? `${AutoSuggest.className} show`\n : `${AutoSuggest.className} hide`;\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\n\n return (\n \n {label}\n {FormComponent(\n form as ISearchFormViewProps,\n SearchForm,\n FormWrapper,\n isMobilePort,\n clearSearchButtonText,\n props,\n isSearchText,\n clearSearch\n )}\n {!isMobileView && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n \n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n {isMobileView && props.isSearchFormExpanded && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n \n );\n};\nexport default SearchView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
    \n
    \n or\n
    \n {B2BAccount(signInB2BAccount)}\n
    \n
    \n
    \n );\n};\n\nexport default SignInView;\n"],"names":["componentClassName","headingClassName","orderCountClassName","OrderHistoryWithSearchAndFiltersHeaderComponent","Msdyn365","createComponent","component","props","resources","data","salesOrders","textProps","showOrderCount","extraActions","orderCount","length","orderCountText","orderCountLabel","ordersCountLabel","React","Node","className","classnames","text","Object","assign","tag","editProps","onEdit","onChange","requestContext","context","request","CheckInConfirmationComponent","_ref","confirmationText","shouldShowQrCode","channelReferenceIdLabel","channelReferenceId","QRCode","value","size","CheckInErrorComponent","errorMessage","CheckInForPickup","constructor","super","checkInForOrderPickup","async","channelId","Number","parseInt","this","query","packingSlipId","additionalInformationToSubmit","additionalInformationList","map","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","ObjectExtensions","isNullOrUndefined","additionalInformation","push","Key","Value","StringValue","SalesOrdersDataActions","callerContext","actionContext","queryResultSettings","error","setState","headerErrorMessage","genericErrorMessage","isCheckedIn","telemetry","Promise","resolve","_onInit","_this$props$context$r","_this$props$context$r2","_this$props$context$r3","_this$props$context$r4","isNaN","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","config","ArrayExtensions","hasElements","state","render","_this$props$context$r5","isHeaderError","viewProps","_objectSpread","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","undefined","viewState","renderView","shouldComponentUpdate","nextProps","nextState","additionalInformationHeading","DistributorSelectorCountMessage","distributors","distributorCountMessage","replace","toString","DistributorSelectorTermsOfService","_ref2","link","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","DistributorSelectorWaiting","DistributorSelectorDoNotShowAgain","_ref3","doNotShowAgainMessage","type","DistributorSelectorButton","_ref4","onClick","DistributorEmptyMessage","_ref5","emptyLocationsText","onSetCurrentDistributorClickHandler","_props$distributor$Or","handlers","onSetAsCurrentDistributor","distributor","OrgUnit","RecordId","onViewAllDistributorDetailsClickHandler","_props$distributor$Or2","onViewAllDistributorDetails","DistributorSelectorLineItemComponent","_distributor$OrgUnit","_distributor$OrgUnit2","_distributor$OrgUnit3","_distributor$OrgUnit4","_distributor$OrgUnitD","index","currentDistributorId","telemetryContent","shouldShowIndex","selectDistributorText","distributorDetailsToBeShown","mainClassName","distributorName","OrgUnitName","isCurrentDistributor","payLoad","getPayloadObject","TelemetryConstant","CurrentDistributor","currentDistributorAttributes","getTelemetryAttributes","distributorAddress","OrgUnitAddress","FullAddress","distributorPhoneNo","Phone","deliveryMethods","OrgUnitDeliveryOptions","DeliveryOptions","currentDistributorText","indexOf","locationHeadingText","primaryContactText","deliveryMethodHeadingText","deliveryMethod","key","Description","viewAllDistributorText","DistributorSelectorLines","onDistributorSelected","orgUnit","_scrollIntoView","_selectedDistributorD","selectedDistributorDiv","selectedDistributorRef","current","parent","shouldDisplayList","parentElement","scrollTop","offsetTop","clientHeight","scrollLeft","offsetLeft","distributorCounter","componentDidMount","reaction","setTimeout","componentDidUpdate","previousProps","selectedDistributorId","_renderDistributor","selected","ref","__decorate","observable","DistributorPaymentOptionList","_renderTenderTypes","isExpandOptionsState","isFilterExpanded","handleFilterSelection","event","preventDefault","paymentCode","currentTarget","getAttribute","selectedPaymentTypes","_distributorPaymentTypesMenu","_paymentTypesList$fin","paymentTypesMenuText","paymentTypesList","defaultOptionText","selectedPaymentTypesDesc","find","payment","TenderTypeId","Name","tenderType","tabIndex","onKeyDown","DistributorSelectorSearchForm","_onChangeHandler","onPaymentFilterSelected","tenderTypeId","renderPaymentTypeList","paymentTypesOptions","paymentFilterMenuHeading","paymentFilterByHeading","filteredPaymentType","ToggleMapView","toggleMapViewAttributes","viewMapText","viewListText","showLocatorView","paymentTypes","showPaymentTypeFilter","onToggleListMapViewState","toggleButtonText","toggleButtonClass","DistributorSelector","mainClass","headerClass","currentDistributorBtnRef","toggleListMapViewState","distributorSelectorStateManager","result","onChangeForDoNotShow","warningDialogState","target","checked","onSelectDistributor","distributorId","_setCurrentDistributor","onChangeDistributorClick","setSelectedDistributorId","isDistributorDetailPopupOpen","closeDistributorDetailPopup","isDistributorSelectorDialogOpen","showDistributorDetails","distributorDetailsFromPopup","openDistributorSelectorDialog","parentElementRef","onDistributorCloseButtonClick","continueButtonClick","cookies","currentDistributor","currentSelectedDistributor","hideWarningMessage","isConsentGiven","_closeDistributorSelectorDialog","redirectToDistributorURL","cancelButtonClick","showWarningDialog","backToSearchClick","onViewAllDistributorDetailsFromPopup","_this$currentDistribu","_this$currentDistribu2","_this$currentDistribu3","DistributorId","getCurrentDistributor","url","requestUrl","user","isAuthenticated","_this$props$data$dist","distributorList","_distributor$MarketSe","MarketSettings","localeItems","some","locale","href","toLowerCase","localeBaseUrl","_currentDistributor$O","_currentDistributor$O2","DistributorName","getUniquePaymentTypes","uniquePaymentTypes","Set","forEach","_distributor$PaymentT","PaymentTypes","paymentType","add","filterDistributorsByPaymentTypes","filteredPaymentTypeId","filter","_distributor$PaymentT2","marketSettings","currentLocale","localeItem","distributorURL","defaultLocale","isDefaultLocale","startsWith","window","location","debug","handleDistributorSelectorClick","_this$props$data$dist2","_this$currentDistribu4","openDistributorDetailPopup","onFilteredPaymentType","renderDistributorDetailsViewProps","distributorDetails","_distributorDetails$O","_distributorDetails$O2","_distributorDetails$O3","_distributorDetails$O4","switchDistributorText","distributorDetailsModalPopup","moduleProps","classname","distributorDetailsModalHeader","distributorDetailsHeaderProps","closeDistributorDetailPopupButtonAriaLabel","distributorDetailsModalBody","distributorDetailsModalBodyContainer","distributorDetailsLocation","distributorDetailsPrimaryContact","distributorDetailsDeliveryMethods","distributorDetailsViewAllDetails","distributorDetailsChangeDistributor","handleChangeDistributorTextChange","distributorDetailsModalFooter","distributorDetailsSliderWrapper","renderDistributorSliderViewProps","isCurrentDistributorSelected","_distributorDetails$O5","distributorDetailsSliderDistributorName","distributorDetailsSliderHeaderContent","distributorSliderBackToSearch","distributorDetailsSliderHeaderContainer","distributorDetailsSliderBodyContainer","distributorDetailsSliderFooterContainer","distributorDetailsSliderInformationWrapper","distributorDetailsSlidercurrentDistributorTitle","distributorDetailsSliderSelectDistributor","handleSelectDistributorTextChange","handleHeadingChange","distributorWarningDialogHeading","distributorSelectorHeading","handleWarningTextChange","distributorWarningContent","handleLinkTextChange","termsOfServiceLink","stopPropagation","shouldShowDistributors","isOboRequest","getAccountSelectionCookie","isSignedIn","checkUserStateAndOpenDialog","getDistributorDetails","_getAndUpdateDistributorList","isSearchInProgress","_updateDistributorListInStateManager","_this$currentDistribu5","sortedDistributorList","_sortDistributor","setDistributorsList","catch","message","_distributorSelectorS","distributorSelectorContext","focus","updateDistributorMapVisibility","closeDistributorSelectorDialog","searchTerm","_setSelectedDistributor","hideDistributorWarning","getTelemetryObject","telemetryPageName","friendlyName","channel","_this$props$data$dist3","loadMapApi","_this$props$data$dist4","_this$props$context$a","BingMapsEnabled","BingMapsApiKey","lang","market","ChannelCountryRegionISOCode","_this$currentDistribu6","_this$currentDistribu7","_distributorSelectorS2","_distributorSelectorS3","doNotShowAgainCheckbox","noDistributorFoundText","slots","maps","mapSlot","currentDistributorName","headerText","headerCurrentDistributorText","distributorInfoList","hasMapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","shouldOpenDistributorSelectorDialog","shouldOpenDistributorDetailPopup","listMapViewState","displayList","canShowLocationView","showMapViewLink","isMapModuleLoaded","showDistributorDetailsOnMap","showDistributorDetailsPopup","currentDistributorContainer","currentDistributorButton","color","headerCurrentDistributorAriaLabel","Modal","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","headerContainerProps","ModalHeader","distributorSelectorHeaderProps","distributorWarningHeaderProps","footerContainerProps","ModalFooter","bodyContainerProps","ModalBody","bodyWrapperProps","distributorsResultContainerProps","distributorsResultWrapperProps","mapContainerProps","searchForm","spinner","distributorLinesViewProps","isLocationDisabled","noDistributorsMessage","terms","distributorWarningButtonWrapper","distributorWarningDoNotShowAgain","distributorWarningContinue","distributorWarningCancel","_value$OrgUnit","observer","TileList","_telemetryContent","static","heading","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","title","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","id","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","content","searchRadiusUnit","HeadingTag","DealerSelectorEmptyMessage","DealerSelectorWaiting","DealerSelectorFoundLocationsMessage","locations","searchRadius","preferredDistanceUnit","dealerCountMessage","milesShortText","dealerCountMessageInKm","DealerLocatorLocationLineItemComponent","storeName","distanceAsString","buildDistanceString","distance","Math","floor","Distance","storeAddress","Address","ChannelId","dealerDetailsHeader","renderDealerDetails","dealerDetailsDescriptionText","dealerDetailsContractCodeText","ContractList","mfrCode","ManufacturerCode","ManufacturerName","ContractCode","ContractDescription","DealerLocatorLocationLines","onClickHandler","orgUnitLocation","OrgUnitNumber","selectedLocationDiv","selectedLocationRef","_mapResources","contactInfoHeader","contactText","dealerDetailsText","dealerDetailsManufacturerCodeText","dealerDetailsLaborRateText","dealerDetailsNotesText","storeCounter","selectedStoreLocationId","_stores","show","store","_renderStoreLocation","OrgUnitLocation","DealerLocatorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","searchButtonAriaLabel","searchPlaceholderText","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","storeSearchAttributes","EveLinePagination","nextPage","prevPage","changePage","currentPage","numPages","prev","next","disabled","Map","mapRef","kmToMiValue","defaultLookUpRadius","defaultPageLength","_attachMapAutoSuggest","autoSuggestOptions","storeSelectorStateManager","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","credentials","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_getAndUpdateStoreLocation","shouldShowAllStores","_navigator","navigator","geolocation","getCurrentPosition","_updateLocations","position","coords","latitude","longitude","PERMISSION_DENIED","timeout","_initMap","pushpinAccessible","Events","addHandler","setSelectedStoreLocationId","getCredentials","mapSessionId","_updateMap","_this$props$data$stor2","_storeSelectorStateMa","pushpinOptions","orgUnitStoreInformation","_pushpinOptions$color","_pushpinOptions$selec","_pushpinOptions$size","_pushpinOptions$showI","mapLocation","entities","clear","pushpins","selectionColor","showIndex","pageLength","paginatedList","slice","unitStoreInfo","entries","storeLocation","Latitude","Longitude","isSelectedLocation","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","currentLocation","setView","center","bounds","LocationRect","fromShapes","padding","clusterLayer","ClusterLayer","layers","insert","setOptions","orgUnitNumber","dealerDetails","getDealerDetailsAsync","selectedDealer","tempDealerLocations","newDealerLocations","findIndex","loc","_loc$OrgUnitLocation","geoLocate","trim","radius","lookupRadius","defaultLatitudeValue","defaultLongitudeValue","distanceUnitValue","SearchRadiusUnit","km","lookupDistanceInMiles","round","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getOrgUnitLocationByArea","calRadius","useChannelMfr","newOrgUnitLocationsInput","GetDealerLocationsInput","newOrgUnits","getDealerLocations","_setOrgUnitStoreInformation","then","moduleId","input","onLocationSelected","product","setOrgUnitStoreInformation","icon","_getSvgIcon","distanceResults","originCoords","resultsCoords","dealerLocations","_this$props$data$stor5","_this$map","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$data$stor3","_this$props$data$stor4","navigationBarMode","NavigationBarMode","minified","when","_this$props$data$stor7","setMapModuleLoaded","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$stor10","_this$props$context2","_this$props$data$stor11","_this$props$data$stor12","_this$props$data$stor13","_this$props$data$stor14","_this$props$data$stor15","_this$props$data$stor16","isDialogOpen","isSameContext","_storeSelectorStateMa2","shouldDisplayMap","displayMap","kilometersShortText","paginatedLocationsList","ceil","page","scrollElement","document","querySelector","pagination","paginationPrev","paginationNext","ModuleProps","Header","headerProps","dealerResultContainerProps","noLocationsMessage","locationsMessage","locationsList","search","MapProps","renderDealerList","Module","OrderConfirmationOrderInfomation","orderInformationProps","OrderConfirmationSalesLine","salesLineProps","salesLine","buyAgainButton","OrderConfirmationGroupDelivery","deliveryProps","count","processing","address","pickupDateTimeslot","trackingInfo","OrderConfirmationGroup","groupProps","delivery","salesLinesProps","salesLines","LineId","OrderConfirmationGroups","groupsProps","groups","group","OrderConfirmationOrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","OrderConfirmationPayment","_ref7","paymentMethodsProps","methods","OrderConfirmationHelp","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","backToShoppingLink","alert","loading","orderSummary","help","renderLineChargeNode","chargeName","chargeAmount","OrderConfirmationDetail","_salesOrder$ShippingA","_salesOrder$ShippingA2","_salesOrder$SalesLine","salesOrder","cultureFormatter","customer","deliveryMode","orderedProducts","chargeLinesBreakdown","salesOrderAttrs","AttributeValues","attr","s","orderConfirmationHeading","print","orderInformationHeading","webReferenceNumber","ChannelReferenceId","salesOrderNumber","salesOrderPending","poNumber","TextValue","orderDate","formatDate","CreatedDateTime","year","month","day","Comment","notes","accountInformationHeading","accountName","FirstName","accountNumber","AccountNumber","shippingInformationHeading","shippingAddress","ShippingAddress","shippingMethod","line","itemId","description","price","quantity","total","SalesLines","so","idx","LineNumber","ItemId","_orderedProducts$find","p","OriginalPrice","formatCurrency","Quantity","TotalAmount","ChargeLines","otherChargesLines","chargeCodes","lines","linesNode","otherChargeTotal","ChargeAmount","currencyFormatter","c","node","ChargeCode","chargeCode","r","_r$CalculatedAmount$t","_r$CalculatedAmount","CalculatedAmount","chargeLineLabel","_otherChargeTotal$toS","otherChargesNode","orderTotalAmount","InvoicePaymentConfirmationDetail","cartLines","console","log","paymentSubmittedHeading","paymentInformationHeading","thankYou","paymentDate","cl","ExtendedPrice","_rest$data$checkout$r","_rest$data$checkout$r2","_rest$data$checkout$r3","_rest$salesOrder","rest","_objectWithoutProperties","_excluded","DLV_MODE_KEY","dlvMode","setDlvMode","checkout","cart","checkoutCart","sessionStorage","getItem","removeItem","IsInvoiceLine","customerInformation","app","CartLines","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","keys","requiredValueMissingErrorMessage","renderDistributorSelectorModal","distributorDetailsSliderCurrentDistributorTitle","renderDistributorDetails","renderDistributorSelectorBody","renderWarningDialog","renderDistributorWarningBody","renderDistributorDetailsPopup","tileListView","tileItem","keyIndex","_props$data$operation","b2bRequestsStatus","table","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","Button","getUrlSync","OrderHistoryOrderInfomation","salesId","receiptId","channelName","createdDate","amount","OrderHistoryGroupDelivery","OrderHistoryGroup","OrderHistoryGroups","OrderHistoryHeader","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","placedBy","OrderHistoryList","listProps","orderHistoryProps","header","emptyMessage","list","moreButton","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","src","Image","altText","gridSettings","imageSettings","lazyload","viewports","xs","w","h","q","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","form","formWrapper","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","cancelBtnAriaLabel","cancelBtn","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","items","item","_item$id","LiProduct","AProduct","thumbnail","renderTitle","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","format","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","label","callbacks","handleCancelSearchFocused","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","useEffect","propsFormInput","propsFormInputCurrent","action","isMobileViewport","useCallback","Browser","addEventListener","viewport","isNullOrEmpty","onBlur","isSearchFormExpanded","SignInLoading","modal","modalBody","SignInButton","attributes","signIn","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","isShowLoading","localAccount","forgetPassword","disclaimer","signInButton","wrapper","LocalAccount","socialAccounts","button","image","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","signUpButton","B2BAccount"],"sourceRoot":""}