{"version":3,"file":"static/js/9.815c88330635f7f607dc.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/breadcrumb.view.tsx?b054","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/checkout-delivery-options.view.tsx?3e8c","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/iframe.view.tsx?059a","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-history.view.tsx?1eff","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/product-specification.view.tsx?ddc2","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-history.view.tsx?692d","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/sign-in.view.tsx?048a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IBreadcrumbViewProps } from '@msdyn365-commerce-modules/breadcrumb';\r\nimport { IBreadcrumbProps } from '../definition-extensions/breadcrumb.ext.props.autogenerated';\r\n\r\nconst BreadCrumbView: React.FC> = props => {\r\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\r\n if (!root && !links && !backButton) {\r\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n let localizedRoot: React.ReactNode | React.ReactElement;\r\n\r\n // @ts-ignore\r\n if (root?.props?.text === 'Back to Order History') {\r\n // @ts-ignore\r\n localizedRoot = React.cloneElement(root, {\r\n text: props.resources.backToOrderHistory,\r\n ariaLabel: props.resources.backToOrderHistory\r\n });\r\n } else {\r\n localizedRoot = root;\r\n }\r\n\r\n return (\r\n \r\n \r\n {localizedRoot && (\r\n \r\n {localizedRoot}\r\n {links && separator}\r\n \r\n )}\r\n {backButton && {backButton}}\r\n {links &&\r\n links.map((link, index) => (\r\n \r\n \r\n {link}\r\n {links[index + 1] && separator}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BreadCrumbView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport get from 'lodash/get';\r\n\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionsViewProps,\r\n ICheckoutDeliveryOptionsList\r\n} from '@msdyn365-commerce-modules/checkout';\r\nimport { ICheckoutDeliveryOptionsProps } from '../definition-extensions/checkout-delivery-options.ext.props.autogenerated';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\ninterface ICheckoutDeliveryData extends ICheckoutDeliveryOptionsList {\r\n deliveryOptions: DeliveryOption[];\r\n}\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list, deliveryOptions }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n\r\n // deliveryOptions sorted by ShippingChargeAmount\r\n const sortedDeliveryOptions = deliveryOptions.sort((a, b) => {\r\n return get(a, 'ShippingChargeAmount', 0) - get(b, 'ShippingChargeAmount', 0);\r\n });\r\n\r\n // console.log(sortedDeliveryOptions);\r\n return (\r\n \r\n {sortedDeliveryOptions.map((deliveryOption: DeliveryOption) => {\r\n const sortedDeliveryOption = list.find(deliveryOptionEdit => deliveryOptionEdit.code === deliveryOption.Code);\r\n if (sortedDeliveryOption !== undefined) {\r\n return (\r\n \r\n {sortedDeliveryOption.radioButton}\r\n {sortedDeliveryOption.description}\r\n {sortedDeliveryOption.price}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC> = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n checkoutErrorRef,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionsData,\r\n deliveryOptionSelected,\r\n alert,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton\r\n } = props;\r\n const extraTextField = props.config.paragraph;\r\n const extraText = extraTextField && ;\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {extraText}\r\n {viewState.isLoading && waiting}\r\n {viewState.isError && alert}\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\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 { IIframeViewProps } from '@msdyn365-commerce-modules/iframe';\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * IFrameView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class IFrameView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\r\n\r\n return (\r\n \r\n {alert}\r\n {cookieConsentAccepted && cookieConsentAccepted === true ? (\r\n <>\r\n {Heading}\r\n
{IFrame}
\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nexport default IFrameView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHeader,\r\n IList,\r\n IOrderHistoryViewProps,\r\n IOrderInformation,\r\n ISalesOrder\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo\r\n}) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n {salesLine.salesLine}\r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => {\r\n // @ts-ignore\r\n const dataPrice = orderInfomation.amount !== null ? orderInfomation.amount.props.data.price.CustomerContextualPrice : 0;\r\n const orderType = dataPrice < 0 ? 'order--return' : 'order--default';\r\n return (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {orderDetailsLink}\r\n \r\n );\r\n};\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n <>\r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image, IImageData } from '@msdyn365-commerce/core';\r\n// import { StockCountJournalsDataActions } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n IProductSpecificationProps as IProductSpecificationExtensionProps,\r\n IProductSpecificationConfig as IProductSpecificationExtensionConfig,\r\n IReassuranceItemsData as IReassuranceItemsExtensionData\r\n} from '../definition-extensions/product-specification.ext.props.autogenerated';\r\nimport * as React from 'react';\r\n// import axios from 'axios';\r\ninterface NutritionalData {\r\n label: string;\r\n qty1Label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n subcategory: NutritionalSubcategoryData[];\r\n}\r\n\r\ninterface NutritionalSubcategoryData {\r\n label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n}\r\n\r\n/* interface ProductLabel {\r\n label: string;\r\n imgLink: string;\r\n} */\r\n\r\ninterface ReassuranceShowType {\r\n title: string;\r\n description: string;\r\n image: IImageData;\r\n}\r\n\r\nconst ProductSpecificationView: React.FC &\r\n IProductSpecificationExtensionConfig> = props => {\r\n const { ProductSpecification, productSpecificationResult } = props;\r\n const tags = ['Gluten free', 'Palm oil free', 'Vegan friendly', 'Light'];\r\n const specificationsList = ['Product description', /* 'Nutritional Values', */ 'Nutritional Values JSON', 'Ingredients'];\r\n const ingredientsAllAttributesList = ['Ingredients', 'Ingredients 2', 'Ingredients 3'];\r\n const labels = props.resources;\r\n // @ts-ignore\r\n const pTags = [];\r\n // @ts-ignore\r\n const pSpecifications = [];\r\n // @ts-ignore\r\n const ingredientsArray = [];\r\n var ingredientsString = '';\r\n\r\n const temporaryDisabled = true;\r\n\r\n const reassuranceItems: ReassuranceShowType[] =\r\n props?.config?.reassuranceItems?.map((reassurance: IReassuranceItemsExtensionData) => ({\r\n title: reassurance.reassuranceTitle,\r\n description: reassurance.reassuranceDescription,\r\n image: reassurance.reassuranceImage\r\n })) ?? [];\r\n\r\n const isProductAccordionOpened = props?.config?.productDescriptionAccordionOpened ?? false;\r\n\r\n const [accordionsState, setAccordionsState] = React.useState(isProductAccordionOpened ? 'Productdescription' : '');\r\n // const [fetchingLabels, setFetchingLabels] = React.useState(false);\r\n /* const [productLabels, setProductLabels] = React.useState(\r\n [{\r\n label: labels['product_specification_title_emea_label'] ?? \"EMEA label\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_emea_warnings'] ?? \"EMEA warnings\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_fda_label'] ?? \"FDA label\",\r\n imgLink: ''\r\n }]) */\r\n\r\n productSpecificationResult?.map(row => {\r\n const itemHtml = row?.props.cellData.props.dangerouslySetInnerHTML;\r\n if (row !== null && tags.includes(row.props.productName) && itemHtml !== undefined && itemHtml.__html === 'Yes') {\r\n pTags.push(row);\r\n }\r\n });\r\n productSpecificationResult?.map(row => {\r\n if (\r\n row !== null &&\r\n specificationsList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n pSpecifications.push(row);\r\n }\r\n if (\r\n row !== null &&\r\n ingredientsAllAttributesList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n ingredientsArray.push(row);\r\n }\r\n });\r\n // @ts-ignore\r\n const productSku = props.data.product.result?.ItemId;\r\n // @ts-ignore\r\n const productPrimaryImageUrl = props.data.product.result?.PrimaryImageUrl;\r\n\r\n // @ts-ignore\r\n ingredientsArray.map(row => {\r\n ingredientsString += row.props.cellData.props.dangerouslySetInnerHTML.__html || '';\r\n });\r\n\r\n const accordionOnClick = (accordion: string): void => {\r\n const accStates = accordionsState.split(',');\r\n if (accStates.includes(accordion)) {\r\n // setAccordionsState(accStates.filter(acc=>acc!==accordion).join(','));\r\n setAccordionsState('');\r\n } else {\r\n // setAccordionsState([...accStates, accordion].join(','));\r\n setAccordionsState(accordion);\r\n }\r\n };\r\n\r\n const isAccordionExpanded = (accordion: string): boolean => {\r\n const accStates = accordionsState.split(',');\r\n return accStates.includes(accordion);\r\n };\r\n\r\n const _renderNutritionalValues = (jData: any): JSX.Element => {\r\n // const jData = JSON.parse(data);\r\n return (\r\n
\r\n {jData.map((row: NutritionalData) => (\r\n <>\r\n
\r\n
{labels[row.label] ?? ''}
\r\n
\r\n
{labels[row.qty1Label] ?? ''}
\r\n
{row.qty1Value ?? ''}
\r\n
{row.qty1Unit ?? ''}
\r\n
\r\n {row.subcategory &&\r\n row.subcategory.map((subRow: NutritionalSubcategoryData) => (\r\n
\r\n
{labels[subRow.label] ?? ''}
\r\n
\r\n
{subRow.qty1Value ?? ''}
\r\n
{subRow.qty1Unit ?? ''}
\r\n
\r\n ))}\r\n \r\n ))}\r\n
\r\n );\r\n };\r\n\r\n /* const _renderProductLabels = (productLabels: ProductLabel[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_product_labels'] ?? 'Product labels';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {productLabels.filter(label => label.imgLink !== '').map((row: ProductLabel) => (\r\n
\r\n
\r\n {row.label}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n } */\r\n\r\n const _renderReassurance = (reassuranceItems: ReassuranceShowType[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_reassurance'] ?? 'Shipments and Returns';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {reassuranceItems.map((row: ReassuranceShowType, index: number) => {\r\n const isLast = index === reassuranceItems.length - 1;\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {row.title}\r\n {row.description}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n React.useEffect(() => {\r\n /* if (!fetchingLabels) {\r\n setFetchingLabels(true);\r\n _getProductLabels(productSku, productPrimaryImageUrl).then((response: string[]) => {\r\n const newProductLabels = [...productLabels];\r\n productLabels.forEach((_, index: number) => {\r\n newProductLabels[index].imgLink = response[index];\r\n });\r\n setProductLabels(newProductLabels);\r\n });\r\n } */\r\n });\r\n\r\n if (temporaryDisabled) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {props.title}\r\n {pSpecifications.length ? (\r\n \r\n {// @ts-ignore\r\n pSpecifications.map(row => {\r\n const title = row.props.productName;\r\n const titleId = title.replace(/\\s+/g, '');\r\n const titleLabel = labels[`product_specification_title_${title.replace(/\\s+/g, '_').toLowerCase()}`] ?? title;\r\n const ingredientsFinalString = ingredientsString;\r\n\r\n let accordionContent;\r\n if (title === 'Ingredients' && ingredientsFinalString) {\r\n accordionContent = ingredientsFinalString;\r\n } else if (title === 'Nutritional Values JSON') {\r\n try {\r\n const jData = JSON.parse(row.props.cellData.props.dangerouslySetInnerHTML.__html);\r\n accordionContent = _renderNutritionalValues(jData);\r\n } catch (e) {\r\n return;\r\n }\r\n } else if (row.props.cellData.props.dangerouslySetInnerHTML.__html) {\r\n accordionContent = row.props.cellData.props.dangerouslySetInnerHTML.__html;\r\n }\r\n\r\n if (!accordionContent) return;\r\n\r\n return (\r\n // tslint:disable-next-line:jsx-key\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{accordionContent}
\r\n \r\n );\r\n })}\r\n {reassuranceItems.length > 0 ? _renderReassurance(reassuranceItems, labels) : null}\r\n {/* {productLabels.filter(label => label.imgLink !== '').length > 0 ? _renderProductLabels(productLabels, labels) : null} */}\r\n {/* { _renderSocialShare(props.slots && props.slots?.socialShare)} */}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n};\r\n\r\n/* const _getProductLabels = async (productId?: string, baseImagePath?: string): Promise => {\r\n if (productId && baseImagePath) {\r\n const results: string[] = [];\r\n const imgBaseUrlArray = decodeURIComponent(baseImagePath).split('/');\r\n imgBaseUrlArray.pop();\r\n\r\n\r\n const imgUrls = [\r\n [...imgBaseUrlArray, `${productId}_000_006.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_007.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_008.jpg`].join('/'),\r\n ];\r\n \r\n for (let i=0; i<3; i=i+1) {\r\n try {\r\n const response = await axios.get(imgUrls[i]);\r\n results.push(response?.status === 200 ? imgUrls[i] : '');\r\n } catch (e) {\r\n results.push('');\r\n }\r\n }\r\n return results; \r\n }\r\n return ['', '', ''];\r\n} */\r\n\r\n/* const _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n}; */\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress,\n note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
\n
{buttonText}
\n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n
\n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n
\n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
\n {isError ? (\n \n \n ) : ('')}\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps, IStoreSelectorViewProps } from './index';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

