{"version":3,"file":"static/js/20.8f9af1f134c5006c0895.chunk.js","mappings":"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","sources":["webpack://lds-commerce/./src/modules/lds-cookie-compliance/components/accept-button.tsx?60b1","webpack://lds-commerce/./src/modules/lds-cookie-compliance/components/links.tsx?2fbd","webpack://lds-commerce/./src/modules/lds-cookie-compliance/lds-cookie-compliance.tsx?7a76","webpack://lds-commerce/./src/modules/lds-find-store/components/pickup-option-list.tsx?9187","webpack://lds-commerce/./src/modules/lds-find-store/components/store-pickup-option-list.tsx?8111","webpack://lds-commerce/./src/modules/lds-find-store/components/lds-find-store-location-line-item/date-time-helpers.ts?9da4","webpack://lds-commerce/./src/helpers/utilities/find-in-store-utilities.tsx?3af8","webpack://lds-commerce/./src/modules/lds-find-store/components/lds-find-store-location-line-item/store-selector-location-line-item.components.tsx?c04e","webpack://lds-commerce/./src/modules/lds-find-store/components/store-selector-location-lines.tsx?3005","webpack://lds-commerce/./src/modules/lds-find-store/components/store-selector-search-form.tsx?f643","webpack://lds-commerce/./src/modules/lds-find-store/components/store-selector-small-components.tsx?88c3","webpack://lds-commerce/./src/modules/lds-find-store/components/selected-store/selected-store.tsx?01e0","webpack://lds-commerce/./src/modules/lds-find-store/lds-find-store.props.autogenerated.ts?4e43","webpack://lds-commerce/./src/modules/lds-find-store/lds-find-store.tsx?0602","webpack://lds-commerce/./src/modules/lds-footer/lds-footer.tsx?6222","webpack://lds-commerce/./src/modules/lds-cookie-compliance/lds-cookie-compliance.view.tsx?4cad","webpack://lds-commerce/./src/modules/lds-find-store/lds-find-store.view.tsx?72be","webpack://lds-commerce/./src/modules/lds-footer/components/FooterImageLink.tsx?e5e0","webpack://lds-commerce/./src/modules/lds-footer/components/SiteLinks.tsx?9ef9","webpack://lds-commerce/./src/modules/lds-footer/components/TermsAndConditions.tsx?56d6","webpack://lds-commerce/./src/modules/lds-footer/components/FooterLinks.tsx?5e89","webpack://lds-commerce/./src/modules/lds-footer/components/TermsOfService.tsx?1c44","webpack://lds-commerce/./src/modules/lds-footer/components/CopyRight.tsx?3162","webpack://lds-commerce/./src/modules/lds-footer/components/FooterLegal.tsx?b786","webpack://lds-commerce/./src/modules/lds-footer/lds-footer.view.tsx?44e3","webpack://lds-commerce/./src/themes/fabrikam/views/cart.view.tsx?780e","webpack://lds-commerce/./src/themes/fabrikam/views/checkout-customer-account-payment.view.tsx?66b5","webpack://lds-commerce/./src/themes/fabrikam/views/footer-category.view.tsx?3d33","webpack://lds-commerce/./src/eden/eden-collapse/lib/es/index.js?4524","webpack://lds-commerce/./src/eden/eden-details/lib/es/components/Details.js?8df6","webpack://lds-commerce/./src/eden/eden-text/lib/es/components/shared.js?6e2e","webpack://lds-commerce/./src/eden/eden-text/lib/es/components/Text3.js?7d45","webpack://lds-commerce/./src/eden/eden-drawer/lib/es/components/Drawer.js?9faa","webpack://lds-commerce/./src/eden/eden-headings/lib/es/components/H4.js?c8fe","webpack://lds-commerce/./src/eden/eden-headings/lib/es/components/Title4.js?583d","webpack://lds-commerce/./src/eden/eden-icons/lib/es/generated-from-source/ChevronDown.js?fb4c","webpack://lds-commerce/./src/eden/eden-details/lib/es/components/Summary.js?fbfc","webpack://lds-commerce/./src/eden/eden-drawer/lib/es/components/Summary.js?ec75","webpack://lds-commerce/./src/themes/fabrikam/views/product-specification.styled.ts?d29c","webpack://lds-commerce/./src/themes/fabrikam/views/product-specification.view.tsx?697d","webpack://lds-commerce/./src/eden/eden-style-constants/lib/es/index.js?8ac0"],"sourcesContent":["/*--------------------------------------------------------------\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 { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nexport interface ICookieComplianceAcceptButton {\r\n acceptCookiesButtonText?: string;\r\n acceptCookiesButtonAriaLabel?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n}\r\n\r\nexport const CookieComplianceAcceptButton: React.FC = ({\r\n acceptCookiesButtonText,\r\n acceptCookiesButtonAriaLabel,\r\n telemetryContent,\r\n onClose\r\n}) => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n {acceptCookiesButtonText}\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 * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IActionLinksData } from '../lds-cookie-compliance.props.autogenerated';\r\n\r\nexport interface ICookieComplianceLinks {\r\n links: IActionLinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CookieComplianceLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n \r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n \r\n );\r\n }\r\n\r\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\n\r\nexport default CookieComplianceLinks;\r\n","/* eslint-disable security/detect-object-injection */\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 * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\r\nimport { ILdsCookieComplianceConfig, ILdsCookieComplianceProps } from './lds-cookie-compliance.props.autogenerated';\r\n\r\n/**\r\n * Alert state interface.\r\n */\r\nexport interface IAlertState {\r\n visible: boolean;\r\n}\r\n\r\n/**\r\n * Cookie compliance view props interface.\r\n */\r\nexport interface ICookieComplianceViewProps extends ILdsCookieComplianceProps<{}> {\r\n CookieComplianceBanner: IModuleProps;\r\n AlertProps: IAlertProps;\r\n Content: INodeProps;\r\n text?: React.ReactNode;\r\n links?: React.ReactNode;\r\n acceptButton?: React.ReactNode;\r\n className: string;\r\n onDismiss(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CookieCompliance component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CookieCompliance extends React.PureComponent, IAlertState> {\r\n private readonly cookieRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n public constructor(props: ILdsCookieComplianceProps) {\r\n super(props);\r\n this.state = { visible: false };\r\n this.cookieRef = React.createRef();\r\n this._onDismiss = this._onDismiss.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\r\n this.setState({ visible: true });\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { config, context, resources, telemetry } = this.props;\r\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\r\n const { visible } = this.state;\r\n\r\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\r\n let moduleConfig: ILdsCookieComplianceConfig;\r\n\r\n try {\r\n moduleConfig = config;\r\n } catch (error) {\r\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\r\n return
{error}
;\r\n }\r\n\r\n if (isConsentGiven && !visible) {\r\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\r\n return <>;\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDismiss: this._onDismiss,\r\n CookieComplianceBanner: {\r\n moduleProps: this.props,\r\n className: classnames('ms-cookie-compliance', moduleConfig.className),\r\n ref: this.cookieRef\r\n },\r\n AlertProps: {\r\n className: 'ms-cookie-compliance__container',\r\n color: 'white',\r\n fade: false\r\n },\r\n Content: {\r\n className: 'ms-cookie-compliance__content'\r\n },\r\n text: moduleConfig.content && (\r\n \r\n ),\r\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\r\n \r\n ),\r\n acceptButton: (\r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles Link content change event.\r\n * @param linkIndex - Index of link in linkarray.\r\n * @returns Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\r\n if (this.props.config.actionLinks?.[linkIndex]) {\r\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Handles content change event.\r\n * @param event - Event.\r\n */\r\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\r\n this.props.config.content = event.target.value;\r\n };\r\n\r\n private _onDismiss(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n location.reload();\r\n }\r\n this.setState({ visible: false });\r\n }\r\n}\r\n\r\nexport default CookieCompliance;\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 { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\n/**\r\n * Interface Pickup option list.\r\n */\r\nexport interface IPickUpOptionListProps {\r\n pickupListOptionMenuText: string;\r\n pickupmodeList?: DeliveryOption[];\r\n onChange(deliveryCode: string): Promise;\r\n resources: any;\r\n}\r\n\r\n/**\r\n * Interface pickup option list state.\r\n */\r\nexport interface IPickOptionListState {\r\n expandSiteOptions: boolean;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class PickUpOptionList extends React.PureComponent {\r\n private readonly _pickupListOptionMenu: React.RefObject;\r\n\r\n private readonly _pickupListOptionButton: React.RefObject;\r\n\r\n private readonly eventsToBeBind = ['click', 'touchstart'];\r\n\r\n public constructor(props: IPickUpOptionListProps) {\r\n super(props);\r\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\r\n this._pickupListOptionMenu = React.createRef();\r\n this._pickupListOptionButton = React.createRef();\r\n this.state = {\r\n expandSiteOptions: false\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.addEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n for (const event of this.eventsToBeBind) {\r\n window.removeEventListener(event, this.handleDocumentClick, true);\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { pickupmodeList } = this.props;\r\n\r\n return (\r\n
\r\n {pickupmodeList?.map((delivery: DeliveryOption) => {\r\n if (\r\n delivery.Code === 'PickUp' ||\r\n delivery.Code === 'PICKUP' ||\r\n delivery.Code === 'Pickup' ||\r\n delivery.Code === 'pickup'\r\n ) {\r\n return (\r\n \r\n \r\n {this.props.resources.pickupButtonText}\r\n \r\n \r\n );\r\n } else {\r\n return;\r\n }\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handle the document click.\r\n * @param event -- Event object.\r\n */\r\n private readonly handleDocumentClick = (event: Event): void => {\r\n const htmlElement = event.target as HTMLElement;\r\n if (\r\n !(\r\n (this._pickupListOptionButton.current !== null &&\r\n (event.target === this._pickupListOptionButton.current ||\r\n this._pickupListOptionButton.current.contains(htmlElement))) ||\r\n (this._pickupListOptionMenu.current !== null &&\r\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\r\n )\r\n ) {\r\n this.setState({\r\n expandSiteOptions: false\r\n });\r\n }\r\n };\r\n\r\n private _renderDeliveryOptions(event: React.MouseEvent): void {\r\n event.stopPropagation();\r\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !isExpandSiteOptionsState\r\n });\r\n }\r\n\r\n /**\r\n * Select Delivery option.\r\n * @param event -- Event Object.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode && deliveryCode.length > 0) {\r\n await this.props.onChange(deliveryCode);\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 { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Pickup option list interface.\r\n */\r\nexport interface IStorePickUpOptionListProps {\r\n productPickupListOptionMenuText?: string;\r\n productPickupModeList?: DeliveryOption[];\r\n defaultOptionText?: string;\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Store Pickup option state interface.\r\n */\r\nexport interface IStorePickOptionListState {\r\n isFilterExpanded: boolean;\r\n selectedPickupMode?: string;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class StorePickUpOptionList extends React.PureComponent {\r\n private readonly _storePickupListOptionMenu: React.RefObject;\r\n\r\n public constructor(props: IStorePickUpOptionListProps) {\r\n super(props);\r\n this._storePickupListOptionMenu = React.createRef();\r\n this.state = {\r\n isFilterExpanded: false,\r\n selectedPickupMode: ''\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\r\n const selectedPickupModeDesc = defaultOptionText\r\n ? defaultOptionText\r\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\r\n const role = 'menu';\r\n return (\r\n
\r\n \r\n {this.state.isFilterExpanded ? (\r\n
    \r\n {productPickupModeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n
  • \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Method to call when drop dwon get selected.\r\n */\r\n private readonly _rendeDeliveryOptions = () => {\r\n const isExpandOptionsState = this.state.isFilterExpanded;\r\n this.setState({\r\n isFilterExpanded: !isExpandOptionsState\r\n });\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { OrgUnitLocation, RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport get from 'lodash/get';\r\n\r\nimport { IStoreSelectorLocationLineItemResources } from '.';\r\n\r\nexport interface IHoursDisplayInfo {\r\n startDayShort: string;\r\n startDayFull: string;\r\n endDayShort?: string;\r\n endDayFull?: string;\r\n timeRange: string;\r\n}\r\n\r\ninterface IHoursInfo {\r\n isClosed: boolean;\r\n openTime?: number;\r\n closeTime?: number;\r\n}\r\n\r\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\r\n\r\nexport const secondsToTime = (\r\n seconds: number | undefined,\r\n resources: IStoreSelectorLocationLineItemResources,\r\n location?: OrgUnitLocation\r\n): string | undefined => {\r\n if (seconds === undefined) {\r\n return undefined;\r\n }\r\n let hours = Math.floor(seconds / (60 * 60));\r\n const ampm = hours >= 12 ? resources.timePm || 'pm' : resources.timeAm || 'am';\r\n hours %= 12;\r\n hours = hours ? hours : 12;\r\n const divisorForMinutes = seconds % (60 * 60);\r\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\r\n if (location && location.Country === 'KOR') {\r\n return `${ampm} ${hours}:${minutes}`;\r\n } else {\r\n return `${hours}:${minutes} ${ampm}`;\r\n }\r\n};\r\n\r\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.monday;\r\n case 'TUE':\r\n return resources.days.tuesday;\r\n case 'WED':\r\n return resources.days.wednesday;\r\n case 'THU':\r\n return resources.days.thursday;\r\n case 'FRI':\r\n return resources.days.friday;\r\n case 'SAT':\r\n return resources.days.saturday;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sunday;\r\n }\r\n};\r\n\r\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.mondayFull;\r\n case 'TUE':\r\n return resources.days.tuesdayFull;\r\n case 'WED':\r\n return resources.days.wednesdayFull;\r\n case 'THU':\r\n return resources.days.thursdayFull;\r\n case 'FRI':\r\n return resources.days.fridayFull;\r\n case 'SAT':\r\n return resources.days.saturdayFull;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sundayFull;\r\n }\r\n};\r\n\r\nconst buildHoursDisplayInfo = (\r\n startDay: DayType,\r\n endDay: DayType,\r\n hoursInfo: string,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): IHoursDisplayInfo => {\r\n return {\r\n startDayShort: getShortTimeString(startDay, resources),\r\n startDayFull: getFullTimeString(startDay, resources),\r\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\r\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\r\n timeRange: hoursInfo\r\n };\r\n};\r\n\r\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\r\n if (firstLine.isClosed && secondLine.isClosed) {\r\n return true;\r\n }\r\n\r\n if (!firstLine.isClosed && !secondLine.isClosed) {\r\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\r\n return {\r\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\r\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\r\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\r\n };\r\n};\r\n\r\nconst buildStoreHoursString = (\r\n hoursInfo: IHoursInfo,\r\n resources: IStoreSelectorLocationLineItemResources,\r\n location?: OrgUnitLocation\r\n): string => {\r\n if (hoursInfo.isClosed) {\r\n return resources.closedText;\r\n }\r\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime, resources, location);\r\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime, resources, location);\r\n\r\n return `${openFrom}–${openTo}`;\r\n};\r\n\r\nexport const buildStoreHours = (\r\n storeHours: RegularStoreHours,\r\n resources: IStoreSelectorLocationLineItemResources,\r\n location?: OrgUnitLocation\r\n): IHoursDisplayInfo[] => {\r\n const storeHoursList: IHoursDisplayInfo[] = [];\r\n\r\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\r\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\r\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\r\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\r\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\r\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\r\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\r\n\r\n let periodStart: DayType = 'MON';\r\n let periodEnd: DayType = 'MON';\r\n\r\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'TUE';\r\n }\r\n periodEnd = 'TUE';\r\n\r\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'WED';\r\n }\r\n periodEnd = 'WED';\r\n\r\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'THU';\r\n }\r\n periodEnd = 'THU';\r\n\r\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'FRI';\r\n }\r\n periodEnd = 'FRI';\r\n\r\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'SAT';\r\n }\r\n periodEnd = 'SAT';\r\n\r\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\r\n storeHoursList.push(\r\n buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources, location), resources)\r\n );\r\n\r\n periodStart = 'SUN';\r\n }\r\n periodEnd = 'SUN';\r\n\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources, location), resources));\r\n\r\n return storeHoursList;\r\n};\r\n","export const StoreAvailabilityText = [\r\n 'Agotado temporalmente',\r\n 'Temporairement en rupture de stock',\r\n 'Temporaneamente esaurito',\r\n 'Temporariamente fora de Estoque',\r\n 'Временно отсутствует на складе',\r\n '現在,在庫切れです',\r\n '暫時缺貨',\r\n 'Momentan nicht auf Lager',\r\n '주문형 인쇄',\r\n 'Temporarily Out of Stock'\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 { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { PickUpOptionList } from '../pickup-option-list';\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\r\n// @ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nimport { StoreAvailabilityText } from '../../../../helpers/utilities/find-in-store-utilities';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface IStoreSelectorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n storeHoursHeader: string;\r\n availabilityInfoHeader: string;\r\n\r\n closedText: string;\r\n\r\n outOfStock: string;\r\n inStock: string;\r\n\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n bopisStoreHeading: string;\r\n timeAm: string;\r\n timePm: string;\r\n\r\n days: {\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n sunday: string;\r\n mondayFull: string;\r\n tuesdayFull: string;\r\n wednesdayFull: string;\r\n thursdayFull: string;\r\n fridayFull: string;\r\n saturdayFull: string;\r\n sundayFull: string;\r\n };\r\n}\r\n\r\n/**\r\n * Store Locator line item props.\r\n */\r\nexport interface IStoreSelectorLocationLineItemProps {\r\n location: OrgUnitLocation;\r\n storeHours?: StoreHours;\r\n\r\n hideStockStatus?: boolean;\r\n isInStock?: boolean;\r\n isCurrentLocation?: boolean;\r\n definitionResources: any;\r\n\r\n resources: IStoreSelectorLocationLineItemResources;\r\n stockStatusLabel?: string;\r\n storeLocatorView?: boolean;\r\n isPreferredStoreEnabled?: boolean;\r\n index: string;\r\n preferredStoreLocationId: string | null;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n filteredPickupMode?: string;\r\n shouldShowIndex?: boolean;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n isLocationDisabled?: boolean;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n };\r\n}\r\n\r\n/**\r\n * Store Locator line item action component.\r\n */\r\nconst storeSelectorLocationLineItemComponentActions = {\r\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\r\n props.handlers.onSelected(props.location, deliveryMode);\r\n },\r\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\r\n },\r\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onRemovePreferredStore();\r\n }\r\n};\r\n\r\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 renderStoreHours = (\r\n storeHours: StoreHours | undefined,\r\n location: OrgUnitLocation,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day houts\r\n if (storeHours?.RegularStoreHours) {\r\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources, location);\r\n\r\n return (\r\n
\r\n {storeHoursList.map(displayTime => {\r\n return (\r\n \r\n {displayTime.endDayShort ? (\r\n
\r\n {displayTime.startDayShort} –{' '}\r\n {displayTime.endDayShort}\r\n
\r\n ) : (\r\n
\r\n {displayTime.startDayShort}\r\n
\r\n )}\r\n
{displayTime.timeRange}
\r\n
\r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom, resources);\r\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo, resources);\r\n\r\n return (\r\n
\r\n {storeOpenFrom}-{storeOpenTo}\r\n
\r\n );\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\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\r\n\r\n if (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 * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupInStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\r\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\r\n};\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @param pickupMode -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\r\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\r\n};\r\n\r\n/**\r\n * On Change functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\r\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\r\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\r\n return Promise.resolve();\r\n};\r\n\r\n/**\r\n * Method to render pickup modes.\r\n * @param props - StoreSelector Line item props.\r\n * @param deliveryOptionList - Product DeliveryOption List.\r\n * @param pickupInStoreButtonText - Pickup store button text.\r\n * @param pickupInStoreAriaLabel - Pickup store aria label.\r\n * @returns Jsx component.\r\n */\r\nconst renderPickupModes = (\r\n props: IStoreSelectorLocationLineItemProps,\r\n deliveryOptionList: DeliveryOption[],\r\n pickupInStoreButtonText: string,\r\n pickupInStoreAriaLabel: string,\r\n resources: any\r\n): JSX.Element | null => {\r\n if (props.filteredPickupMode === undefined) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n {pickupInStoreButtonText}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method to check if we have atleast one common delivery code between product and channel.\r\n * @param productdeliveryOptions - Product DeliveryOption List.\r\n * @param storePickUpOptionList - Channel DeliveryOption List.\r\n * @returns DeliveryOptionList.\r\n */\r\nexport const matchDeliveryOptions = (\r\n productdeliveryOptions: DeliveryOption[] | undefined,\r\n storePickUpOptionList: DeliveryOption[] | undefined\r\n): DeliveryOption[] => {\r\n const deliveryOption: DeliveryOption[] = [];\r\n productdeliveryOptions?.map(delivery => {\r\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\r\n if (pickup) {\r\n deliveryOption.push(pickup);\r\n }\r\n });\r\n\r\n return deliveryOption;\r\n};\r\n\r\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 storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\r\n const [isAvailable, setIsAvailable] = React.useState(true);\r\n const {\r\n hideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n location,\r\n resources,\r\n storeHours,\r\n stockStatusLabel,\r\n storeLocatorView,\r\n telemetryContent,\r\n storePickUpOptionList,\r\n productPickUpOptionList\r\n } = props;\r\n\r\n const storeName: string | undefined = location.OrgUnitName;\r\n const storeAddress: string | undefined = location.Address;\r\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\r\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\r\n const canSelectLocation = hideStockStatus || isInStock;\r\n const pickupInStoreButtonText: string = resources.selectLocation;\r\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n\r\n React.useEffect(() => {\r\n StoreAvailabilityText.map((text: string) => {\r\n if (stockText && stockText.includes(text)) {\r\n setIsAvailable(false);\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{resources.bopisStoreHeading}

\r\n {storeName}\r\n {storeAddress && (\r\n
\r\n \r\n {location.Street}\r\n {`${location.City} ${location.State}, ${location.Zip}`}\r\n
\r\n )}\r\n {phoneNumber && (\r\n
\r\n \r\n {phoneNumber}\r\n
\r\n )}\r\n
\r\n
\r\n

{resources.storeHoursHeader}

\r\n {renderStoreHours(storeHours, location, resources)}\r\n
\r\n
\r\n {!storeLocatorView && (\r\n
\r\n
\r\n {/* {resources.availabilityInfoHeader}: */}\r\n {stockText &&

{stockText}

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

{resources.currentLocation}

\r\n ) : canSelectLocation && isAvailable ? (\r\n deliveryOptionList.length === 0 ? (\r\n
\r\n \r\n {pickupInStoreButtonText}\r\n \r\n
\r\n ) : (\r\n renderPickupModes(\r\n props,\r\n deliveryOptionList,\r\n pickupInStoreButtonText,\r\n pickupInStoreAriaLabel,\r\n props.definitionResources\r\n )\r\n )\r\n ) : (\r\n
\r\n \r\n {pickupInStoreButtonText}\r\n \r\n
\r\n )}\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 StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\r\n props: IStoreSelectorLocationLineItemProps\r\n) => JSX.Element;\r\n","/* eslint-disable security/detect-object-injection */\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 { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\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 { ILdsFindStoreResources } from '../lds-find-store.props.autogenerated';\r\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './lds-find-store-location-line-item';\r\n\r\n/**\r\n * Store selector location lines props interface.\r\n */\r\nexport interface IStoreSelectorLocationLinesProps {\r\n locations?: IFullOrgUnitAvailability[];\r\n resources: ILdsFindStoreResources;\r\n definitionResources: any;\r\n preferredDistanceUnit?: string;\r\n\r\n alreadySelectedLocation?: OrgUnitLocation;\r\n outOfStockThreshold: number;\r\n enableOutOfStockCheck: boolean;\r\n storeLocatorView?: boolean;\r\n selectedStoreLocationId?: string;\r\n isPreferredStoreEnabled?: boolean;\r\n displayList?: boolean;\r\n isLocationDisabled?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n onClick: (locationId: string | undefined) => void;\r\n preferredStoreLocationId: string | null;\r\n onSetAsPreferredStore: (locationId: string | undefined) => void;\r\n onRemovePreferredStore: () => void;\r\n filteredPickupMode?: string;\r\n shouldShowIndex?: boolean;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onLocationSelected(location: OrgUnitLocation | undefined): void;\r\n}\r\n\r\n/**\r\n * Displays all the location line items, or null if none exists.\r\n */\r\n@observer\r\nexport class StoreSelectorLocationLines extends React.PureComponent {\r\n @observable private _stores: IFullOrgUnitAvailability[] | 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._sortStores(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._sortStores(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\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: OrgUnitLocation | undefined) => () => {\r\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\r\n };\r\n\r\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\r\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\r\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\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 * Sort store.\r\n * @param stores - Array of stores data.\r\n * @returns Sorted stores array.\r\n */\r\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\r\n /**\r\n * IsPreferredStore.\r\n * @param value - Array of stores data.\r\n * @returns IsPreferred store boolean value.\r\n */\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n this.props.isPreferredStoreEnabled &&\r\n this.props.preferredStoreLocationId &&\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n /**\r\n * Scroll into view.\r\n */\r\n private readonly _scrollIntoView = () => {\r\n const selectedLocationDiv = this.selectedLocationRef.current;\r\n const parent = selectedLocationDiv?.parentElement;\r\n if (selectedLocationDiv && parent) {\r\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop;\r\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\r\n }\r\n }\r\n };\r\n\r\n /**\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 * Check the product is in stock or not.\r\n * @param itemAvailabilities - Item availabilities.\r\n * @returns If the product is in stock.\r\n */\r\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n if (!this.props.enableOutOfStockCheck) {\r\n return true;\r\n }\r\n\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * Get the stock inventory label.\r\n * @param availabilityWithHours - Full org unit availability.\r\n * @returns The stock label.\r\n */\r\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\r\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\r\n if (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\r\n ) {\r\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Map resources.\r\n * @param resources - Store resoureces.\r\n * @returns Resources.\r\n */\r\n private readonly _mapResources = (resources: ILdsFindStoreResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.selectStoreText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n bopisStoreHeading: resources.bopisStoreHeading,\r\n timeAm: resources.timeAm,\r\n timePm: resources.timePm,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n KeyCodes,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nimport { StorePickUpOptionList } from './store-pickup-option-list';\r\n\r\n// import styled from 'styled-components';\r\n/**\r\n * Store Selector Search Form Props interface.\r\n */\r\nexport interface IStoreSelectorSearchFormProps {\r\n resources: {\r\n searchInputAriaLabel: string;\r\n searchButtonAriaLabel: string;\r\n searchPlaceholderText: string;\r\n seeAllStoresText: string;\r\n viewListText: string;\r\n viewMapText: string;\r\n pickupFilterByHeading?: string;\r\n pickupFilterMenuHeading?: string;\r\n };\r\n\r\n id: string;\r\n value: string;\r\n isMapDisabled?: boolean;\r\n showAllStores?: boolean;\r\n displayList?: boolean;\r\n locatorView?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n hasEnabledPickupFilterToShowStore?: boolean;\r\n filteredPickupMode?: string;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onShowAllStores(): void;\r\n onToggleListMapViewState(): void;\r\n performSearch(searchTerm: string): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n filterPickupModeSelected(pickupMode: string): void;\r\n}\r\n\r\n/**\r\n * Simple search form consisting of search text and a search button.\r\n */\r\nexport class StoreSelectorSearchForm extends React.PureComponent {\r\n private readonly searchBoxRef: React.RefObject = React.createRef();\r\n\r\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private readonly toggleMapViewAttributes: 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: IStoreSelectorSearchFormProps) {\r\n super(props);\r\n this.state = { value: '' };\r\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\r\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\r\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\r\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\r\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const findStoreSearchButton: React.CSSProperties = {\r\n width: '35%'\r\n };\r\n\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 * Calls method display result.\r\n * @param event - The first number.\r\n */\r\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\r\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\r\n this.props.onShowAllStores();\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 /**\r\n * Method called on product pickup option change.\r\n * @returns - Void.\r\n */\r\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\r\n this.props.filterPickupModeSelected(deliveryCode);\r\n return Promise.resolve();\r\n };\r\n\r\n /**\r\n * Method to render pickup mode list.\r\n * @param props - Store selector search form props.\r\n * @param toggleButtonText - Locator view button text.\r\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\r\n * @param pickupFilterMenuHeading - Pickup store button text.\r\n * @param locatorView - Locator View is on\\off.\r\n * @param pickupFilterByHeading - Pickup list label text.\r\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\r\n * @param shouldDisplayList - Display List.\r\n * @returns Jsx component.\r\n */\r\n // @ts-ignore\r\n private readonly renderPickupModesList = (\r\n props: IStoreSelectorSearchFormProps,\r\n toggleButtonText: string,\r\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\r\n pickupFilterMenuHeading: string | undefined,\r\n locatorView: boolean | undefined,\r\n pickupFilterByHeading: string | undefined,\r\n hasEnabledPickupFilterToShowStore: boolean | undefined,\r\n shouldDisplayList?: boolean\r\n ): JSX.Element | null => {\r\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\r\n if (hasEnabledPickupFilterToShowStore) {\r\n return (\r\n
\r\n {locatorView && (\r\n \r\n )}\r\n \r\n
{pickupFilterByHeading}
\r\n
\r\n );\r\n }\r\n if (locatorView) {\r\n return (\r\n \r\n {toggleButtonText}\r\n \r\n );\r\n }\r\n return null;\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 * 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 { ILdsFindStoreResources, ITermsOfServiceLinkData } from '../lds-find-store.props.autogenerated';\r\n\r\nexport interface IStoreSelectorEmptyMessageProps {\r\n resources: ILdsFindStoreResources;\r\n}\r\n\r\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

\r\n
\r\n);\r\n\r\nexport const StoreSelectorWaiting: React.FC = () =>
;\r\n\r\nexport interface IStoreSelectorTermsOfServiceProps {\r\n link?: ITermsOfServiceLinkData;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\r\n if (link) {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-store-select__terms-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link'\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport interface IStoreSelectorFoundLocationsMessage {\r\n resources: ILdsFindStoreResources;\r\n locations?: IFullOrgUnitAvailability[];\r\n searchRadius: number;\r\n preferredDistanceUnit: string;\r\n isSeeAllStore: boolean;\r\n}\r\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\r\n locations,\r\n searchRadius,\r\n resources,\r\n isSeeAllStore,\r\n preferredDistanceUnit\r\n}) => {\r\n if (locations) {\r\n const storeCountMessage =\r\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n return (\r\n
\r\n {isSeeAllStore\r\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\r\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent,\r\n NodeTag,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { PickUpOptionList } from '../pickup-option-list';\r\nimport { buildDistanceString, matchDeliveryOptions } from '../lds-find-store-location-line-item';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface ISelectedStoreResources {\r\n availabilityInfoHeader: string;\r\n closedText: string;\r\n outOfStock: string;\r\n inStock: string;\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreProps {\r\n className?: string;\r\n shouldHideStockStatus?: boolean;\r\n isCurrentLocation?: boolean;\r\n isInStock?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n resources: ISelectedStoreResources;\r\n definitionResources: any;\r\n stockStatusLabel?: string;\r\n preferredStoreLocationId: string | null;\r\n isPreferredStoreEnabled?: boolean;\r\n isLocationDisabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n preferredDistanceUnit: string;\r\n filteredPickupMode?: string;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * Store Selector resources.\r\n */\r\nexport interface ISelectedStoreViewProps {\r\n isCurrentLocation?: boolean;\r\n canSelectLocation?: boolean;\r\n selectedStore?: IFullOrgUnitAvailability;\r\n deliveryOptions?: DeliveryOption[];\r\n isPreferredStore?: boolean;\r\n resources: ISelectedStoreResources;\r\n\r\n storeDetailsMain: INodeProps;\r\n storeHeader: INodeProps;\r\n storeName: React.ReactNode;\r\n storeDistance: React.ReactNode;\r\n storeDetailsAvailabilityContainer: INodeProps;\r\n productAvailability: React.ReactNode;\r\n stockStatus: React.ReactNode;\r\n currentLocation: React.ReactNode;\r\n pickUpDeliveryOptionButton: React.ReactNode;\r\n pickupModes?: React.ReactNode;\r\n preferredStoreButton?: React.ReactNode;\r\n removePreferredStoreButton?: React.ReactNode;\r\n storeDetailsCloseButton?: React.ReactNode;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\r\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\r\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\r\n }\r\n};\r\n\r\n/**\r\n * Set Preferred store functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\r\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\r\n};\r\n\r\n/**\r\n * On Change functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\r\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\r\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\r\n }\r\n return Promise.resolve();\r\n};\r\n\r\n/**\r\n * Remove preferred store functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\r\n props.handlers.onRemovePreferredStore();\r\n};\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @param pickupMode -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\r\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\r\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\r\n }\r\n};\r\n\r\n/**\r\n * On store details close functionality.\r\n * @param props -Store locator location items.\r\n * @returns Void promise.\r\n */\r\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\r\n await props.handlers.closeStoreDetailsModal();\r\n};\r\n\r\n/**\r\n * Method to render pickup modes.\r\n * @param props - StoreSelector Line item props.\r\n * @param deliveryOptionList - Product DeliveryOption List.\r\n * @param pickupInStoreButtonText - Pickup store button text.\r\n * @param pickupInStoreAriaLabel - Pickup store aria label.\r\n * @returns Jsx component.\r\n */\r\nconst renderPickupModes = (\r\n props: ISelectedStoreProps,\r\n deliveryOptionList: DeliveryOption[],\r\n pickupInStoreButtonText: string,\r\n pickupInStoreAriaLabel: string,\r\n resources: any\r\n): JSX.Element | null => {\r\n if (props.filteredPickupMode === undefined) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n {pickupInStoreButtonText}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders selected store details.\r\n * @param props - Store location details props.\r\n * @returns - Selected Store view props.\r\n */\r\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\r\n const {\r\n className,\r\n shouldHideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n selectedStore,\r\n resources,\r\n stockStatusLabel,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n isLocationDisabled,\r\n telemetryContent,\r\n storePickUpOptionList,\r\n productPickUpOptionList,\r\n preferredDistanceUnit,\r\n definitionResources\r\n } = props;\r\n\r\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\r\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\r\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\r\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\r\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\r\n const canSelectLocation = !shouldHideStockStatus && isInStock;\r\n const pickupInStoreButtonText: string = resources.selectLocation;\r\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\r\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n\r\n const viewProps: ISelectedStoreViewProps = {\r\n selectedStore,\r\n isCurrentLocation,\r\n canSelectLocation,\r\n isPreferredStore,\r\n resources,\r\n deliveryOptions: deliveryOptionList,\r\n storeDetailsMain: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__main`\r\n },\r\n storeHeader: {\r\n tag: 'div' as NodeTag,\r\n className: `${parentClassName}__header`\r\n },\r\n storeName: {storeName},\r\n storeDetailsCloseButton: \r\n ),\r\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel, definitionResources),\r\n preferredStoreButton: isPreferredStoreEnabled ? (\r\n \r\n {resources.preferredStoreText}\r\n \r\n ) : null,\r\n removePreferredStoreButton: isPreferredStoreEnabled ? (\r\n \r\n {resources.setAsPreferredStoreText}\r\n \r\n ) : null,\r\n handlers: {\r\n onSelected: props.handlers.onSelected,\r\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\r\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\r\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\r\n }\r\n };\r\n\r\n return viewProps;\r\n};\r\n\r\n/**\r\n * Store location line item component.\r\n */\r\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ILdsFindStore containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum mode {\r\n findStores = 'findStores',\r\n pickupInStore = 'pickupInStore'\r\n}\r\n\r\nexport const enum searchRadiusUnit {\r\n miles = 'miles',\r\n kilometers = 'kilometers'\r\n}\r\n\r\nexport const enum style {\r\n inline = 'inline',\r\n dialog = 'dialog'\r\n}\r\n\r\nexport interface ILdsFindStoreConfig extends Msdyn365.IModuleConfig {\r\n heading?: string;\r\n termsOfServiceLink?: ITermsOfServiceLinkData;\r\n mode?: mode;\r\n searchRadiusUnit?: searchRadiusUnit;\r\n lookupRadius: number;\r\n style?: style;\r\n setAsPreferredStore?: boolean;\r\n enablePickupFilterToShowStore?: boolean;\r\n showAllStores?: boolean;\r\n autoSuggestionEnabled?: boolean;\r\n autoSuggestOptions?: IAutoSuggestOptionsData;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface ILdsFindStoreResources {\r\n searchPlaceholderText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n outOfStockText: string;\r\n inStockText: string;\r\n selectedStoreLocationText: string;\r\n emptyLocationsText: string;\r\n selectStoreText: string;\r\n selectStoreAriaFormatText: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n timeText: string;\r\n captionText: string;\r\n milesShortText: string;\r\n kilometersShortText: string;\r\n contactText: string;\r\n availabilityText: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeConfiguration: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n storeHoursClosedText: string;\r\n storeHoursMondayText: string;\r\n storeHoursTuesdayText: string;\r\n storeHoursWednesdayText: string;\r\n storeHoursThursdayText: string;\r\n storeHoursFridayText: string;\r\n storeHoursSaturdayText: string;\r\n storeHoursSundayText: string;\r\n storeHoursMondayFullText: string;\r\n storeHoursTuesdayFullText: string;\r\n storeHoursWednesdayFullText: string;\r\n storeHoursThursdayFullText: string;\r\n storeHoursFridayFullText: string;\r\n storeHoursSaturdayFullText: string;\r\n storeHoursSundayFullText: string;\r\n storePhoneAriaLabel: string;\r\n storeAddressAriaLabel: string;\r\n storeCountMessage: string;\r\n storeAllCountMessage: string;\r\n storeCountMessageInKm: string;\r\n storeSelectorHeaderText: string;\r\n storeLocatorHeaderText: string;\r\n seeAllStoresText: string;\r\n viewMapText: string;\r\n viewListText: string;\r\n pickupFilterByHeading: string;\r\n pickupFilterMenuHeading: string;\r\n timeAm: string;\r\n timePm: string;\r\n bopisStoreHeading: string;\r\n pickupButtonText: string;\r\n findInStore: string;\r\n}\r\n\r\nexport interface ITermsOfServiceLinkData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAutoSuggestOptionsData {\r\n maxResults?: number;\r\n}\r\n\r\nexport interface ILdsFindStoreProps extends Msdyn365.IModule {\r\n resources: ILdsFindStoreResources;\r\n config: ILdsFindStoreConfig;\r\n slots: {\r\n maps: React.ReactNode[];\r\n };\r\n}\r\n","/* eslint-disable security/detect-object-injection */\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\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport {\r\n ArrayExtensions,\r\n getFullAvailableInventoryNearby,\r\n GetFullAvailableInventoryNearbyInput,\r\n getOrgUnitLocationsByArea,\r\n GetOrgUnitLocationsByAreaInput,\r\n IFullOrgUnitAvailability\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n isMobile,\r\n ITelemetryContent,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n NodeTag,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n StoreSelectorEmptyMessage,\r\n StoreSelectorFoundLocationsMessage,\r\n StoreSelectorLocationLines,\r\n StoreSelectorSearchForm,\r\n StoreSelectorWaiting\r\n} from './components';\r\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/lds-find-store-location-line-item/date-time-helpers';\r\nimport { ILdsFindStoreData } from './lds-find-store.data';\r\nimport {\r\n ILdsFindStoreProps,\r\n ILdsFindStoreResources,\r\n mode as modeEnum,\r\n searchRadiusUnit as SearchRadiusUnit,\r\n style as styleEnum\r\n} from './lds-find-store.props.autogenerated';\r\n\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\n\r\n/**\r\n * StoreSelector State Interface.\r\n */\r\nexport interface IStoreSelectorState {\r\n isSearchInProgress: boolean;\r\n searchTerm?: string;\r\n isSeeAllStoreValue: boolean;\r\n isLocationDisabled?: boolean;\r\n filteredPickupMode?: string;\r\n updatedCart?: ICartState | null;\r\n}\r\n\r\n/**\r\n * StoreSelector View Props Interface.\r\n */\r\nexport interface IStoreSelectorViewProps extends ILdsFindStoreProps {\r\n state: IStoreSelectorState;\r\n\r\n // Containers:\r\n ModuleProps: IModuleProps;\r\n BodyContainerProps: INodeProps;\r\n FooterContainerProps: INodeProps;\r\n HeaderContainerProps: INodeProps;\r\n HeaderProps?: React.ReactNode;\r\n\r\n // Components\r\n locationsMessage?: React.ReactNode;\r\n search?: React.ReactNode;\r\n spinner?: React.ReactNode;\r\n locationsList?: React.ReactNode;\r\n selectedLocation?: ISelectedStoreViewProps;\r\n noLocationsMessage?: React.ReactNode;\r\n terms?: React.ReactNode;\r\n headerText?: React.ReactNode;\r\n sortLocations?: IFullOrgUnitAvailability[];\r\n locationListProps?: IStoreSelectorLocationLineItemProps[];\r\n bodyWrapperProps?: INodeProps;\r\n storeResultContainerProps?: INodeProps;\r\n mapContainerProps?: INodeProps;\r\n maps?: React.ReactNode;\r\n isMobileView?: boolean;\r\n storeDetailsModal?: INodeProps;\r\n shouldAllowSearch?: boolean;\r\n\r\n callbacks: {\r\n closeDialog(): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n performSearch(searchTerm: string): Promise;\r\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\r\n getAndUpdateUserLocation(): Promise;\r\n attachMapAutoSuggest(): Promise;\r\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\r\n setPreferredStore(storeId: string | undefined): Promise;\r\n removePreferredStore(): Promise;\r\n setSelectedStore(storeId: string | undefined): Promise;\r\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * StoreSelectorLocation Line Resources Interface.\r\n */\r\nexport interface IStoreSelectorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n storeHoursHeader: string;\r\n availabilityInfoHeader: string;\r\n closedText: string;\r\n outOfStock: string;\r\n inStock: string;\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n bopisStoreHeading: string;\r\n timeAm: string;\r\n timePm: string;\r\n\r\n days: {\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n sunday: string;\r\n mondayFull: string;\r\n tuesdayFull: string;\r\n wednesdayFull: string;\r\n thursdayFull: string;\r\n fridayFull: string;\r\n saturdayFull: string;\r\n sundayFull: string;\r\n };\r\n}\r\n\r\n/**\r\n * ILocationHours Interface.\r\n */\r\nexport interface ILocationHours {\r\n openFrom?: string;\r\n openTo?: string;\r\n}\r\n\r\n/**\r\n * StoreSelectorLocation Line Item Props Interface.\r\n */\r\nexport interface IStoreSelectorLocationLineItemProps {\r\n location: OrgUnitLocation;\r\n storeHours?: StoreHours;\r\n storeHoursList?: IHoursDisplayInfo[];\r\n\r\n hideStockStatus?: boolean;\r\n isInStock?: boolean;\r\n isCurrentLocation?: boolean;\r\n\r\n resources: IStoreSelectorLocationLineItemResources;\r\n stockStatusLabel?: string;\r\n storeLocatorView?: boolean;\r\n isPreferredStoreEnabled?: boolean;\r\n index: string;\r\n preferredStoreLocationId: string | null;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n selectedStoreLocationId?: string;\r\n locationOpen?: ILocationHours;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n isLocationDisabled?: boolean;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n closeStoreDetailsModal(): Promise;\r\n };\r\n onClick: (locationId: string | undefined) => void;\r\n}\r\n\r\n/**\r\n *\r\n * Pick Up In Store module.\r\n * @extends React.Component>}\r\n */\r\n@observer\r\nclass StoreSelector extends React.Component, IStoreSelectorState> {\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private storeCounter: number;\r\n\r\n private isPreferredStoreEnabled?: boolean;\r\n\r\n public constructor(props: ILdsFindStoreProps) {\r\n super(props);\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.state = {\r\n isSearchInProgress: true,\r\n searchTerm: '',\r\n isSeeAllStoreValue: false,\r\n filteredPickupMode: undefined,\r\n updatedCart: null\r\n };\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.storeCounter = 0;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const cartStateData: ICartState = await getCartState(this.props.context.actionContext);\r\n this.setState({ updatedCart: cartStateData });\r\n const {\r\n context: {\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 void this._getAndUpdateStoreLocation();\r\n }, 0);\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (context?.id === this.props.id) {\r\n void this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\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 void 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 reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n 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\r\n reaction(\r\n () => this.props.data.availabilitiesWithHours.result,\r\n async () => {\r\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\r\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\r\n if (storeLocationList) {\r\n await this._setOrgUnitStoreInformation(storeLocationList);\r\n }\r\n }\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 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 // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\r\n public render(): JSX.Element {\r\n const {\r\n config: {\r\n className,\r\n heading,\r\n mode,\r\n style,\r\n setAsPreferredStore: shouldSetAsPreferredStore,\r\n showAllStores: shouldShowAllStores,\r\n lookupRadius,\r\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\r\n searchRadiusUnit\r\n },\r\n context: {\r\n telemetry,\r\n app: { config: appConfig },\r\n actionContext: {\r\n requestContext: { channel, cookies }\r\n }\r\n },\r\n slots: { maps: mapSlot },\r\n resources,\r\n data: {\r\n availabilitiesWithHours: { result: availabilitiesWithHours },\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations }\r\n }\r\n } = this.props;\r\n\r\n this.storeCounter = 0;\r\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\r\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n const isDialogOpen: boolean = storeSelectorStateManager\r\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\r\n : false;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const isInlineView = styleDefault === styleEnum.inline;\r\n const isLocatorView = modeDefault === modeEnum.findStores;\r\n const shouldHideInventory = isLocatorView;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const preferredStore: IStoreInfo | undefined =\r\n this.props.data.cartDetails.result && this.props.data.cartDetails.result.AmountDue\r\n ? storeSelectorStateManager?.preferredStore\r\n : undefined;\r\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\r\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\r\n const canShowLocationView =\r\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\r\n\r\n const storeSelectorActions = {\r\n async toggleListMapViewState(): Promise {\r\n await storeSelectorStateManager?.toggleListMapViewState();\r\n }\r\n };\r\n\r\n if (!channel?.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n }\r\n\r\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\r\n const preferredDistanceUnit =\r\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\r\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\r\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\r\n let sortLocation = null;\r\n if (storeLocationList) {\r\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\r\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\r\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\r\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\r\n\r\n const preferredStoreSelected =\r\n this.state.updatedCart &&\r\n this.state.updatedCart.cart &&\r\n this.state.updatedCart.cart.AmountDue &&\r\n // this.state.updatedCart.cart.DeliveryMode !== '' &&\r\n this.state.updatedCart.cart.CartLines &&\r\n this.state.updatedCart.cart.CartLines[0].DeliveryMode !== '' &&\r\n this.props.context.request.telemetryPageName !== 'CartPage'\r\n ? storeLocationList?.filter(x => {\r\n return (\r\n x.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n this.state.updatedCart?.cart.CartLines![0].WarehouseId\r\n );\r\n })\r\n : storeLocationList;\r\n\r\n const shouldAllowSearch = false;\r\n\r\n if (this.state.filteredPickupMode && storeLocationList) {\r\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\r\n }\r\n const locationListProps = this._getStoreLocationListProps(\r\n isEnableOutofStock,\r\n isLocatorView,\r\n preferredLocationId,\r\n this.isPreferredStoreEnabled,\r\n selectedStoreLocationId,\r\n storeLocationList ?? null,\r\n preferredDistanceUnit,\r\n alreadySelectedLocation,\r\n productPickUpOptionList\r\n );\r\n\r\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\r\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\r\n const viewProps: IStoreSelectorViewProps = {\r\n ...(this.props as ILdsFindStoreProps),\r\n state: this.state,\r\n maps: hasMapSlot ? mapSlot[0] : undefined,\r\n\r\n ModuleProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : Modal,\r\n moduleProps: this.props,\r\n className: classname(\r\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\r\n className,\r\n dialogClassName,\r\n isInlineView ? '' : 'msc-modal-input-required'\r\n ),\r\n autoFocus: true,\r\n fade: true,\r\n isOpen: isDialogOpen,\r\n // isOpen: true,\r\n 'aria-label': configHeading,\r\n onClosed: this._closeDialog,\r\n horizontalPosition: 'center',\r\n verticalPosition: 'center',\r\n toggle: this._closeDialog\r\n },\r\n isMobileView: isMobileDevice,\r\n HeaderContainerProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\r\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\r\n toggle: this._closeDialog\r\n },\r\n HeaderProps: configHeading && (\r\n \r\n ),\r\n FooterContainerProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\r\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\r\n },\r\n BodyContainerProps: {\r\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\r\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\r\n },\r\n bodyWrapperProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__body_wrapper'\r\n },\r\n storeResultContainerProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__store_container'\r\n },\r\n mapContainerProps: {\r\n tag: 'div' as NodeTag,\r\n className: 'ms-store-select__map_container'\r\n },\r\n storeDetailsModal: {\r\n tag: 'div' as NodeTag,\r\n className: `ms-store-select__map__selected_store__modal ${\r\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\r\n }`\r\n },\r\n locationsMessage: !this.state.isLocationDisabled && (\r\n \r\n ),\r\n selectedLocation: this.renderSelectedStore(\r\n shouldHideInventory,\r\n preferredDistanceUnit,\r\n preferredStore,\r\n this.isPreferredStoreEnabled,\r\n isEnableOutofStock,\r\n productPickUpOptionList,\r\n shouldDisplayList\r\n ),\r\n search: (\r\n \r\n ),\r\n spinner: ,\r\n shouldAllowSearch: shouldAllowSearch,\r\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n noLocationsMessage: ,\r\n // terms: (\r\n // \r\n // ),\r\n\r\n // Not being used in current context, we can use it here to pass more props.\r\n headerText: (\r\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\r\n ),\r\n sortLocations: sortLocation,\r\n locationListProps,\r\n callbacks: {\r\n searchTermChanged: this._searchTermChanged,\r\n performSearch: this._performSearch,\r\n closeDialog: this._closeDialog,\r\n selectedLocation: this._onOrgUnitLocationSelected,\r\n getAndUpdateUserLocation: async () => {\r\n void this._getAndUpdateStoreLocation();\r\n return Promise.resolve();\r\n },\r\n attachMapAutoSuggest: this._attachMapAutoSuggest,\r\n onSuggestionSelected: this._onOrgUnitLocationSelected,\r\n setPreferredStore: this._setPreferredStore,\r\n removePreferredStore: this._removePreferredStore,\r\n setSelectedStore: this._setSelectedStore,\r\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\r\n }\r\n } as IStoreSelectorViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Render the selected store for the mobile devices.\r\n * @param shouldHideInventory -- Hide Inventory.\r\n * @param preferredDistanceUnit -- Preferred Distance Unit.\r\n * @param preferredStore -- Preferred Store.\r\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\r\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\r\n * @param productPickUpOptionList -- Product pickup option list.\r\n * @param shouldDisplayList - Should Display list.\r\n * @returns -- Returns the view props.\r\n */\r\n public renderSelectedStore = (\r\n shouldHideInventory: boolean,\r\n preferredDistanceUnit: string,\r\n preferredStore: IStoreInfo | undefined,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n hasEnabledOutOfStockCheck: boolean,\r\n productPickUpOptionList?: DeliveryOption[],\r\n shouldDisplayList?: boolean\r\n ): ISelectedStoreViewProps | undefined => {\r\n const {\r\n resources,\r\n data: {\r\n availabilitiesWithHours: { result: availabilitiesWithHours },\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations }\r\n }\r\n } = this.props;\r\n\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\r\n (store: any) => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\r\n );\r\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreResources = this._mapResources(resources);\r\n\r\n if (!shouldDisplayList && selectedStore) {\r\n const selectedProps: ISelectedStoreProps = {\r\n shouldHideStockStatus: shouldHideInventory,\r\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\r\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\r\n selectedStore,\r\n resources: selectedStoreResources,\r\n definitionResources: this.props.resources,\r\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\r\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\r\n isPreferredStoreEnabled,\r\n isLocationDisabled: this.state.isLocationDisabled,\r\n telemetryContent: this.telemetryContent,\r\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\r\n productPickUpOptionList,\r\n preferredDistanceUnit,\r\n handlers: {\r\n onSelected: this._onOrgUnitLocationSelected,\r\n onSetAsPreferredStore: this._setPreferredStore,\r\n onRemovePreferredStore: this._removePreferredStore,\r\n closeStoreDetailsModal: this._closeStoreDetailModal\r\n }\r\n };\r\n\r\n return SelectedStoreComponent(selectedProps);\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Method to be called on link text change.\r\n * @param event -Content Edit Event.\r\n */\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n if (this.props.config.termsOfServiceLink) {\r\n this.props.config.termsOfServiceLink.linkText = event.target.value;\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 = event.target.value;\r\n };\r\n\r\n /**\r\n * Show all stores handler function.\r\n */\r\n private readonly onShowAllStoresHandler = () => {\r\n void this._getAndUpdateStoreLocation(true);\r\n this.setState({ filteredPickupMode: undefined });\r\n };\r\n\r\n /**\r\n * Method to be called for filtered the store location based on the filter selected by the user.\r\n * @param stores -All the stores from the API.\r\n * @param filteredPickupMode -Filter selected by the user.\r\n * @returns -Filtered stores.\r\n */\r\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\r\n return stores.filter(location => {\r\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\r\n return deliveryOption.Code === filteredPickupMode;\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Filter Store by pickup mode.\r\n * @param deliveryCode -Delivery Code.\r\n */\r\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\r\n this.setState({ filteredPickupMode: deliveryCode });\r\n };\r\n\r\n /**\r\n * Method will sort all stores.\r\n * @param stores -Stores List.\r\n * @param isPreferredStoreEnabled -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @returns List of Stores.\r\n */\r\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\r\n private _sortStores(\r\n stores: IFullOrgUnitAvailability[],\r\n isPreferredStoreEnabled: boolean | undefined,\r\n preferredStoreLocationId: string\r\n ): IFullOrgUnitAvailability[] {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n isPreferredStoreEnabled &&\r\n preferredStoreLocationId &&\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n /**\r\n * Method will list of store selector location line.\r\n * @param hasEnabledOutOfStockCheck -Stores List.\r\n * @param isStoreLocatorView -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @param isPreferredStoreEnabled -Stores List.\r\n * @param selectedStoreLocationId -Module config value.\r\n * @param stores -Store Id.\r\n * @param preferredDistanceUnit -Module config value.\r\n * @param alreadySelectedLocation -Already Selected Location.\r\n * @param productPickUpOptionList -Product supported Pickup Modes List.\r\n * @returns List of StoreSelectorLocation Line.\r\n */\r\n private _getStoreLocationListProps(\r\n hasEnabledOutOfStockCheck: boolean,\r\n isStoreLocatorView: boolean,\r\n preferredStoreLocationId: string,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n selectedStoreLocationId: string | undefined,\r\n stores: IFullOrgUnitAvailability[] | null,\r\n preferredDistanceUnit?: string | undefined,\r\n alreadySelectedLocation?: OrgUnitLocation,\r\n productPickUpOptionList?: DeliveryOption[]\r\n ): IStoreSelectorLocationLineItemProps[] {\r\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\r\n if (ArrayExtensions.hasElements(stores)) {\r\n stores.map((store, index: number) => {\r\n const storeLineProps = this._createStoreLocationList(\r\n store,\r\n index,\r\n hasEnabledOutOfStockCheck,\r\n isStoreLocatorView,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n selectedStoreLocationId,\r\n preferredDistanceUnit,\r\n alreadySelectedLocation,\r\n productPickUpOptionList\r\n );\r\n if (storeLineProps) {\r\n storeList.push(storeLineProps);\r\n }\r\n });\r\n }\r\n return storeList;\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 * On Selecting Preferred Store.\r\n * @param storeId - Store Id.\r\n */\r\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\r\n if (!storeId) {\r\n return;\r\n }\r\n\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n config: { mode },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations },\r\n availabilitiesWithHours: { result: availabilitiesWithHours }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n\r\n let stores: IFullOrgUnitAvailability[];\r\n if (modeDefault === modeEnum.findStores && storeLocations) {\r\n stores = storeLocations;\r\n } else {\r\n stores = availabilitiesWithHours!;\r\n }\r\n\r\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\r\n\r\n await storeSelectorStateManager.setPreferredStoreLocation(\r\n storeId,\r\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\r\n cookies.isConsentGiven(),\r\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\r\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\r\n );\r\n };\r\n\r\n /**\r\n * On Removing Preferred Store.\r\n */\r\n private readonly _removePreferredStore = async (): Promise => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\r\n };\r\n\r\n /**\r\n * Method called to close the store details modal that comes up on clicking the pushpin.\r\n * @returns Void promise.\r\n */\r\n private readonly _closeStoreDetailModal = async (): Promise => {\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\r\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\r\n };\r\n\r\n /**\r\n * On Selecting Store for pickup.\r\n * @param storeId - Store Id.\r\n */\r\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\r\n };\r\n\r\n /**\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, isSeeAllStoreValue: false });\r\n\r\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\r\n\r\n if (location) {\r\n await this._updateLocations(location.latitude, location.longitude);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n\r\n // 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 be called updating the store location.\r\n * @param shouldShowAllStores - Flag to show all stores.\r\n */\r\n private readonly _getAndUpdateStoreLocation = async (shouldShowAllStores?: boolean): Promise => {\r\n const {\r\n config: { style },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n\r\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\r\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\r\n\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({ isLocationDisabled: false, isSearchInProgress: true });\r\n // if (shouldShowAllStores) {\r\n // this.setState({ isSeeAllStoreValue: true });\r\n // await this._searchTermChanged('');\r\n // await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\r\n // } else {\r\n // await this._updateLocations(position.coords.latitude, position.coords.longitude);\r\n // }\r\n\r\n // // 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 this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\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: 5000 }\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 closing the store selector dialog.\r\n * @returns Void promise.\r\n */\r\n private readonly _closeDialog = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n this.setState({ searchTerm: '' });\r\n\r\n if (storeSelectorStateManager) {\r\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\r\n return storeSelectorStateManager.closeDialog();\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 config: { style },\r\n telemetry\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const context = storeSelectorStateManager.context;\r\n const moduleId: string = context?.id ? context.id : this.props.id;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\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 // TO-DO handle event for when location in selected\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 const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\r\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\r\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\r\n\r\n input = {\r\n ...input,\r\n id: moduleId,\r\n showMapViewLink: context?.showMapViewLink,\r\n parentElementRef: context?.parentElementRef,\r\n isDialog: styleDefault === styleEnum.dialog,\r\n orgUnitStoreInformation: storeLocationList,\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 * 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: { mode, lookupRadius, style, searchRadiusUnit },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\r\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\r\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\r\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\r\n if (styleDefault === styleEnum.inline) {\r\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\r\n if (lastInlineStoreLocation && !this.state.searchTerm) {\r\n 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 }\r\n\r\n if (modeDefault === modeEnum.findStores) {\r\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\r\n return;\r\n }\r\n\r\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\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 context: { actionContext }\r\n } = this.props;\r\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\r\n latitude,\r\n longitude,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\r\n if (orgUnitLocations) {\r\n await this._setOrgUnitStoreInformation(orgUnitLocations);\r\n await this._setSelectedStore(undefined);\r\n }\r\n };\r\n\r\n /**\r\n * Get full available inventory nearby.\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 getFullAvailableInventoryNearby = 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 telemetry,\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n if (!storeSelectorStateManager.context.product) {\r\n // TODO: Use alternative search method here to not make inventory check\r\n return;\r\n }\r\n\r\n const input = new GetFullAvailableInventoryNearbyInput(\r\n storeSelectorStateManager.context.product.RecordId,\r\n latitude ?? 0,\r\n longitude ?? 0,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to get full available inventory near by');\r\n });\r\n };\r\n\r\n /**\r\n * Method to called on store selected.\r\n * @param location - Store Info.\r\n * @param deliveryMode - Pickup mode.\r\n * @returns Void promise.\r\n */\r\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\r\n const {\r\n telemetry,\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager) {\r\n if (location && storeSelectorStateManager.context) {\r\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\r\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch((error: any) => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to get on org unit location selected');\r\n });\r\n }\r\n\r\n await storeSelectorStateManager.closeDialog();\r\n }\r\n };\r\n\r\n /**\r\n * Method will list of store selector location line.\r\n * @param store -Store Info.\r\n * @param index - List index.\r\n * @param hasEnabledOutOfStockCheck -Stores List.\r\n * @param isStoreLocatorView -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @param isPreferredStoreEnabled -Stores List.\r\n * @param selectedStoreLocationId -Module config value.\r\n * @param preferredDistanceUnit -Module config value.\r\n * @param alreadySelectedLocation -Already Selected Location.\r\n * @param productPickUpOptionList -Product supported Pickup Modes List.\r\n * @returns StoreSelectorLocation Line Prop.\r\n */\r\n private _createStoreLocationList(\r\n store: IFullOrgUnitAvailability,\r\n index: number,\r\n hasEnabledOutOfStockCheck: boolean,\r\n isStoreLocatorView: boolean,\r\n preferredStoreLocationId: string,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n selectedStoreLocationId: string | undefined,\r\n preferredDistanceUnit?: string | undefined,\r\n alreadySelectedLocation?: OrgUnitLocation,\r\n productPickUpOptionList?: DeliveryOption[]\r\n ): IStoreSelectorLocationLineItemProps | undefined {\r\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreLocation = selectedStoreLocationId;\r\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\r\n const lineResources = this._mapResources(this.props.resources);\r\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom, lineResources);\r\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo, lineResources);\r\n const storeHours = store.StoreHours;\r\n\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return {\r\n location: orgUnitLocation,\r\n selectedStoreLocationId: selectedStoreLocation,\r\n storeHours,\r\n resources: lineResources,\r\n preferredDistanceUnit: preferredDistanceUnit!,\r\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\r\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\r\n stockStatusLabel: this._stockInventoryLabel(store),\r\n storeLocatorView: isStoreLocatorView,\r\n index: this.storeCounter.toString(),\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n telemetryContent: this.telemetryContent,\r\n isLocationDisabled: this.state.isLocationDisabled,\r\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\r\n productPickUpOptionList,\r\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\r\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\r\n onClick: this._setSelectedStore,\r\n handlers: {\r\n onSelected: this._onOrgUnitLocationSelected,\r\n onSetAsPreferredStore: this._setPreferredStore,\r\n onRemovePreferredStore: this._removePreferredStore,\r\n closeStoreDetailsModal: this._closeStoreDetailModal\r\n }\r\n };\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Method to map resources with Location Item.\r\n * @param resources - List of strings for module.\r\n * @returns Resources for StoreSelector location line.\r\n */\r\n private readonly _mapResources = (resources: ILdsFindStoreResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.pickupButtonText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n bopisStoreHeading: resources.bopisStoreHeading,\r\n timeAm: resources.timeAm,\r\n timePm: resources.timePm,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n\r\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\r\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\r\n\r\n /**\r\n * Method to get stock.\r\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\r\n * @param itemAvailabilities - Item quantity availability.\r\n * @returns Boolean value for item stock.\r\n */\r\n private readonly _isProductInStock = (\r\n hasEnableOutOfStockCheck: boolean,\r\n itemAvailabilities: ItemAvailability[] | undefined\r\n ): boolean => {\r\n if (!hasEnableOutOfStockCheck) {\r\n return true;\r\n }\r\n const quantityCount = 0;\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * Method to get stocklevel label.\r\n * @param isInStock - Stock available in store.\r\n * @returns Label for stock status.\r\n */\r\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\r\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\r\n if (\r\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n isInStock.ProductInventoryInformation[index].InventLocationId\r\n ) {\r\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n}\r\n\r\nexport default StoreSelector;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ILdsFooterData } from './lds-footer.data';\r\nimport { ILdsFooterProps } from './lds-footer.props.autogenerated';\r\n\r\nexport interface ILdsFooterViewProps extends ILdsFooterProps {}\r\n\r\n/**\r\n *\r\n * LdsFooter component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass LdsFooter extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default LdsFooter;\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 { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICookieComplianceViewProps } from './lds-cookie-compliance';\r\n\r\nconst CookieComplianceView: React.FC = props => {\r\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {text}\r\n {links}\r\n \r\n {acceptButton}\r\n \r\n \r\n );\r\n};\r\nexport default CookieComplianceView;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\r\nimport { IStoreSelectorViewProps } from './lds-find-store';\r\n\r\n// import { getCartState } from '@msdyn365-commerce/global-state';\r\n\r\n/**\r\n * Renders the pickup Delivery options.\r\n * @param props -- Selected store view props.\r\n * @returns -- HTML.\r\n */\r\nconst renderDeliveryOptions: React.FC = props => {\r\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\r\n\r\n return (\r\n <>\r\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\r\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the selected store.\r\n * @param props -- Selected store view props.\r\n * @returns -- HTML.\r\n */\r\nconst renderSelectedStore: React.FC = props => {\r\n const {\r\n storeDetailsMain,\r\n storeHeader,\r\n storeName,\r\n storeDetailsCloseButton,\r\n storeDetailsAvailabilityContainer,\r\n productAvailability,\r\n stockStatus,\r\n isCurrentLocation,\r\n currentLocation,\r\n isPreferredStore,\r\n preferredStoreButton,\r\n removePreferredStoreButton\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {storeDetailsCloseButton}\r\n {storeName}\r\n \r\n \r\n {productAvailability}\r\n {stockStatus}\r\n \r\n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\r\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the body of the popup.\r\n * @param props -- Store selector view props.\r\n * @returns -- Returns the html.\r\n */\r\nconst renderBody: React.FC = props => {\r\n // const [cart, setCart] = React.useState();\r\n const {\r\n BodyContainerProps,\r\n // locationsMessage,\r\n // search,\r\n state,\r\n spinner,\r\n locationsList,\r\n noLocationsMessage,\r\n // maps,\r\n bodyWrapperProps,\r\n storeResultContainerProps,\r\n isMobileView,\r\n storeDetailsModal,\r\n selectedLocation\r\n } = props;\r\n\r\n // const getCartStateAsync = async () => {\r\n // const cartState = await getCartState(props.context.actionContext);\r\n // // setCart(cartState);\r\n // return cartState;\r\n // };\r\n\r\n // React.useEffect(() => {\r\n // void getCartStateAsync();\r\n // }, [props.data.cartDetails]);\r\n\r\n if (isMobileView) {\r\n return (\r\n \r\n {/* {locationsMessage}\r\n {search} */}\r\n \r\n \r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\r\n {/* {maps} */}\r\n {selectedLocation && renderSelectedStore(selectedLocation)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {/* {cart && cart.cart.AmountDue === 0 ? locationsMessage : null}\r\n {(cart && cart.cart.AmountDue === 0) || props.context.request.telemetryPageName === 'CartPage' ? search : null} */}\r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\r\n \r\n {/* {maps} */}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Store selector view props.\r\n * @param props - Store selector view props.\r\n * @returns - HTML.\r\n */\r\nconst StoreSelectorView: React.FC = props => {\r\n const { FooterContainerProps, HeaderContainerProps, ModuleProps, terms } = props;\r\n // const { FooterContainerProps, HeaderContainerProps, HeaderProps, ModuleProps, terms } = props;\r\n\r\n return (\r\n \r\n \r\n {props.resources.findInStore}\r\n \r\n {renderBody(props)}\r\n {terms}\r\n \r\n );\r\n};\r\n\r\nexport default StoreSelectorView;\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 * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nexport const FooterImageLink: React.FC = ({ Links }) => {\r\n // const footerImageLink = Links ? Links.footerImageLink : '';\r\n const footerImage = Links ? Links.image : '';\r\n\r\n return (\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 * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\n// @ts-ignore\r\nimport { Text5 } from '@churchofjesuschrist/eden-text';\r\n\r\nconst SiteLinks: React.FC = ({ Links }) => {\r\n const contactUs = Links ? Links.contactLink : '';\r\n const help = Links ? Links.helpLink : '';\r\n const storeLocator = Links ? Links.storeLocator : '';\r\n const feedback = Links ? Links.feedbackLink : '';\r\n\r\n return (\r\n
\r\n \r\n {contactUs && contactUs.linkText ? contactUs.linkText : 'Contact Us'}\r\n \r\n \r\n {storeLocator && storeLocator.linkText ? storeLocator.linkText : 'Store Locator'}\r\n \r\n \r\n {help && help.linkText ? help.linkText : 'Help'}\r\n \r\n \r\n {feedback && feedback.linkText ? feedback.linkText : 'Feedback'}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SiteLinks;\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 * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nconst TermsAndConditions: React.FC = ({ salesAndRefundPolicy, impressum, salesTitle, impressumTitle, onClick }) => {\r\n return (\r\n
\r\n
\r\n \r\n salesAndRefundPolicy && salesAndRefundPolicy.PolicyType ? onClick(salesAndRefundPolicy.PolicyType) : ''\r\n }\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {salesTitle ||\r\n salesAndRefundPolicy?.DESCRIPTION ||\r\n salesAndRefundPolicy?.Description ||\r\n salesAndRefundPolicy?.PolicyType}\r\n \r\n
\r\n
\r\n (impressum && impressum.PolicyType ? onClick(impressum.PolicyType) : '')}\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {impressumTitle || impressum?.DESCRIPTION || impressum?.Description || impressum?.PolicyType}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TermsAndConditions;\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 * as React from 'react';\r\nimport SiteLinks from './SiteLinks';\r\nimport TermsAndConditions from './TermsAndConditions';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nexport const FooterLinks: React.FC = ({\r\n salesAndRefundPolicy,\r\n Links,\r\n resources,\r\n config,\r\n impressum,\r\n impressumTitle,\r\n salesTitle,\r\n onClick,\r\n context\r\n}) => {\r\n return (\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\nimport * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nconst TermsOfService: React.FC = ({ termsOfUse, privacyPolicy, termsTitle, privacyTitle, onClick }) => {\r\n return (\r\n
\r\n (termsOfUse && termsOfUse.PolicyType ? onClick(termsOfUse.PolicyType) : '')}\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {termsTitle || termsOfUse?.DESCRIPTION || termsOfUse?.Description || termsOfUse?.PolicyType}\r\n \r\n (privacyPolicy && privacyPolicy.PolicyType ? onClick(privacyPolicy.PolicyType) : '')}\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {privacyTitle || privacyPolicy?.DESCRIPTION || privacyPolicy?.Description || privacyPolicy?.PolicyType}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TermsOfService;\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 * as React from 'react';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n// @ts-ignore\r\nimport { Text5 } from '@churchofjesuschrist/eden-text';\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst CopyRight: React.FC = ({ resources }) => {\r\n const currentDate = new Date();\r\n\r\n const currentYear = currentDate.getFullYear();\r\n\r\n const currentYearString = currentYear.toString();\r\n\r\n const copyRightText = format(resources.copyRight, currentYearString);\r\n\r\n return (\r\n
\r\n
\r\n

{copyRightText}

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

{resources.allRightsReserved}

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CopyRight;\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 * as React from 'react';\r\nimport TermsOfService from './TermsOfService';\r\nimport CopyRight from './CopyRight';\r\nimport { IldsFooterProps } from '../lds-footer.data';\r\n\r\nexport const FooterLegal: React.FC = ({\r\n termsOfUse,\r\n privacyPolicy,\r\n resources,\r\n config,\r\n privacyTitle,\r\n termsTitle,\r\n onClick\r\n}) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ILdsFooterViewProps } from './lds-footer';\r\nimport { FooterImageLink } from './components/FooterImageLink';\r\nimport { FooterLinks } from './components/FooterLinks';\r\nimport { FooterLegal } from './components/FooterLegal';\r\nimport { lDSPublisherPolicyAsync } from '../../actions/DataActionExtension.g';\r\n\r\nexport default (props: ILdsFooterViewProps) => {\r\n // const [policyInfo, setPolicyInfo] = React.useState();\r\n const [privacyInfo, setPrivacyInfo] = React.useState();\r\n const [privacyTitle, setPrivacyTitle] = React.useState();\r\n const [salesInfo, setSalesInfo] = React.useState();\r\n const [salesTitle, setSalesTitle] = React.useState();\r\n const [termsInfo, setTermsInfo] = React.useState();\r\n const [termsTitle, setTermsTitle] = React.useState();\r\n const [impressumInfo, setImpressumInfo] = React.useState();\r\n const [impressumTitle, setImpressumTitle] = React.useState();\r\n const policies: any = props.data.policy?.result;\r\n\r\n let privacyPolicy: any;\r\n let salesAndRefundPolicy: any;\r\n let termsOfUse: any;\r\n let impressum: any;\r\n const Links = props.config;\r\n\r\n const PRIVACY_POLICY_ID = process.env.PRIVACY_POLICY_ID;\r\n const SALES_AND_REFUND_ID = process.env.SALES_AND_REFUND_ID;\r\n const TERMS_OF_USE_ID = process.env.TERMS_OF_USE_ID;\r\n\r\n //CRP 1\r\n // const privacyPolicy = 5637145327\r\n // const salesAndRefundPolicy = 5637144576\r\n // const termsOfUse = 5637145326\r\n\r\n //CRP 2\r\n // const privacyPolicy = 5637149076\r\n // const salesAndRefundPolicy = 5637149077\r\n // const termsOfUse = 5637149078\r\n\r\n policies?.map((policy: any) => {\r\n if (\r\n policy.Id === parseInt(PRIVACY_POLICY_ID || '', 10) ||\r\n policy.POLICYTYPE?.includes('Privacy Notice') ||\r\n policy.PolicyType?.includes('Privacy Notice')\r\n ) {\r\n privacyPolicy = policy;\r\n }\r\n if (\r\n policy.Id === parseInt(SALES_AND_REFUND_ID || '', 10) ||\r\n policy.POLICYTYPE?.includes('Sales and Refund') ||\r\n policy.PolicyType?.includes('Sales and Refund') ||\r\n policy.PolicyType?.includes('Sales & Refund') ||\r\n policy.PolicyType?.includes('Terms of Use and Sale')\r\n ) {\r\n salesAndRefundPolicy = policy;\r\n }\r\n if (\r\n policy.Id === parseInt(TERMS_OF_USE_ID || '', 10) ||\r\n policy.POLICYTYPE?.includes('Global Terms of Use') ||\r\n policy.PolicyType?.includes('Global Terms of Use') ||\r\n policy.PolicyType?.includes('Return Policy')\r\n ) {\r\n termsOfUse = policy;\r\n }\r\n if (policy.POLICYTYPE?.includes('Impressum') || policy.PolicyType?.includes('Impressum')) {\r\n impressum = policy;\r\n }\r\n });\r\n\r\n const getSalesData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('salesData', results.Title || '');\r\n setSalesInfo(results);\r\n } else {\r\n sessionStorage.setItem('salesData', '');\r\n setSalesInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n const getTermsData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('termsData', results.Title || '');\r\n setTermsInfo(results);\r\n } else {\r\n sessionStorage.setItem('termsData', '');\r\n setTermsInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n const getPrivacyData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('privacyData', results.Title || '');\r\n setPrivacyInfo(results);\r\n } else {\r\n sessionStorage.setItem('privacyData', '');\r\n setPrivacyInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n const getImpressumData = async (policy: string) => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n // let results: any;\r\n\r\n const results = await lDSPublisherPolicyAsync(ctx, policy).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (results) {\r\n sessionStorage.setItem('impressumData', results.Title || '');\r\n setImpressumInfo(results);\r\n } else {\r\n sessionStorage.setItem('impressumData', '');\r\n setImpressumInfo('');\r\n }\r\n\r\n return results;\r\n };\r\n\r\n React.useEffect(() => {\r\n const salesInfo = sessionStorage.getItem('salesData');\r\n const impressumInfo = sessionStorage.getItem('impressumData');\r\n const termsInfo = sessionStorage.getItem('termsData');\r\n const privacyInfo = sessionStorage.getItem('privacyData');\r\n const countryInfo = sessionStorage.getItem('countryFooter');\r\n const localeInfo = sessionStorage.getItem('localeFooter');\r\n\r\n if (\r\n salesAndRefundPolicy &&\r\n termsOfUse &&\r\n privacyPolicy &&\r\n impressum &&\r\n !salesInfo &&\r\n !termsInfo &&\r\n !privacyInfo &&\r\n !salesInfo &&\r\n !impressumInfo\r\n ) {\r\n sessionStorage.setItem('localeFooter', props.context.request.locale);\r\n sessionStorage.setItem('countryFooter', JSON.stringify(props.context.request.channel?.CountryRegionId));\r\n void getSalesData(salesAndRefundPolicy.PolicyType);\r\n void getTermsData(termsOfUse.PolicyType);\r\n void getPrivacyData(privacyPolicy.PolicyType);\r\n void getImpressumData(impressum.PolicyType);\r\n } else if (salesAndRefundPolicy && termsOfUse && privacyPolicy && !salesInfo && !termsInfo && !privacyInfo && !salesInfo) {\r\n void getSalesData(salesAndRefundPolicy.PolicyType);\r\n void getTermsData(termsOfUse.PolicyType);\r\n void getPrivacyData(privacyPolicy.PolicyType);\r\n } else if (\r\n localeInfo !== props.context.request.locale ||\r\n countryInfo !== JSON.stringify(props.context.request.channel?.CountryRegionId)\r\n ) {\r\n sessionStorage.setItem('localeFooter', props.context.request.locale);\r\n sessionStorage.setItem('countryFooter', JSON.stringify(props.context.request.channel?.CountryRegionId));\r\n if (salesAndRefundPolicy) {\r\n void getSalesData(salesAndRefundPolicy.PolicyType);\r\n } else {\r\n sessionStorage.setItem('salesData', '');\r\n }\r\n if (termsOfUse) {\r\n void getTermsData(termsOfUse.PolicyType);\r\n } else {\r\n sessionStorage.setItem('termsData', '');\r\n }\r\n if (privacyPolicy) {\r\n void getPrivacyData(privacyPolicy.PolicyType);\r\n } else {\r\n sessionStorage.setItem('privacyData', '');\r\n }\r\n if (impressum) {\r\n void getImpressumData(impressum.PolicyType);\r\n } else {\r\n sessionStorage.setItem('impressumData', '');\r\n }\r\n }\r\n if (salesInfo) {\r\n setSalesTitle(salesInfo);\r\n } else {\r\n setSalesTitle('');\r\n }\r\n if (termsInfo) {\r\n setTermsTitle(termsInfo);\r\n } else {\r\n setTermsTitle('');\r\n }\r\n if (privacyInfo) {\r\n setPrivacyTitle(privacyInfo);\r\n } else {\r\n setPrivacyTitle('');\r\n }\r\n if (impressumInfo) {\r\n setImpressumTitle(impressumInfo);\r\n } else {\r\n setImpressumTitle('');\r\n }\r\n }, [salesInfo, termsInfo, privacyInfo, impressumInfo]);\r\n\r\n const onClick = async (policyType: string) => {\r\n const encodedString = encodeURIComponent(policyType);\r\n\r\n window.open(`${window.location.origin}${props.context.request.sitePath}/termsandconditions?policy=${encodedString}`);\r\n };\r\n return (\r\n <>\r\n
\r\n \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\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n cartEmptyText: string,\r\n CartlinesWrapper: INodeProps,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean\r\n): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n return cartLines.map(cartLine => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {storeSelector && cartLine.pickUpInStore ? (\r\n {cartLine.pickUpInStore.defaultComponent}\r\n ) : null}\r\n {cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {/* {cartLine.addToWishlist} */}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {/* {cartLine.addToWishlist} */}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n\r\n return cartDataResult ? (\r\n
\r\n

{cartEmptyText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {/* {props.promoCode} */}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n pickUpText: string,\r\n shippingText: string,\r\n emailShippingText: string,\r\n titleSeparate: string,\r\n cartLine: ICartlinesViewProps,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n props.resources.pickUpText,\r\n props.resources.shippingText,\r\n props.resources.emailshippingText,\r\n props.resources.titleSeparate,\r\n cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {/* {props.backToShoppingButton} */}\r\n {/*@ts-ignore */}\r\n \r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n renderCartLinesGroup(props)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\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 { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./checkout-customer-account-payment';\r\nimport {\r\n IAccountPaymentEditViewForm,\r\n IGetAccountPaymentEditViewFormInput\r\n} from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./components/get-account-payment-form-edit-mode';\r\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/./components/get-account-payment-form-summary-mode';\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\nimport styled from 'styled-components';\r\n\r\nexport const SummaryForm: React.FC = ({\r\n formProps,\r\n label,\r\n paymentAmount,\r\n addPaymentButton,\r\n appliedLine,\r\n bottomBorder\r\n}) => (\r\n \r\n <>\r\n {label}\r\n {paymentAmount}\r\n {addPaymentButton}\r\n {appliedLine}\r\n {bottomBorder}\r\n \r\n \r\n);\r\n\r\nexport interface EditFormProps {\r\n accountForm: IAccountPaymentEditViewForm;\r\n submitProps?: IGetAccountPaymentEditViewFormInput;\r\n}\r\ninterface IEditFormExtended extends IAccountPaymentEditViewForm {\r\n paymentLabel?: string;\r\n paymentApplied?: string;\r\n}\r\n\r\nexport const EditForm: React.FC = ({\r\n formProps,\r\n addPaymentButton,\r\n alert,\r\n accountDetails,\r\n appliedLine,\r\n bottomBorder,\r\n paymentLabel,\r\n paymentApplied\r\n}) => {\r\n const PaymentButtonLabel = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: flex-end;\r\n margin-top: 15px;\r\n `;\r\n return (\r\n \r\n <>\r\n
\r\n \r\n {alert}\r\n {/*@ts-ignore */}\r\n {paymentLabel}\r\n \r\n {appliedLine ?
{paymentApplied}
: null}\r\n {/* {appliedLine} */}\r\n
\r\n {accountDetails}\r\n {bottomBorder}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst CheckoutCustomerAccountView: React.FC = props => {\r\n // const { checkoutCustomerAccount, summaryView, editView, moduleState } = props;\r\n const { checkoutCustomerAccount, editView } = props;\r\n //@ts-ignore\r\n const paymentLabel = props.resources.applyPaymentLabel;\r\n //@ts-ignore\r\n const paymentApplied = props.resources.paymentApplied;\r\n return (\r\n \r\n {/* {moduleState.isReady && summaryView && } */}\r\n {editView && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutCustomerAccountView;\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 React, { ReactNode } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\n// import { IFooterCategoryViewProps } from '@msdyn365-commerce-modules/footer/src/modules/footer-category/./footer-category';\r\nimport { IFooterCategoryViewProps } from './IFooterCategoryConfig';\r\n\r\nconst Division = styled.hr`\r\n margin-bottom: 61px;\r\n`;\r\n\r\nexport const FooterCategoryView: React.FC = props => {\r\n const { categories, FooterList, FooterListItem, data } = props;\r\n const policies = data.policy.result;\r\n\r\n if (!categories || categories.length === 0) {\r\n props.context.telemetry.error('Footer content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n let privacyPolicy: any;\r\n let salesAndRefundPolicy: any;\r\n let termsOfUse: any;\r\n\r\n policies?.map(policy => {\r\n if (policy.Id === 5637145327) {\r\n privacyPolicy = policy;\r\n }\r\n if (policy.Id === 5637144576) {\r\n salesAndRefundPolicy = policy;\r\n }\r\n if (policy.Id === 5637145326) {\r\n termsOfUse = policy;\r\n }\r\n });\r\n\r\n return (\r\n \r\n {categories.map((category: ReactNode, index: number) => {\r\n return (\r\n \r\n {category}\r\n \r\n );\r\n })}\r\n \r\n {salesAndRefundPolicy?.DESCRIPTION}\r\n \r\n \r\n \r\n {termsOfUse?.DESCRIPTION}\r\n \r\n \r\n {privacyPolicy?.DESCRIPTION}\r\n \r\n \r\n \r\n \r\n Cookie Preferences\r\n \r\n \r\n
© 2024 by Intellectual Reserve, Inc. All rights reserved.
\r\n
\r\n );\r\n};\r\n\r\nexport default FooterCategoryView;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport AnimateHeight from \"react-animate-height\";\r\n\r\nconst noop = x => x;\r\n\r\nconst Collapse = ({\r\n expand = false,\r\n minHeight = \"0px\",\r\n children,\r\n onAnimationStart = noop,\r\n onAnimationEnd = noop,\r\n ...props\r\n}) => {\r\n const height = expand ? \"auto\" : parseInt(minHeight);\r\n return /*#__PURE__*/React.createElement(\"div\", props, /*#__PURE__*/React.createElement(AnimateHeight, {\r\n onAnimationStart: onAnimationStart,\r\n onAnimationEnd: onAnimationEnd,\r\n duration: 80,\r\n easing: expand ? \"ease-in\" : \"ease-out\",\r\n height: height\r\n }, children));\r\n};\r\n\r\nCollapse.propTypes = {\r\n /** Content that can be collapsed */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** Whether the content is collapsed */\r\n expand: PropTypes.bool,\r\n\r\n /** The minimum height (in pixels) of the content when collapsed */\r\n minHeight: PropTypes.string,\r\n\r\n /** Callback after animation starts */\r\n onAnimationStart: PropTypes.func,\r\n\r\n /** Callback after animation finishes */\r\n onAnimationEnd: PropTypes.func\r\n};\r\nexport default Collapse;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Collapse from \"../../../../eden-collapse\";\r\n\r\nconst Details = _ref => {\r\n let {\r\n open,\r\n children,\r\n onToggle,\r\n ...props\r\n } = _ref;\r\n const detailsRef = useRef(null);\r\n const [expand, setExpand] = useState(props.open);\r\n const [internalOpen, setInternalOpen] = useState(props.open);\r\n const childrenArray = React.Children.toArray(children);\r\n const summary = childrenArray.shift();\r\n useEffect(() => {\r\n const cleanUp = internalOnToggle({}, open);\r\n return () => {\r\n cleanUp();\r\n };\r\n }, [open]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n useEffect(() => {\r\n setExpand(internalOpen);\r\n }, [internalOpen]);\r\n\r\n const internalOnToggle = (event, nextOpen) => {\r\n let timeout;\r\n\r\n if (nextOpen) {\r\n timeout = setTimeout(() => {\r\n setInternalOpen(true);\r\n });\r\n } else {\r\n if (expand) {\r\n var _event$preventDefault;\r\n\r\n (_event$preventDefault = event.preventDefault) === null || _event$preventDefault === void 0 ? void 0 : _event$preventDefault.call(event);\r\n setExpand(false);\r\n } else {\r\n timeout = setTimeout(() => {\r\n setInternalOpen(false);\r\n });\r\n }\r\n } // Return a clean up function\r\n\r\n\r\n return () => clearTimeout(timeout);\r\n };\r\n\r\n return /*#__PURE__*/React.createElement(\"details\", _extends({\r\n ref: detailsRef,\r\n open: internalOpen,\r\n onToggle: event => {\r\n event.stopPropagation();\r\n onToggle === null || onToggle === void 0 ? void 0 : onToggle(event);\r\n }\r\n }, props), summary.props.onClick ? summary : /*#__PURE__*/React.cloneElement(summary, {\r\n onClick: event => {\r\n internalOnToggle(event, !internalOpen);\r\n }\r\n }), /*#__PURE__*/React.createElement(Collapse, {\r\n expand: expand,\r\n minHeight: \"0px\",\r\n onAnimationEnd: () => {\r\n if (!expand) {\r\n detailsRef.current.querySelector(\"summary\").click();\r\n }\r\n }\r\n }, childrenArray));\r\n};\r\n\r\nDetails.propTypes = {\r\n /** Contents rendered inside the details. First child must be a `` element. */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** Whether details is open */\r\n open: PropTypes.bool,\r\n\r\n /** Handler called after a toggle occurs. Use `event.target.open` to get the current `open` state of the `Details`.*/\r\n onToggle: PropTypes.func\r\n};\r\nexport default Details;","import { css } from \"styled-components\";\r\nimport { spacing8, blue10, info10, info40, text120, white } from \"../../../../eden-style-constants\";\r\nconst shared = css([\"color:\", \";& >:first-child{margin-block-start:0;}& >:last-child{margin-block-end:0;}& >:first-child >:first-child{margin-block-start:0;}& >:last-child >:last-child{margin-block-end:0;}& ol,& ul{& li:not(:last-child){margin-block-end:\", \";}}& ol{list-style-type:decimal;& ol{list-style-type:upper-latin;& ol{list-style-type:upper-roman;& ol{list-style-type:lower-latin;}}}}& ul{list-style-type:disc;& ul{list-style-type:circle;& ul{list-style-type:square;}}}& a{color:\", \";text-decoration:underline;}& a:hover{color:\", \";text-decoration-color:\", \";}\"], ({\r\n inverted\r\n}) => inverted ? white : text120, spacing8, ({\r\n inverted\r\n}) => inverted ? blue10 : info40, ({\r\n inverted\r\n}) => inverted ? white : text120, ({\r\n inverted\r\n}) => inverted ? blue10 : info10);\r\nexport default shared;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { sans as zoram, lineHeightLoose, fontSize16, fontWeightNormal, fontWeightBold } from \"../../../../eden-style-constants\";\r\nimport shared from \"./shared\";\r\nconst Container3 = styled.div.withConfig({\r\n componentId: \"sc-1szn76m-0\"\r\n})([\"font-family:\", \";font-weight:\", \";line-height:\", \";font-size:\", \";\", \";& b,& strong{font-weight:\", \";}\"], zoram, fontWeightNormal, lineHeightLoose, fontSize16, shared, fontWeightBold);\r\n\r\nconst Text3 = ({\r\n children,\r\n as = \"div\",\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(Container3, _extends({\r\n as: as\r\n}, props), children);\r\n\r\nText3.propTypes = {\r\n /** Content */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** What html tag or custom react element to render the text as */\r\n as: PropTypes.node\r\n};\r\nexport default Text3;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { spacing24, spacing48, grey5 } from \"../../../../eden-style-constants\";\r\nimport { Details } from \"../../../../eden-details\";\r\nimport { Text3 } from \"../../../../eden-text\";\r\nconst Wrapper = styled(Details).withConfig({\r\n componentId: \"sc-58af31-0\"\r\n})([\"border-block-end:1px solid \", \";\"], grey5);\r\nconst Content = styled(Text3).withConfig({\r\n componentId: \"sc-58af31-1\"\r\n})([\"padding-inline-start:\", \";padding-inline-end:\", \";padding-block-end:\", \";\"], \"0rem\", \"0rem\", spacing48);\r\n\r\nconst Drawer = _ref => {\r\n let {\r\n open,\r\n onToggle,\r\n children,\r\n ...props\r\n } = _ref;\r\n const childrenArray = React.Children.toArray(children);\r\n const summary = childrenArray.shift();\r\n return /*#__PURE__*/React.createElement(Wrapper, _extends({\r\n as: Details,\r\n onToggle: onToggle,\r\n open: open\r\n }, props), summary, /*#__PURE__*/React.createElement(Content, null, childrenArray));\r\n};\r\n\r\nDrawer.propTypes = {\r\n /** Contents rendered inside the details. First child needs to be an `eden-drawer` `` element. */\r\n children: PropTypes.node.isRequired,\r\n\r\n /** Whether details is open */\r\n open: PropTypes.bool,\r\n\r\n /** Handler called after a toggle occurs. Use `event.target.open` to get the current `open` state of the `Drawer`. */\r\n onToggle: PropTypes.func\r\n};\r\nexport default Drawer;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled, { css } from \"styled-components\";\r\nimport { sans as zoram, fontSize18, lineHeightTight, fontWeightSemiBold } from \"../../../../eden-style-constants\";\r\nexport const internalUseOnlyPriority4 = css([\"margin:0;font-family:\", \";font-weight:\", \";font-size:\", \";line-height:\", \";\"], zoram, fontWeightSemiBold, fontSize18, lineHeightTight);\r\nconst H4Styled = styled.h4.withConfig({\r\n componentId: \"sc-12mz36o-0\"\r\n})([\"\", \";\"], internalUseOnlyPriority4);\r\n\r\nconst H4 = ({\r\n children,\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(H4Styled, props, children);\r\n\r\nexport default H4;\r\nH4.propTypes = {\r\n /** Content inside heading */\r\n children: PropTypes.node.isRequired\r\n};","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { internalUseOnlyPriority4 } from \"./H4\";\r\nconst Title4Styled = styled.div.withConfig({\r\n componentId: \"sc-1dcwt4x-0\"\r\n})([\"\", \";\"], internalUseOnlyPriority4);\r\n/**\r\n * Titles are styled to be parents of text. A title style may or may not correspond directly with an HTML heading (H1, H2, etc).\r\n */\r\n\r\nconst Title4 = ({\r\n children,\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(Title4Styled, props, children);\r\n\r\nexport default Title4;\r\nTitle4.propTypes = {\r\n /** Content inside title */\r\n children: PropTypes.node.isRequired\r\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\r\n\r\n// DO NOT EDIT THIS FILE BECAUSE IT IS GENERATED AUTOMATICALLY\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst ChevronDown = ({\r\n size = \"1em\",\r\n color = \"currentColor\",\r\n title,\r\n ...props\r\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({}, props, {\r\n style: {\r\n width: size,\r\n height: size\r\n },\r\n viewBox: \"0 0 24 24\",\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n role: title ? 'img' : 'presentation'\r\n}), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, \" \", /*#__PURE__*/React.createElement(\"path\", {\r\n fill: color,\r\n d: \"M11.462 16.223a.75.75 0 0 0 1.076 0l5.25-5.4a.75.75 0 0 0-1.076-1.046l-4.71 4.85-4.714-4.85a.75.75 0 1 0-1.076 1.046l5.25 5.4z\"\r\n}, \" \"));\r\n\r\nChevronDown.propTypes = {\r\n /** The width/height of the icon as any CSS size unit */\r\n size: PropTypes.string,\r\n\r\n /** The fill color of the icon as any CSS color value */\r\n color: PropTypes.string,\r\n\r\n /** The title to add as a child of the root svg element */\r\n title: PropTypes.string\r\n};\r\nexport default ChevronDown;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled, { css } from \"styled-components\";\r\nimport { lineHeightTight } from \"../../../../eden-style-constants\";\r\nimport { ChevronDown as ChevDown } from \"../../../../eden-icons\";\r\nconst base = css([\"line-height:\", \";\"], lineHeightTight);\r\nconst Chevron = styled(ChevDown).withConfig({\r\n componentId: \"sc-cvfmde-0\"\r\n})([\"\", \";details[open] > summary &&{transform:rotate(180deg);}\"], base);\r\nconst HandleOuter = styled.summary.withConfig({\r\n componentId: \"sc-cvfmde-1\"\r\n})([\"display:block;cursor:pointer;width:100%;list-style:none;&::-webkit-details-marker{display:none;}\"]);\r\nconst FlexWrapper = styled.div.withConfig({\r\n componentId: \"sc-cvfmde-2\"\r\n})([\"display:flex;justify-content:space-between;align-items:center;\"]);\r\n\r\nconst Summary = _ref => {\r\n let {\r\n children,\r\n ...props\r\n } = _ref;\r\n return /*#__PURE__*/React.createElement(HandleOuter, props, /*#__PURE__*/React.createElement(FlexWrapper, null, children, /*#__PURE__*/React.createElement(Chevron, {\r\n size: \"1.5rem\"\r\n })));\r\n};\r\n\r\nSummary.propTypes = {\r\n /** Contents rendered inside the Summary */\r\n children: PropTypes.node.isRequired\r\n};\r\nexport default Summary;","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport styled from \"styled-components\";\r\nimport { spacing16, spacing24, grey2, info40, info60, text120 } from \"../../../../eden-style-constants\";\r\nimport { Title4 } from \"../../../../eden-headings\";\r\nimport { Summary as EdenSummary } from \"../../../../eden-details\";\r\nconst HandleOuter = styled(EdenSummary).withConfig({\r\n componentId: \"sc-1rgj0tw-0\"\r\n})([\"padding-inline-start:\", \";padding-inline-end:\", \";color:\", \";&:hover{text-decoration:underline 1px solid \", \";background:\", \";}details[open] > &&{text-decoration:none;color:\", \";background:none;}\"], spacing24, spacing16, info40, info60, grey2, text120);\r\nconst Title = styled(Title4).withConfig({\r\n componentId: \"sc-1rgj0tw-1\"\r\n})([\"display:inline-block;margin:0;padding:\", \" 0;text-align:start;width:100%;padding-inline-end:\", \";\"], spacing24, spacing16);\r\n\r\nconst Summary = _ref => {\r\n let {\r\n children,\r\n ...props\r\n } = _ref;\r\n return /*#__PURE__*/React.createElement(HandleOuter, props, /*#__PURE__*/React.createElement(Title, null, children));\r\n};\r\n\r\nSummary.propTypes = {\r\n /** Contents rendered inside the Summary */\r\n children: PropTypes.node.isRequired\r\n};\r\nexport default Summary;","import styled from 'styled-components';\r\n\r\nexport const Table = styled.table`\r\n font-family: arial, sans-serif;\r\n border-collapse: collapse;\r\n width: 100%;\r\n`;\r\n\r\nexport const TdName = styled.td`\r\n font-weight: bold;\r\n border-bottom: 1px solid #dddddd;\r\n text-align: left;\r\n padding: 8px;\r\n`;\r\n\r\nexport const TdValue = styled.td`\r\n border-bottom: 1px solid #dddddd;\r\n text-align: left;\r\n padding: 8px;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n// @ts-ignore\r\nimport { Drawer, Summary } from '../../../eden/eden-drawer';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\nimport { Table, TdName, TdValue } from './product-specification.styled';\r\n\r\nimport { getProductSizeChartAsync } from '../../../actions/DataActionExtension.g';\r\n\r\nconst ProductSpecTable = (props: { specs: ProductSpecification[] }) => {\r\n return (\r\n \r\n {props.specs.map((spec: ProductSpecification) => (\r\n \r\n {spec.Name}\r\n {spec.TextValue}\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\ninterface ProductSpecification {\r\n Name: string;\r\n TextValue: string;\r\n}\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n const [sizingChartCustom, setSizingChartCustom] = React.useState();\r\n const [currentSku, setCurrentSku] = React.useState();\r\n const [longDescriptionValue, setLongDescriptionValue] = React.useState();\r\n // const [query, setQuery] = React.useState();\r\n\r\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps } = props;\r\n const drawerSummaries = [];\r\n const sizingChartAsync = async () => {\r\n const ctx = { callerContext: props.context.actionContext };\r\n let sizingChartApi: any;\r\n sizingChartApi = await getProductSizeChartAsync(\r\n ctx,\r\n //@ts-ignore\r\n props.data.product.result.MasterProductId ? props.data.product.result.MasterProductId : props.data.product.result.RecordId,\r\n props.context.request.locale\r\n ).catch((err: any) => {\r\n console.log(err);\r\n });\r\n\r\n if (sizingChartApi && sizingChartApi.SizeChart === '') {\r\n sessionStorage.setItem('sizingChart', 'false');\r\n } else {\r\n sessionStorage.setItem('sizingChart', 'true');\r\n }\r\n\r\n setSizingChartCustom(sizingChartApi);\r\n };\r\n\r\n let productSku: any;\r\n let productNum: any;\r\n\r\n React.useEffect(() => {\r\n //@ts-ignore\r\n if (props.data && props.data.product && props.data.product.result) {\r\n sizingChartAsync();\r\n }\r\n }, []);\r\n\r\n // @ts-ignore\r\n const productSpecificationData = props.data?.productSpecificationData?.result;\r\n // @ts-ignore\r\n const productLongDescription = props.data?.product?.result?.ExtensionProperties;\r\n // const longDescription: string[] = productSpecificationData\r\n // .filter((x: { ExtensionProperties: any[] }) =>\r\n // x.ExtensionProperties.find(y => y.Key === 'AttributeType' && y.Value.IntegerValue === 1)\r\n // )\r\n // .map((z: ProductSpecification) => z.TextValue);\r\n const longDescription: string[] = productLongDescription\r\n .filter((x: any) => {\r\n return x.Key === 'LongDescription';\r\n })\r\n .map((z: any) => {\r\n return z.Value.StringValue;\r\n });\r\n\r\n if (!longDescriptionValue && longDescription) {\r\n setLongDescriptionValue(longDescription);\r\n }\r\n\r\n const sizingChart: string[] = productSpecificationData\r\n .filter((x: { ExtensionProperties: any[] }) =>\r\n x.ExtensionProperties.find(y => y.Key === 'AttributeType' && y.Value.IntegerValue === 2)\r\n )\r\n .map((z: ProductSpecification) => z.TextValue);\r\n\r\n const productSpec: ProductSpecification[] = productSpecificationData\r\n .filter((x: { ExtensionProperties: any[] }) =>\r\n x.ExtensionProperties.find(y => y.Key === 'AttributeType' && y.Value.IntegerValue === 4)\r\n )\r\n .map((z: ProductSpecification) => {\r\n return {\r\n Name: z.Name,\r\n TextValue: z.TextValue\r\n };\r\n });\r\n\r\n React.useEffect(() => {\r\n if (!productSku) {\r\n productSku = sessionStorage.getItem('productSku');\r\n }\r\n if (!productNum) {\r\n productNum = productSpec.filter((item: any) => {\r\n return item.Name === 'Item number';\r\n });\r\n }\r\n if (\r\n productNum &&\r\n productNum[0] &&\r\n productNum[0].TextValue &&\r\n !productNum[0].TextValue.includes('PI') &&\r\n currentSku !== productNum[0].TextValue\r\n ) {\r\n const categoriesArray = window.sessionStorage.getItem('ProductCategory');\r\n const category = categoriesArray ? categoriesArray.split(',')[0] : '';\r\n //@ts-ignore\r\n const { Name, RecordId, Dimensions, ItemId } = props.data.product.result;\r\n const language = Dimensions?.filter((dimension: any) => {\r\n return dimension.DimensionTypeValue === 4;\r\n });\r\n const Style = Dimensions?.filter((dimension: any) => {\r\n return dimension.DimensionTypeValue === 1;\r\n });\r\n const Size = Dimensions?.filter((dimension: any) => {\r\n return dimension.DimensionTypeValue === 3;\r\n });\r\n\r\n const info = {\r\n sku: productNum[0].TextValue ? productNum[0].TextValue : '',\r\n id: ItemId,\r\n name: Name,\r\n language: language && language[0] && language[0].DimensionValue ? language[0].DimensionValue.Value : '',\r\n style: Style && Style[0] && Style[0].DimensionValue ? Style[0].DimensionValue.Value : '',\r\n size: Size && Size[0] && Size[0].DimensionValue ? Size[0].DimensionValue.Value : ''\r\n };\r\n // @ts-ignore\r\n if (window && window['digitalData']) {\r\n // @ts-ignore\r\n window['digitalData'].push({\r\n event: 'Product View',\r\n product: [\r\n {\r\n info,\r\n category: {\r\n primary: category\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n setCurrentSku(productNum[0].TextValue);\r\n sessionStorage.setItem('productSku', productNum[0].TextValue);\r\n }\r\n }, [productSpec]);\r\n\r\n if (longDescription && longDescriptionValue && ArrayExtensions.hasElements(longDescription)) {\r\n drawerSummaries.push({\r\n // @ts-ignore\r\n title: props.resources.productDetailsLabel,\r\n content: (\r\n \r\n \r\n {/* {longDescription} */}\r\n \r\n {' '}\r\n
{' '}\r\n \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n if (productSpec && ArrayExtensions.hasElements(productSpec)) {\r\n drawerSummaries.push({\r\n // @ts-ignore\r\n title: props.resources.specificationsLabel,\r\n content: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n if (sizingChart && ArrayExtensions.hasElements(sizingChart)) {\r\n drawerSummaries.push({\r\n // @ts-ignore\r\n title: props.resources.sizingChartLabel,\r\n content: (\r\n \r\n \r\n {/* {sizingChart} */}\r\n {/* Sizing Chart Table */}\r\n {/*
*/}\r\n\r\n {sizingChartCustom && (\r\n \r\n )}\r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n const [openIndex, setOpenIndex] = React.useState();\r\n const [open, setOpen] = React.useState(false);\r\n // const [index, setIndex] = React.useState();\r\n\r\n React.useEffect(() => {\r\n const handleURLChange = () => {\r\n // setQuery(window.location.search);\r\n if (window.location.search.includes('show')) {\r\n handleToggleCustom(true);\r\n }\r\n // handleToggle('', index);\r\n // console.log('open index: ', openIndex);\r\n };\r\n\r\n window.addEventListener('popstate', handleURLChange);\r\n\r\n return () => {\r\n window.removeEventListener('popstate', handleURLChange);\r\n };\r\n }, []);\r\n\r\n const handleToggleCustom = (boolean?: boolean) => {\r\n if (boolean) {\r\n setOpen(boolean);\r\n } else {\r\n setOpen(true);\r\n }\r\n };\r\n const handleToggle = (event: any, index: any) => {\r\n if (event.target.open) {\r\n setOpenIndex(index);\r\n }\r\n };\r\n\r\n let productAuth;\r\n if (productSpecificationData) {\r\n productAuth = productSpecificationData.filter((attribute: any) => {\r\n return attribute.Name === 'Endowment' || attribute.Name === 'Temple' || attribute.Name === 'Recommend';\r\n });\r\n }\r\n let authRequired;\r\n if (productAuth) {\r\n authRequired = productAuth.map((attribute: any) => {\r\n return attribute.TextValue.includes('YES') ? true : false;\r\n });\r\n }\r\n\r\n const USE_VIEW_RESTRICTIONS = process.env.USE_VIEW_RESTRICTIONS;\r\n\r\n if (parseInt(USE_VIEW_RESTRICTIONS || '', 10) === 1 && authRequired.includes(true) && !props.context.request.user.isAuthenticated) {\r\n return
{''}
;\r\n } else {\r\n return drawerSummaries && ArrayExtensions.hasElements(drawerSummaries) ? (\r\n <>\r\n {/* {drawerSummaries.map((summary, index) => (\r\n handleToggle(event, index)} key={index}>\r\n {summary.title}\r\n {summary.content}\r\n \r\n ))} */}\r\n {drawerSummaries.map((summary, index) => {\r\n // @ts-ignore\r\n if (summary.title === props.resources.sizingChartLabel) {\r\n return (\r\n handleToggleCustom(!open)} key={index}>\r\n {summary.title}\r\n {summary.content}\r\n \r\n );\r\n } else {\r\n return (\r\n handleToggle(event, index)} key={index}>\r\n {summary.title}\r\n {summary.content}\r\n \r\n );\r\n }\r\n })}\r\n \r\n ) : null;\r\n }\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/* Colors */\r\nexport const grey2 = \"#f7f8f8\";\r\nexport const grey3 = \"#eff0f0\"; // onyx10\r\n\r\nexport const grey5 = \"#e0e2e2\"; // onyx20\r\n\r\nexport const grey10 = \"#d0d3d3\"; //quartz\r\n\r\nexport const grey15 = \"#bdc0c0\"; // onyx40\r\n\r\nexport const grey20 = \"#a9adad\"; // granite\r\n\r\nexport const grey25 = \"#9da1a1\";\r\nexport const grey30 = \"#878a8c\"; // slate\r\n\r\nexport const grey35 = \"#676b6e\";\r\nexport const grey40 = \"#53575b\"; // onyx\r\n\r\nexport const grey60 = \"#3a3d40\"; // onyx110\r\n\r\nexport const grey90 = \"#0D0F10\";\r\nexport const yellow5 = \"#ffd61a\";\r\nexport const yellow10 = \"#ffb81c\"; // citrine\r\n\r\nexport const yellow15 = \"#faa61a\";\r\nexport const yellow20 = \"#f68d2e\"; // amber\r\n\r\nexport const yellow25 = \"#e66a1f\";\r\nexport const yellow30 = \"#d45311\"; // topaz\r\n\r\nexport const yellow35 = \"#974a07\";\r\nexport const yellow40 = \"#674730\"; // bronzite\r\n\r\nexport const red5 = \"#fda1b2\";\r\nexport const red10 = \"#fc7473\"; // coral\r\n\r\nexport const red15 = \"#e10f5a\";\r\nexport const red20 = \"#bd0057\"; // ruby\r\n\r\nexport const red25 = \"#a6004e\";\r\nexport const red30 = \"#8f124a\"; // jasper\r\n\r\nexport const red35 = \"#7d003f\";\r\nexport const red40 = \"#6e0d33\"; // garnet\r\n\r\nexport const blue5 = \"#b0eefc\";\r\nexport const blue10 = \"#7de3f4\"; // larimar\r\n\r\nexport const blue15 = \"#49cce6\";\r\nexport const blue20 = \"#01b6d1\"; // turquiose / Link hover\r\n\r\nexport const blue25 = \"#007da5\";\r\nexport const blue30 = \"#006184\"; // sapphire\r\n\r\nexport const blue35 = \"#005175\";\r\nexport const blue40 = \"#003057\"; // azurite\r\n\r\nexport const green5 = \"#d3e952\";\r\nexport const green10 = \"#bed21e\"; // olivine\r\n\r\nexport const green15 = \"#93c742\";\r\nexport const green20 = \"#6db344\"; // beryl\r\n\r\nexport const green25 = \"#50a83e\";\r\nexport const green30 = \"#318d43\"; // emerald\r\n\r\nexport const green35 = \"#206b3f\";\r\nexport const green40 = \"#235c35\"; // jade\r\n\r\nexport const text120 = \"#212225\"; // onyxtext\r\n\r\nexport const black = \"#000000\";\r\nexport const white = \"#fff\";\r\nexport const info10 = \"#20abd7\";\r\nexport const info40 = \"#157493\"; // Link\r\n\r\nexport const info60 = \"#105970\";\r\nexport const confirmation10 = \"#a3d287\";\r\nexport const confirmation40 = \"#74bb49\";\r\nexport const confirmation60 = \"#375a22\";\r\nexport const warning10 = \"#ffd072\";\r\nexport const warning40 = \"#ffae0c\";\r\nexport const warning60 = \"#8f4200\";\r\nexport const danger10 = \"#fc7473\";\r\nexport const danger40 = \"#DC3838\";\r\nexport const danger60 = \"#b00504\";\r\nexport const highlightBlue = \"#e9f7fc\";\r\nexport const highlightCyan = \"#ddfafb\";\r\nexport const highlightGreen = \"#eff7ea\";\r\nexport const highlightYellow = \"#fff8e9\";\r\nexport const highlightAmber = \"#ffefde\";\r\nexport const highlightRed = \"#fee8e7\";\r\nexport const highlightMagenta = \"#fee8fc\";\r\nexport const highlightViolet = \"#f3e9ff\";\r\nexport const colorFacebook = \"#3b5998\";\r\nexport const colorInstagram = \"#3c5a96\";\r\nexport const colorTwitter = \"#00b6f1\";\r\nexport const colorPinterest = \"#cb2027\";\r\nexport const colorYoutube = \"#cd201f\";\r\nexport const colorOdnok = \"#ed812b\";\r\nexport const colorVk = \"#45668e\";\r\n/* Box shadows */\r\n\r\nexport const boxShadowRaised = \"0 2px 4px 0 rgba(0, 0, 0, 0.20)\";\r\nexport const boxShadowDetached = \"0 4px 8px 0 rgba(0, 0, 0, 0.20)\";\r\nexport const boxShadowOverlaid = \"0 8px 16px 0 rgba(0, 0, 0, 0.20)\";\r\nexport const boxShadowPoppedOut = \"0 16px 32px 0 rgba(0, 0, 0, 0.20)\";\r\n/* Font families */\r\n\r\nexport const sans = `\"Ensign:Sans\", Arial, \"noto sans\" , sans-serif`;\r\nexport const serif = `\"Ensign:Serif\", \"Georgia\", \"Times New Roman\", serif`;\r\nexport const monospace = `Courier, \"Courier New\", monospace`;\r\n/* Font Weights */\r\n\r\nexport const fontWeightLight = 300;\r\nexport const fontWeightNormal = 400;\r\nexport const fontWeightSemiBold = 600;\r\nexport const fontWeightBold = 700;\r\n/* Font sizes */\r\n\r\nexport const fontSizeRoot = `100%`; // effectively 16px (16px * 100% = 16px) but respects users' special needs, then desired px / 16px (root size) = rem\r\n\r\nexport const fontSize11 = \"0.6875rem\";\r\nexport const fontSize13 = \"0.8125rem\";\r\nexport const fontSize14 = \"0.875rem\";\r\nexport const fontSize16 = \"1rem\";\r\nexport const fontSize18 = \"1.125rem\";\r\nexport const fontSize20 = \"1.25rem\";\r\nexport const fontSize28 = \"1.75rem\";\r\nexport const fontSize32 = \"2rem\";\r\nexport const fontSize42 = \"2.625rem\";\r\n/* Line heights */\r\n\r\nexport const lineHeightTight = 1.2;\r\nexport const lineHeight = 1.4;\r\nexport const lineHeightLoose = 1.6;\r\n/* Spacings */\r\n\r\nexport const spacing4 = \"0.25rem\"; // 4px\r\n\r\nexport const spacing8 = \"0.5rem\"; // 8px\r\n\r\nexport const spacing16 = \"1rem\"; // 16px\r\n\r\nexport const spacing24 = \"1.5rem\"; // 24px\r\n\r\nexport const spacing32 = \"2rem\"; // 32px\r\n\r\nexport const spacing48 = \"3rem\"; // 48px\r\n\r\nexport const spacing64 = \"4rem\"; // 64px\r\n\r\nexport const spacing96 = \"6rem\"; // 96px\r\n\r\nexport const spacing128 = \"8rem\"; // 128px\r\n\r\n/* Breakpoints */\r\n\r\nexport const breakWidth480 = \"480px\";\r\nexport const breakWidth600 = \"600px\";\r\nexport const breakWidth840 = \"840px\";\r\nexport const breakWidth960 = \"960px\";\r\nexport const breakWidth1280 = \"1280px\";\r\nexport const breakWidth1440 = \"1440px\";\r\nexport const breakWidth1600 = \"1600px\";\r\n/* Aspect ratios */\r\n\r\nexport const aspectRatio1By1 = {\r\n width: 1,\r\n height: 1,\r\n key: \"1:1\"\r\n};\r\nexport const aspectRatio5By6 = {\r\n width: 5,\r\n height: 6,\r\n key: \"5:6\"\r\n};\r\nexport const aspectRatio5By8 = {\r\n width: 5,\r\n height: 8,\r\n key: \"5:8\"\r\n};\r\nexport const aspectRatio6By5 = {\r\n width: 6,\r\n height: 5,\r\n key: \"6:5\"\r\n};\r\nexport const aspectRatio8By3 = {\r\n width: 8,\r\n height: 3,\r\n key: \"8:3\"\r\n};\r\nexport const aspectRatio8By5 = {\r\n width: 8,\r\n height: 5,\r\n key: \"8:5\"\r\n};\r\nexport const aspectRatio16By9 = {\r\n width: 16,\r\n height: 9,\r\n key: \"16:9\"\r\n};\r\nexport const aspectRatios = [aspectRatio1By1, aspectRatio5By6, aspectRatio5By8, aspectRatio6By5, aspectRatio8By3, aspectRatio8By5, aspectRatio16By9];\r\n/* Z indexes */\r\n\r\nexport const zIndexHigherThanPlatform = 200;"],"names":["CookieComplianceAcceptButton","_ref","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Primary","Object","assign","type","className","onClick","CookieComplianceLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","link","index","this","props","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","CookieCompliance","super","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleLinkTextChange","linkIndex","event","_this$props$config$ac","config","actionLinks","target","value","handleContentChange","content","state","visible","cookieRef","_onDismiss","bind","componentDidMount","cookies","isConsentGiven","setState","resources","acceptCookiesAriaLabel","moduleConfig","error","MsDyn365","isBrowser","viewProps","_objectSpread","onDismiss","CookieComplianceBanner","moduleProps","classnames","ref","AlertProps","color","fade","Content","text","onEdit","ArrayExtensions","hasElements","acceptButton","renderView","setConsentCookie","location","reload","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","current","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","async","preventDefault","deliveryCode","currentTarget","getAttribute","onChange","_renderDeliveryOptions","window","addEventListener","componentWillUnmount","removeEventListener","pickupmodeList","map","delivery","Code","key","tabIndex","Description","style","width","display","flexDirection","alignItems","pickupButtonText","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","undefined","onKeyDown","secondsToTime","seconds","hours","Math","floor","ampm","timePm","timeAm","divisorForMinutes","minutes","Country","getShortTimeString","day","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","StoreAvailabilityText","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","onPickupInStoreClickHandler","onPickupModeSelectHandler","pickupMode","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","isAvailable","setIsAvailable","hideStockStatus","isCurrentLocation","isInStock","stockStatusLabel","storeLocatorView","productPickUpOptionList","storeName","OrgUnitName","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","TelemetryConstant","PickupInStore","PreferredStore","RemovePreferredStore","deliveryOptionList","includes","bopisStoreHeading","Street","City","State","Zip","storeHoursHeader","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","justifyContent","padding","marginRight","title","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","currentLocation","renderPickupModes","filteredPickupMode","pickupListOptionMenuText","definitionResources","disabled","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","timeText","availabilityInfoHeader","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreHours","preferredDistanceUnit","ItemAvailabilities","toString","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","DeliveryOptions","productPickUpDeliveryOptions","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","id","marginBottom","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","autoFocus","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","_props$selectedStore","selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","_props$selectedStore3","removePreferredStoreHandler","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","distanceAsString","buildDistanceString","distance","Distance","preferredStoreAttributes","removePreferredStoreAttributes","storeDetailsMain","tag","storeHeader","storeDetailsCloseButton","Button","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","mode","searchRadiusUnit","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","data","availabilitiesWithHours","result","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","modeEnum","pickupInStore","findStores","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","_navigator","styleEnum","dialog","inline","isDialogOpen","navigator","geolocation","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","calRadius","distanceUnitValue","SearchRadiusUnit","kilometers","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","updatedCart","_this$props$data$stor6","cartStateData","getCartState","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_storeLocationList","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","showAllStores","shouldShowAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","cartDetails","AmountDue","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","preferredStoreSelected","cart","CartLines","DeliveryMode","x","_x$OrgUnitAvailabilit","_this$state$updatedCa","WarehouseId","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","Modal","classname","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","shouldAllowSearch","locationsList","outOfStockThreshold","noLocationsMessage","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","LdsFooter","Module","Alert","Node","renderDeliveryOptions","terms","findInStore","renderBody","FooterImageLink","Links","footerImage","image","height","src","alt","altText","contactUs","contactLink","help","helpLink","storeLocator","feedback","feedbackLink","paddingLeft","href","Text5","rel","salesAndRefundPolicy","impressum","salesTitle","impressumTitle","PolicyType","cursor","DESCRIPTION","FooterLinks","SiteLinks","TermsAndConditions","dangerouslySetInnerHTML","__html","footerInfo","termsOfUse","privacyPolicy","termsTitle","privacyTitle","currentYearString","Date","getFullYear","copyRightText","format","copyRight","allRightsReserved","FooterLegal","TermsOfService","CopyRight","_props$data$policy","privacyInfo","setPrivacyInfo","setPrivacyTitle","salesInfo","setSalesInfo","setSalesTitle","termsInfo","setTermsInfo","setTermsTitle","impressumInfo","setImpressumInfo","setImpressumTitle","policies","policy","_policy$POLICYTYPE","_policy$PolicyType","_policy$POLICYTYPE2","_policy$PolicyType2","_policy$PolicyType3","_policy$PolicyType4","_policy$POLICYTYPE3","_policy$PolicyType5","_policy$PolicyType6","_policy$POLICYTYPE4","_policy$PolicyType7","Id","parseInt","process","POLICYTYPE","getSalesData","ctx","callerContext","results","lDSPublisherPolicyAsync","err","console","log","sessionStorage","setItem","Title","getTermsData","getPrivacyData","getImpressumData","_props$context$reques2","getItem","countryInfo","localeInfo","_props$context$reques","CountryRegionId","_props$context$reques3","encodedString","encodeURIComponent","policyType","open","origin","sitePath","_renderCartlines","cartLines","cartEmptyText","CartlinesWrapper","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","cartLine","cartlineId","cartline","pickUpInStore","ContainerProps","defaultComponent","addToOrderTemplate","remove","renderCartLinesGroupHeader","pickUpText","shippingText","emailShippingText","titleSeparate","emailDeliveryModeCode","_cartLine$pickUpInSto4","groupTitle","isBopisSelected","toLowerCase","renderCartLinesGroupTitle","_cartLine$pickUpInSto","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","orgUnitName","_props$cart","_props$cart2","errorData","promotions","renderModuleAttributes","hasInvoiceLine","promotionOptions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","multiplePickUpEnabled","cartLinesGroup","cartlines","_props$context$action","emailshippingText","EmailDeliveryModeCode","emptyCartText","renderCartLinesGroup","orderSummaryHeading","OrderSummaryWrapper","_renderInvoiceSummarylines","invoiceSummaryLines","OrderSummaryItems","invoices","giftCard","loyalty","orderTotal","invoiceSummaryLineitems","_renderOrderSummarylines","orderSummaryLines","subtotal","shipping","otherCharge","tax","totalDiscounts","orderSummaryLineitems","OrderSummaryErrors","errors","Wrapper","header","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","SummaryForm","formProps","label","paymentAmount","addPaymentButton","appliedLine","bottomBorder","EditForm","_ref2","alert","accountDetails","paymentLabel","paymentApplied","PaymentButtonLabel","styled","div","checkoutCustomerAccount","editView","applyPaymentLabel","Division","hr","FooterCategoryView","_salesAndRefundPolicy","_salesAndRefundPolicy2","_termsOfUse","_termsOfUse2","_privacyPolicy","_privacyPolicy2","categories","FooterList","FooterListItem","category","paddingRight","URL","class","consent","crossorigin","importance","tabindex","noop","Collapse","expand","minHeight","children","onAnimationStart","onAnimationEnd","_objectWithoutProperties","_excluded","AnimateHeight","duration","easing","propTypes","PropTypes","isRequired","_extends","arguments","source","prototype","hasOwnProperty","call","apply","Details","onToggle","detailsRef","useRef","setExpand","useState","internalOpen","setInternalOpen","childrenArray","toArray","summary","shift","useEffect","cleanUp","internalOnToggle","nextOpen","timeout","_event$preventDefault","clearTimeout","querySelector","click","css","inverted","white","text120","spacing8","blue10","info40","_ref4","info10","Container3","withConfig","componentId","zoram","fontWeightNormal","lineHeightLoose","fontSize16","shared","fontWeightBold","Text3","as","grey5","spacing48","Drawer","internalUseOnlyPriority4","fontWeightSemiBold","fontSize18","lineHeightTight","H4Styled","h4","H4","Title4Styled","Title4","ChevronDown","size","viewBox","xmlns","fill","d","base","Chevron","ChevDown","HandleOuter","FlexWrapper","Summary","EdenSummary","spacing24","spacing16","info60","grey2","Table","table","TdName","td","TdValue","ProductSpecTable","specs","spec","Name","TextValue","_props$data","_props$data2","sizingChartCustom","setSizingChartCustom","currentSku","setCurrentSku","longDescriptionValue","setLongDescriptionValue","ProductSpecification","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","drawerSummaries","productSku","productNum","sizingChartApi","getProductSizeChartAsync","MasterProductId","SizeChart","sizingChartAsync","productSpecificationData","longDescription","ExtensionProperties","Key","z","Value","StringValue","sizingChart","y","IntegerValue","productSpec","item","categoriesArray","split","Dimensions","ItemId","language","dimension","DimensionTypeValue","Style","Size","info","sku","DimensionValue","primary","productDetailsLabel","specificationsLabel","sizingChartLabel","openIndex","setOpenIndex","setOpen","handleURLChange","handleToggleCustom","boolean","productAuth","authRequired","attribute","user","isAuthenticated","handleToggle","grey3","grey10","grey15","grey20","grey25","grey30","grey35","grey40","grey60","grey90","yellow5","yellow10","yellow15","yellow20","yellow25","yellow30","yellow35","yellow40","red5","red10","red15","red20","red25","red30","red35","red40","blue5","blue15","blue20","blue25","blue30","blue35","blue40","green5","green10","green15","green20","green25","green30","green35","green40","black","confirmation10","confirmation40","confirmation60","warning10","warning40","warning60","danger10","danger40","danger60","highlightBlue","highlightCyan","highlightGreen","highlightYellow","highlightAmber","highlightRed","highlightMagenta","highlightViolet","colorFacebook","colorInstagram","colorTwitter","colorPinterest","colorYoutube","colorOdnok","colorVk","boxShadowRaised","boxShadowDetached","boxShadowOverlaid","boxShadowPoppedOut","sans","serif","monospace","fontWeightLight","fontSizeRoot","fontSize11","fontSize13","fontSize14","fontSize20","fontSize28","fontSize32","fontSize42","lineHeight","spacing4","spacing32","spacing64","spacing96","spacing128","breakWidth480","breakWidth600","breakWidth840","breakWidth960","breakWidth1280","breakWidth1440","breakWidth1600","aspectRatio1By1","aspectRatio5By6","aspectRatio5By8","aspectRatio6By5","aspectRatio8By3","aspectRatio8By5","aspectRatio16By9","aspectRatios","zIndexHigherThanPlatform"],"sourceRoot":""}