{"version":3,"file":"static/js/9.fd5244a313fba5e458c0.chunk.js","mappings":"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","sources":["webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/breadcrumb.view.tsx?b054","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/checkout-delivery-options.view.tsx?3e8c","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/iframe.view.tsx?059a","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/order-history.view.tsx?1eff","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/product-specification.view.tsx?ddc2","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://venchi-ecommerce-msdyn365/./src/modules/iframe/iframe.tsx?65fe","webpack://venchi-ecommerce-msdyn365/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/store-selector.tsx?e416","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://venchi-ecommerce-msdyn365/./src/modules/tile-list/tile-list.tsx?78cb","webpack://venchi-ecommerce-msdyn365/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/order-history.view.tsx?692d","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/sign-in.view.tsx?048a","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://venchi-ecommerce-msdyn365/./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","static","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":""}