{countTitle}

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

\n

{groupTitle}

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

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

\n );\n return (\n
\n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n note,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n
\n {orderInfomation.placedBy && {orderInfomation.placedBy}}\n
{orderInfomation && }
\n
\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n
\n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
\n
\n or\n
\n {B2BAccount(signInB2BAccount)}\n
\n
\n
\n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
\n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

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

{resources.currentLocation}

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

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

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

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n
\n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["props","_root$props","root","links","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","separator","context","telemetry","error","localizedRoot","text","React","resources","backToOrderHistory","ariaLabel","Module","Object","assign","Node","map","link","index","key","className","classnames","length","DeliveryOptionList","_ref","DeliveryOptionsList","list","deliveryOptions","sortedDeliveryOptions","sort","a","b","get","deliveryOption","sortedDeliveryOption","find","deliveryOptionEdit","code","Code","undefined","DeliveryOption","radioButton","description","price","DeliveryOptionSelected","_ref2","CheckoutDeliveryOptions","checkoutErrorRef","viewState","deliveryOptionsData","deliveryOptionSelected","alert","waiting","saveButton","editButton","cancelButton","extraTextField","config","paragraph","extraText","Msdyn365","ref","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","IFrameView","render","Heading","IframeContainer","IFrame","cookieConsentAccepted","this","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","heading","processing","address","trackingInfo","OrderHistoryGroup","_ref3","groupProps","delivery","salesLinesProps","salesLines","salesLine","data","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","dataPrice","CustomerContextualPrice","orderType","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","header","loading","emptyMessage","backToShoppingLink","moreButton","_props$config$reassur","_props$config","_props$config$product","_props$config2","_props$data$product$r","_props$data$product$r2","ProductSpecification","productSpecificationResult","tags","specificationsList","ingredientsAllAttributesList","pTags","pSpecifications","ingredientsArray","reassuranceItems","reassurance","title","reassuranceTitle","reassuranceDescription","image","reassuranceImage","isProductAccordionOpened","productDescriptionAccordionOpened","accordionsState","setAccordionsState","row","itemHtml","cellData","dangerouslySetInnerHTML","includes","productName","__html","push","product","result","ItemId","PrimaryImageUrl","AccountProfileEdit","constructor","super","moduleClassName","handleHeadingChange","event","target","value","onTextBoxChange","id","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","telemetryContent","getTelemetryObject","request","telemetryPageName","friendlyName","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","viewProps","_objectSpread","isShowLoading","accountProfileEdit","moduleProps","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","editProps","onEdit","requestContext","accountProfileEditLocalAccount","_renderLocalAccount","renderView","str","e","document","createElement","innerHTML","childNodes","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","__decorate","observable","observer","AccountProfileEditItem","AccountProfileEditLoading","item","button","LocalAccount","disabled","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","Button","errorClassName","role","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","htmlFor","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","setState","IssueLoyaltyInput","apiSettings","issueLoyalty","actionContext","then","MsDyn365","isBrowser","location","catch","debug","TelemetryConstant","SignIn","loyaltySignInAttributes","contentAction","etext","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","params","isEditor","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","toggle","onToggle","applicationNode","returnFocusRef","returnRef","modalHeader","ModalHeader","modalFooter","ModalFooter","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","linkText","editableLink","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","AlertProps","color","fade","Content","ArrayExtensions","hasElements","acceptButton","setConsentCookie","reload","Alert","renderCustomerName","accountInformation","customer","FirstName","Name","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","OrderInfomation","channelAddress","note","SalesLine","salesLineProps","buyAgainButton","errors","GroupDelivery","Group","isCashAndCarryTransaction","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","OrderSummary","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","orderSummary","payment","help","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","_createHeading","_createIframe","_renderAlert","cookieConsentRequiredMessage","targetURL","src","height","iframeAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","RecordId","catalogId","ProductComparisonState","instance","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","buttonText","onClickHandler","isDisabled","ObjectExtensions","isNullOrUndefined","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","filter","ProductComparisonButtonViewFunctionalComponent","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","async","preventDefault","deliveryCode","currentTarget","getAttribute","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","Description","tabIndex","onKeyDown","StoreSelectorLocationLines","orgUnitLocation","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","pickupDeliveryOptionErrorMessage","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","hideStockStatus","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","toString","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","Promise","resolve","renderPickupModesList","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","name","autoComplete","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","StoreSelectorFoundLocationsMessage","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","replace","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","addEventListener","removeEventListener","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","onChangeHandler","_props$selectedStore3","removePreferredStoreHandler","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","deliveryOptionList","pickupInStoreButtonText","pickupInStoreAriaLabel","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeName","OrgUnitName","distanceAsString","buildDistanceString","Distance","resourceLabel","stockLabel","stockText","canSelectLocation","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","deliveryMode","distance","productdeliveryOptions","pickup","_delivery","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","setError","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","pickUpButtonClickHandler","StoreSelector","renderSelectedStore","shouldHideInventory","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","setOrgUnitStoreInformation","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","maps","mapSlot","isMobileDevice","Viewport","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","autoFocus","onClosed","horizontalPosition","verticalPosition","isMobileView","HeaderContainerProps","HeaderProps","FooterContainerProps","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","spinner","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","renderDeliveryOptions","renderBody","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","tileListView","tileItem","keyIndex","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","isNullOrEmpty","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","cart","totalItemsInCart","renderModuleAttributes","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","Link","EditableLink","expandProductsButton","SignInLoading","SignInButton","signIn","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","forgetPassword","disclaimer","signInButton","socialAccounts","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","B2BAccount","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","_data$storeSelectorSt","displayMap","renderProductDescription","primaryImageSource","imageUrl","generateImageUrl","Image","fallBackSrc","loadFailureBehavior","gridSettings","imageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","cropFocalRegion","renderProductImage","signInMessage","reviewModal","form","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","createReviewModal"],"sourceRoot":""}