{"version":3,"file":"static/js/17.73237faf88317682b3e5.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/aaa_b2c_order_history/aaa_b2c_order_history.tsx?7f36","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_b2c_order_history/aaa_b2c_order_history.view.tsx?2aa3","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/search.categorysuggest.tsx?455d","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/search.mobile.empty.tsx?cf46","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/search.form.tsx?b3a3","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/search.keywordsuggest.tsx?f97a","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/search.productsuggest.tsx?3b68","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/search.view.tsx?91d2","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/store-selector.view.tsx?fc62","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-button.tsx?c1c2","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-error.tsx?347f","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-input.tsx?fd25","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-label.tsx?aab5","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-loading-icon.tsx?d70e","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-loading-message.tsx?d239","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-success.tsx?3c81","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/password-reset-verification.tsx?691f","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/password-reset-verification.view.tsx?dffa","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.tsx?4fcb","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.view.tsx?0036","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/subscribe/subscribe.tsx?9fea","webpack://Msdyn365.Commerce.Online/./src/modules/subscribe/subscribe.view.tsx?19c8","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/carticon.component.tsx?3c7c","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd"],"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 * as React from 'react';\r\n\r\nimport { IAaaB2COrderHistoryData } from './aaa_b2c_order_history.data';\r\nimport { IAaa_b2c_order_historyProps } from './aaa_b2c_order_history.props.autogenerated';\r\nimport { getRequestOrderHistoryB2CAsync } from '../../dataActions/DataActionExtension.g';\r\nimport _ from 'lodash';\r\n\r\nexport interface IAaa_b2c_order_historyViewProps extends IAaa_b2c_order_historyProps {\r\n requestOrderLines: [];\r\n currentPageItems: [];\r\n headers: [];\r\n totalItemPerPage: number;\r\n activePage: number;\r\n pageCount: number;\r\n handlePageItemsChange: any;\r\n handleMouseEnterEvent: any;\r\n handleMouseOutEvent: any;\r\n mouseOverIndex: number;\r\n handleOnChangeInput: any;\r\n getOrderDetailPageUrl: any;\r\n searchItems: any;\r\n resetItems: any;\r\n searchString: string;\r\n searchPageItems: [];\r\n isLoading: boolean;\r\n}\r\nexport interface IAaa_b2c_order_historyState {\r\n requestOrderLines: [];\r\n currentPageItems: [];\r\n headers: any;\r\n customerInfo: { AccountNumber: '' };\r\n products: [];\r\n totalItemPerPage: number;\r\n activePage: number;\r\n pageCount: number;\r\n mouseOverIndex: number;\r\n searchString: string;\r\n searchPageItems: [];\r\n isLoading: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Aaa_b2c_order_history component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Aaa_b2c_order_history extends React.PureComponent, IAaa_b2c_order_historyState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n requestOrderLines: [],\r\n currentPageItems: [],\r\n headers: ['Stockist Name', 'Order Number', 'Individual Price', 'Total Price', 'Snapshot ID', 'Status'],\r\n customerInfo: { AccountNumber: '' },\r\n products: [],\r\n totalItemPerPage: this.props.config.totalItemPerPage ? this.props.config.totalItemPerPage : 0,\r\n activePage: 1,\r\n pageCount: 0,\r\n mouseOverIndex: 0,\r\n searchString: '',\r\n searchPageItems: [],\r\n isLoading: true\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n if (this.props.data.customerInformation.result) {\r\n const customerInfo = this.props.data.customerInformation.result;\r\n await this.getRequestOrderList(customerInfo);\r\n }\r\n }\r\n\r\n public getRequestOrderList = async (customerInfo: any) => {\r\n const response: any = await getRequestOrderHistoryB2CAsync(\r\n {\r\n callerContext: this.props.context.actionContext,\r\n\r\n queryResultSettings: {}\r\n },\r\n ''\r\n );\r\n\r\n if (response.RequestOrder) {\r\n this.mappedRequestOrder(response.RequestOrder, customerInfo);\r\n }\r\n };\r\n public mappedRequestOrder(requestOrders: any, customerInfo: any) {\r\n const mappedProducts: any = [];\r\n for (const requestOrder of requestOrders) {\r\n if (requestOrder.RequestOrderId) {\r\n requestOrder.imageUrl = requestOrder.LowResImageURL;\r\n requestOrder.stockistName = requestOrder.b2BCUSTOMERNAME ? requestOrder.b2BCUSTOMERNAME : '-';\r\n requestOrder.orderNumber = requestOrder.RequestOrderId;\r\n requestOrder.totalPrice = `$${requestOrder.B2CPrice.toLocaleString()}`;\r\n requestOrder.orderLinesPriceInfo = [];\r\n const parseData = JSON.parse(requestOrder.RequestOrderLines);\r\n _.forEach(parseData, (orderLine: any) => {\r\n requestOrder.orderLinesPriceInfo.push({ name: orderLine.DetailName, price: orderLine.B2CPrice });\r\n });\r\n requestOrder.snapShotId = requestOrder.Snapshotid;\r\n requestOrder.statusName = requestOrder.StatusName;\r\n requestOrder.lineNum = requestOrder.LineNum.toString();\r\n mappedProducts.push(requestOrder);\r\n }\r\n }\r\n // if manage orders length > 0 set active 1 per page 5,\r\n // divided mangage orders / per page 50/5=10 pagaes\r\n // if active is 1 page pick 0 to active -1 and push into cureent page items\r\n const currentPageItems = this.currentPageItems(this.state.activePage, this.state.totalItemPerPage, mappedProducts);\r\n this.setState({\r\n requestOrderLines: mappedProducts,\r\n customerInfo: customerInfo,\r\n currentPageItems: currentPageItems,\r\n isLoading: false,\r\n pageCount:\r\n mappedProducts.length <= this.state.totalItemPerPage ? 1 : Math.ceil(mappedProducts.length / this.state.totalItemPerPage)\r\n });\r\n }\r\n\r\n private handleMouseEnterEvent = (index: number) => {\r\n this.setState({ mouseOverIndex: index });\r\n };\r\n private handleMouseOutEvent = () => {\r\n this.setState({ mouseOverIndex: 0 });\r\n };\r\n private handlePageItemsChange = (totalItemPerPage: any, activePage: number) => {\r\n let pageCount: number;\r\n let currentPageItems: any;\r\n if (this.state.searchPageItems.length > 0) {\r\n pageCount =\r\n this.state.searchPageItems.length <= totalItemPerPage ? 1 : Math.ceil(this.state.searchPageItems.length / totalItemPerPage);\r\n currentPageItems = this.currentPageItems(activePage, totalItemPerPage, this.state.searchPageItems);\r\n } else {\r\n pageCount =\r\n this.state.requestOrderLines.length <= totalItemPerPage\r\n ? 1\r\n : Math.ceil(this.state.requestOrderLines.length / totalItemPerPage);\r\n currentPageItems = this.currentPageItems(activePage, totalItemPerPage, this.state.requestOrderLines);\r\n }\r\n this.setState({ pageCount, totalItemPerPage, activePage, currentPageItems });\r\n };\r\n private currentPageItems = (activePage: number, totalItemPerPage: number, requestOrderLines: any) => {\r\n const getEndOrderIndexInPage = activePage * totalItemPerPage - 1;\r\n let getStartOrderIndexInPage = getEndOrderIndexInPage - totalItemPerPage + 1;\r\n const currentPageItems: any = [];\r\n if (getEndOrderIndexInPage && getEndOrderIndexInPage) {\r\n for (getStartOrderIndexInPage; getStartOrderIndexInPage <= getEndOrderIndexInPage; getStartOrderIndexInPage++) {\r\n if (requestOrderLines[getStartOrderIndexInPage]) {\r\n currentPageItems.push(requestOrderLines[getStartOrderIndexInPage]);\r\n }\r\n }\r\n }\r\n return currentPageItems;\r\n };\r\n private handleOnChangeInput = (searchString: string) => {\r\n this.setState({ searchString: searchString.toLowerCase() });\r\n };\r\n private getOrderDetailPageUrl = (requestId: string, lineNum: number) => {\r\n const request = this.props.context.request;\r\n let orderDetailUrl = request.url.requestUrl.origin;\r\n if (request.sitePath) {\r\n orderDetailUrl = orderDetailUrl + request.sitePath;\r\n }\r\n if (requestId && request) {\r\n window.location.href = `${orderDetailUrl}${this.props.config.redirectToOrderDetailUrl}?requestOrderId=${requestId}&lineNum=${lineNum}`;\r\n }\r\n };\r\n private searchItems = () => {\r\n if (this.state.searchString) {\r\n const searchPageItems: any = this.state.requestOrderLines.filter((f: any) => {\r\n return f.b2BCUSTOMERNAME.toLowerCase().includes(this.state.searchString);\r\n });\r\n console.log(searchPageItems);\r\n const currentPageItems = this.currentPageItems(1, this.state.totalItemPerPage, searchPageItems);\r\n this.setState({\r\n activePage: 1,\r\n searchPageItems,\r\n currentPageItems: currentPageItems,\r\n pageCount:\r\n searchPageItems.length <= this.state.totalItemPerPage\r\n ? 1\r\n : Math.ceil(searchPageItems.length / this.state.totalItemPerPage)\r\n });\r\n }\r\n };\r\n private resetItems = () => {\r\n const currentPageItems = this.currentPageItems(1, this.state.totalItemPerPage, this.state.requestOrderLines);\r\n this.setState({\r\n searchPageItems: [],\r\n searchString: '',\r\n currentPageItems,\r\n activePage: this.state.activePage,\r\n pageCount:\r\n this.state.requestOrderLines.length <= this.state.totalItemPerPage\r\n ? 1\r\n : Math.ceil(this.state.requestOrderLines.length / this.state.totalItemPerPage)\r\n });\r\n };\r\n public render(): JSX.Element | null {\r\n if (!this.state.customerInfo) {\r\n return null;\r\n }\r\n const viewProps: IAaa_b2c_order_historyViewProps = {\r\n ...(this.props as IAaa_b2c_order_historyProps),\r\n requestOrderLines: this.state.requestOrderLines,\r\n headers: this.state.headers,\r\n activePage: this.state.activePage,\r\n totalItemPerPage: this.state.totalItemPerPage,\r\n currentPageItems: this.state.currentPageItems,\r\n pageCount: this.state.pageCount,\r\n handlePageItemsChange: this.handlePageItemsChange,\r\n handleMouseEnterEvent: this.handleMouseEnterEvent,\r\n handleMouseOutEvent: this.handleMouseOutEvent,\r\n mouseOverIndex: this.state.mouseOverIndex,\r\n handleOnChangeInput: this.handleOnChangeInput,\r\n getOrderDetailPageUrl: this.getOrderDetailPageUrl,\r\n searchItems: this.searchItems,\r\n resetItems: this.resetItems,\r\n searchString: this.state.searchString,\r\n searchPageItems: this.state.searchPageItems,\r\n isLoading: this.state.isLoading\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default Aaa_b2c_order_history;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAaa_b2c_order_historyViewProps } from './aaa_b2c_order_history';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\n\r\nexport default (props: IAaa_b2c_order_historyViewProps) => {\r\n const style: any = {\r\n pagination: {\r\n marginRight: '70px',\r\n marginBottom: '20px'\r\n },\r\n a: {\r\n color: 'black',\r\n float: 'left',\r\n padding: '8px 16px',\r\n textDecoration: 'none',\r\n transition: 'background-color .3s',\r\n border: '1px solid #ddd',\r\n cursor: 'pointer'\r\n },\r\n active: {\r\n backgroundColor: '#031C36',\r\n color: 'white',\r\n border: '1px solid #031C36'\r\n },\r\n hover: {\r\n backgroundColor: '#ddd'\r\n },\r\n disabled: {\r\n backgroundColor: '#eeeeee',\r\n cursor: 'not-allowed'\r\n },\r\n searchInput: {\r\n height: '37px',\r\n width: '300px',\r\n marginRight: '10px'\r\n }\r\n };\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=100&h=100&m=6', w: 100, h: 100 },\r\n lg: { q: 'w=100&h=100&m=6', w: 100, h: 100 },\r\n xl: { q: 'w=100&h=100&m=6', w: 100, h: 100 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n return (\r\n <>\r\n {props.requestOrderLines.length > 0 && !props.isLoading && (\r\n
\r\n props.handleOnChangeInput(event.target.value)}\r\n />\r\n props.searchItems()}\r\n >\r\n {'Search'}\r\n \r\n \r\n

\r\n {props.searchString\r\n ? `${props.searchPageItems.length} / ${props.requestOrderLines.length}`\r\n : props.requestOrderLines.length}{' '}\r\n Items Available\r\n

\r\n
\r\n )}\r\n
\r\n \r\n {props.currentPageItems.length > 0 && (\r\n \r\n ;\r\n })}\r\n \r\n )}\r\n {props.currentPageItems.map((line: any, index: number) => {\r\n return (\r\n \r\n \r\n \r\n \r\n 0 ? 45 : 0\r\n }}\r\n >\r\n {line.orderLinesPriceInfo.length > 0 ? (\r\n line.orderLinesPriceInfo.map((orderLinePriceInfo: any, index: number) => {\r\n return (\r\n
\r\n {orderLinePriceInfo.name}\r\n - ${orderLinePriceInfo.price.toLocaleString()}\r\n
\r\n );\r\n })\r\n ) : (\r\n -\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n {props.headers.map((h: string, index: number) => {\r\n return {h}
\r\n \r\n {line.stockistName}{line.orderNumber}{line.totalPrice}{line.Snapshotid ? line.Snapshotid : '-'}{line.statusName}\r\n props.getOrderDetailPageUrl(line.orderNumber, line.lineNum)}\r\n >\r\n {'View Details'}\r\n \r\n
\r\n
\r\n {props.currentPageItems.length > 0 && (\r\n
\r\n \r\n {' '}\r\n \r\n props.activePage !== 1 ? props.handlePageItemsChange(props.totalItemPerPage, props.activePage - 1) : {}\r\n }\r\n >\r\n «\r\n \r\n \r\n {props.pageCount &&\r\n [...Array(props.pageCount)].map((p: number, index: number) => {\r\n return (\r\n 0 && props.mouseOverIndex === index + 1 ? style.hover : null)\r\n }}\r\n key={index + 1}\r\n onMouseEnter={() => props.handleMouseEnterEvent(index + 1)}\r\n onMouseLeave={() => props.handleMouseOutEvent()}\r\n onClick={() => props.handlePageItemsChange(props.totalItemPerPage, index + 1)}\r\n >\r\n {index + 1}\r\n \r\n );\r\n })}\r\n \r\n {' '}\r\n \r\n props.activePage !== props.pageCount\r\n ? props.handlePageItemsChange(props.totalItemPerPage, props.activePage + 1)\r\n : {}\r\n }\r\n >\r\n »\r\n \r\n \r\n
\r\n )}\r\n {props.isLoading &&
Loading...
}\r\n {!props.isLoading && (props.requestOrderLines.length === 0 || props.currentPageItems.length === 0) && (\r\n
\r\n
\r\n

{'You currently do not have any orders to view.'}

\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Categories heading.\r\n * @param inCategoriesHeading - The Keywords result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\r\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\r\n\r\n return (\r\n
\r\n {categoryAutoSuggestionHeading}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Categories suggestion result.\r\n * @param inCategoriesHeading - The Categories result heading.\r\n * @param noResultText - The \"No Result\" text.\r\n * @param props - The Categories suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns The JSX Element.\r\n */\r\nexport const CategorySuggestionsComponent = (\r\n inCategoriesHeading: string,\r\n noResultText: string,\r\n props: ISearchViewProps & ISearchProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n return props.autosuggestCategory ? (\r\n \r\n {renderCategorySuggestionsTitle(inCategoriesHeading)}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && props.autosuggestCategory.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderCategorySuggestionsTitle(inCategoriesHeading)}\r\n \r\n
  • \r\n {noResultText}\r\n
  • \r\n
    \r\n
    \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\r\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n if (!noSearchResultImage || !noSearchResultImage.src) {\r\n return null;\r\n }\r\n const imageSettings = {\r\n lazyload: true,\r\n viewports: {\r\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\r\n }\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nexport const MobileAutoSuggestEmptyComponent = (\r\n props: ISearchProps\r\n): JSX.Element => {\r\n return (\r\n \r\n
    \r\n {renderProductNotFoundResultsImage(props)}\r\n
    \r\n
    \r\n
    \r\n {props.resources.emptyMobileSearchTextHeading}\r\n
    \r\n
    \r\n {props.resources.emptyMobileSearchText}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\r\n\r\n/**\r\n * Render Clear button for mobile viewport.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\r\n return (\r\n \r\n {clearSearchButtonText || 'Clear'}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Search form.\r\n * @param form -Form view props.\r\n * @param searchForm -Search Form props.\r\n * @param formWrapper -Form Wrapper props.\r\n * @param isMobile -Is mobile viewport flag.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param props -The props for resource.\r\n * @param isSearchText -Is SearchText flag for input text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nexport const FormComponent = (\r\n form: ISearchFormViewProps,\r\n searchForm: INodeProps,\r\n formWrapper: INodeProps,\r\n isMobile: boolean,\r\n clearSearchButtonText: string,\r\n props: ISearchProps,\r\n isSearchText: boolean,\r\n clearSearch: () => void): JSX.Element => {\r\n\r\n const cancelButtonNode = (\r\n \r\n );\r\n\r\n return (\r\n isMobile ? (\r\n \r\n {form.cancelBtn}\r\n \r\n {form.input}\r\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\r\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {isSearchText && cancelButtonNode}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render keywords heading.\r\n * @param keywordsHeading -The Keywords result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\r\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\r\n\r\n return (\r\n
    \r\n {categoryAutoSuggestionHeading}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render keywords reults.\r\n * @param keywordSuggest -The Keywords suggest Node props.\r\n * @param ulKeyword -The List Node props.\r\n * @param keywordsHeading -The Keywords result heading.\r\n * @param noResultText -The \"No Result\" text.\r\n * @param keywordSuggestions -The Keywords suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns -The JSX Element.\r\n */\r\nexport const KeywordSuggestionsComponent = (\r\n keywordSuggest: INodeProps,\r\n ulKeyword: INodeProps,\r\n keywordsHeading: string,\r\n noResultText: string,\r\n keywordSuggestions?: ISearchKeywordViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n return (\r\n keywordSuggestions ? (\r\n \r\n {renderKeywordSuggestionsTitle(keywordsHeading)}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderKeywordSuggestionsTitle(keywordsHeading)}\r\n \r\n
  • \r\n {noResultText}\r\n
  • \r\n
    \r\n
    \r\n )\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param productSuggestionsHeading -The products suggestion result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\r\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\r\n\r\n return (\r\n
    \r\n {productAutoSuggestionHeading}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\r\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n if (!noSearchResultImage || !noSearchResultImage.src) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Products No result section.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\r\n return (\r\n \r\n
    \r\n {renderProductNotFoundResultsImage(props)}\r\n
    \r\n
    \r\n {props.resources.noResultContentHeadingText}\r\n
    \r\n
    \r\n {props.resources.noResultContentParagraphText}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param productSuggest -The product suggest Node props.\r\n * @param ulProduct -The List Node props.\r\n * @param props -The props.\r\n * @param productSuggestions -The Product suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns The JSX Element.\r\n */\r\nexport const ProductSuggestionsComponent = (\r\n productSuggest: INodeProps,\r\n ulProduct: INodeProps,\r\n props: ISearchProps,\r\n productSuggestions?: ISearchProductViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n const liProduct: INodeProps = {\r\n tag: 'li',\r\n className: 'msc-no-result-content'\r\n };\r\n return productSuggestions ? (\r\n \r\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n \r\n \r\n {renderProductNotFoundResults(props)}\r\n \r\n \r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\n\r\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\r\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\r\nimport { FormComponent } from './components/search.form';\r\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\r\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\r\n\r\n/**\r\n * Render Title for AutoSuggest.\r\n * @param searchSuggestionHeading -The heading resource string.\r\n * @param searchText -The search string.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\r\n const searchTextString = '\"'.concat(searchText.concat('\"'));\r\n const searchAutoSuggestionHeading = searchSuggestionHeading ? format(searchSuggestionHeading, searchTextString) : `Search for ${searchTextString}`;\r\n\r\n return (\r\n \r\n {searchAutoSuggestionHeading}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Search View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst SearchView: React.FC> = (props: ISearchViewProps & ISearchProps): JSX.Element => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n UlKeyword,\r\n UlProduct,\r\n form,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label,\r\n context,\r\n isLoadingAutoSuggest,\r\n isLoadingNode\r\n } = props;\r\n\r\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\r\n\r\n const [searchTextString, setSearchTextString] = useState();\r\n const [isMobilePort, setIsMobile] = useState(false);\r\n\r\n useEffect(() => {\r\n setSearchTextString(searchText);\r\n }, [searchText]);\r\n\r\n /**\r\n * ClearSearch callback method to clear search string.\r\n */\r\n const clearSearch = (): void => {\r\n setSearchTextString('');\r\n\r\n const propsForm = props.form as ISearchFormViewProps;\r\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\r\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\r\n\r\n if (propsFormInputCurrent) {\r\n propsFormInputCurrent.value = '';\r\n }\r\n\r\n propsFormInput.value = '';\r\n props.searchText = '';\r\n props.FormWrapper.action = '';\r\n };\r\n\r\n const isMobileViewport = useCallback(() => {\r\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\r\n setIsMobile(isMobileView);\r\n }, [context]);\r\n\r\n useEffect(() => {\r\n window.addEventListener('resize', isMobileViewport);\r\n isMobileViewport();\r\n }, [isMobileViewport]);\r\n\r\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\r\n\r\n const isMobileView = (viewport === 'sm' || viewport === 'xs');\r\n\r\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString) ? `${AutoSuggest.className} show` : `${AutoSuggest.className} hide`;\r\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\r\n\r\n return (\r\n \r\n {label}\r\n {FormComponent(form as ISearchFormViewProps, SearchForm, FormWrapper, isMobilePort, clearSearchButtonText, props, isSearchText, clearSearch)}\r\n { !isMobileView && \r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? \r\n {AutoSuggestAriaLabelText}\r\n : ''}\r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n <>\r\n \r\n \r\n {renderTitle(searchSuggestionHeading, searchText)}\r\n \r\n \r\n \r\n {CategorySuggestionsComponent(categorySuggestionHeading, noResultText,\r\n props, isLoadingAutoSuggest, isLoadingNode)}\r\n {KeywordSuggestionsComponent(KeywordSuggest, UlKeyword, keywordsHeading, noResultText, autosuggestKeyword,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n {ProductSuggestionsComponent(ProductSuggest, UlProduct, props, autosuggestProduct,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n ) : null}\r\n }\r\n { isMobileView && props.isSearchFormExpanded && \r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? \r\n {AutoSuggestAriaLabelText}\r\n : ''}\r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n <>\r\n \r\n {(form as ISearchFormViewProps).cancelBtn}\r\n {renderTitle(searchSuggestionHeading, searchText)}\r\n \r\n \r\n \r\n {CategorySuggestionsComponent(categorySuggestionHeading, noResultText,\r\n props, isLoadingAutoSuggest, isLoadingNode)}\r\n {KeywordSuggestionsComponent(KeywordSuggest, UlKeyword, keywordsHeading, noResultText, autosuggestKeyword,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n {ProductSuggestionsComponent(ProductSuggest, UlProduct, props, autosuggestProduct,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n ) : null}\r\n }\r\n \r\n );\r\n};\r\nexport default SearchView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n buildStoreHours, IHoursDisplayInfo, ILocationHours, IStoreSelectorFoundLocationsMessage,\r\n IStoreSelectorLocationLineItemProps, IStoreSelectorLocationLineItemResources, IStoreSelectorViewProps, secondsToTime\r\n} from '@msdyn365-commerce-modules/store-selector';\r\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/dist/types/modules/store-selector/components/selected-store/selected-store';\r\nimport {\r\n getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, isMobile, Module, Node, TelemetryConstant,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { ContactInformationType, DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\r\n\r\n/**\r\n * PickUpMethodComponent View Props Interface.\r\n */\r\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\r\n pickUpStatesProps: IStoreSelectorViewProps;\r\n}\r\n\r\n/**\r\n * Found Locations Message component in Store Selector.\r\n * @param props - The component props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\r\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\r\n if (locations) {\r\n const storeCountMessage = preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n\r\n return (\r\n ${locations.length.toString()}`) : storeCountMessage\r\n .replace('{count}', `${locations.length.toString()}`)\r\n .replace('{radius}', `${searchRadius.toString()}`)}\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Build distance string.\r\n * @param distance - The distance.\r\n * @param preferredDistanceUnit - The preferred distance unit.\r\n * @param resources - The module resources.\r\n * @param isLocationDisabled - True if location is disabled.\r\n * @returns The distance string.\r\n */\r\nconst buildDistanceString = (distance: number | undefined, preferredDistanceUnit: string,\r\n resources: IStoreSelectorResources & IStoreSelectorResources, isLocationDisabled?: boolean): string | undefined => {\r\n const closeDistance: number = 1;\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < closeDistance) {\r\n const closeDistanceString: string = resources.closeDistanceString;\r\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\r\n }\r\n const distanceAsString: string = resources.distanceString;\r\n return distanceAsString.replace('{preferredDistanceUnit}', preferredDistanceUnit)\r\n .replace('{distance}', Math.floor(distance).toString());\r\n\r\n};\r\n\r\n/**\r\n * Extract phone number.\r\n * @param contacts - Contacts array.\r\n * @returns Phone number.\r\n */\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\r\n\r\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryPhoneContact) {\r\n return primaryPhoneContact.Locator;\r\n }\r\n\r\n return allPhoneContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Render Store Hours Day.\r\n * @param displayTime - Store Hours Information.\r\n * @param storeHoursDayPeriodString - The string for store hours day period.\r\n * @param storeHoursDayString - The string for store hours day period.\r\n * @returns JSX element with store hours day.\r\n */\r\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\r\n return (\r\n ${displayTime.startDayShort}`)\r\n .replace('{endDay}',\r\n `${displayTime.endDayShort}`) : storeHoursDayString\r\n .replace('{startDay}', `${displayTime.startDayShort}`)}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Render Store Hours.\r\n * @param storeHours - Store hours.\r\n * @param storeHoursList - Store hours list.\r\n * @param locationOpen - Location open.\r\n * @param resources - The module resources.\r\n * @returns JSX element with store hours.\r\n */\r\nconst renderStoreHours = (storeHours: StoreHours | undefined, storeHoursList: IHoursDisplayInfo[] | undefined,\r\n locationOpen: ILocationHours | undefined, resources: IStoreSelectorResources & IStoreSelectorResources): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day hours\r\n if (storeHours?.RegularStoreHours) {\r\n return (\r\n
    \r\n {storeHoursList?.map(displayTime => (\r\n
    \r\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\r\n
    \r\n {displayTime.timeRange}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n );\r\n }\r\n\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\r\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\r\n return (\r\n
    \r\n {(resources.storeHoursDayPeriod)\r\n .replace('{startDay}', storeOpenFrom)\r\n .replace('{endDay}', storeOpenTo)}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Match delivery options.\r\n * @param productDeliveryOptions - The list of product delivery options.\r\n * @param storePickUpOptionList - The list of store pick up options.\r\n * @returns Matched delivery option.\r\n */\r\nconst matchDeliveryOptions = (productDeliveryOptions: DeliveryOption[] | undefined, storePickUpOptionList: DeliveryOption[] | undefined): DeliveryOption[] => {\r\n if (!productDeliveryOptions) {\r\n return [] as DeliveryOption[];\r\n }\r\n return productDeliveryOptions\r\n .map(productDeliveryOption => (storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code)))\r\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\r\n};\r\n\r\n/**\r\n * PickUpMethod Resources Interface.\r\n */\r\nexport interface IPickUpMethodResources {\r\n selectStoreText: string;\r\n pickUpMethodLabel: string;\r\n pickUpOptionPlaceholder: string;\r\n pickupOptionDropdownError: string;\r\n pickupButtonAriaLabel: string;\r\n}\r\n\r\n/**\r\n * PickUp method dropdown component.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\r\n const {\r\n handlers,\r\n location,\r\n pickUpStatesProps,\r\n selectStoreText,\r\n pickUpMethodLabel,\r\n pickUpOptionPlaceholder,\r\n pickupOptionDropdownError,\r\n pickupButtonAriaLabel,\r\n productPickUpOptionList,\r\n storePickUpOptionList } = props;\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\r\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\r\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\r\n const [isError, setError] = React.useState(false);\r\n\r\n /**\r\n * Method to handle the store pickup option change.\r\n * @param event - Change Event.\r\n */\r\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\r\n event.preventDefault();\r\n selectStorePickUpOption(event.currentTarget.value);\r\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\r\n toggleDropdown(false);\r\n setError(false);\r\n }, []);\r\n\r\n /**\r\n * Method to render store location line pick up button.\r\n * @param filteredDeliveryMode - Filtered Delivery Mode.\r\n * @returns JSX Element.\r\n */\r\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\r\n return (\r\n filteredDeliveryMode !== undefined ?
    \r\n \r\n {filteredDeliveryMode.Description}\r\n \r\n
    : null\r\n );\r\n };\r\n\r\n /**\r\n * Method to handle the store pickup option submit.\r\n */\r\n const onClickHandler = React.useCallback(() => {\r\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\r\n handlers.onSelected(location, selectedStorePickUpOption);\r\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\r\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\r\n } else {\r\n toggleDropdown(false);\r\n setError(true);\r\n }\r\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\r\n\r\n const handleDropdownToggle = React.useCallback(() => {\r\n toggleDropdown(!isDropdownOpen);\r\n setError(false);\r\n }, [isDropdownOpen]);\r\n\r\n const filterDeliveryOption = deliveryOptionList.find((delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode);\r\n\r\n const pickupInStoreButtonText: string = selectStoreText;\r\n const filteredDeliveryMode: DeliveryOption | undefined = (pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined);\r\n return (\r\n \r\n
    \r\n {pickUpMethodLabel}\r\n
    \r\n {pickUpStatesProps.state.filteredPickupMode === undefined ?
    \r\n \r\n {currentStorePickUpOption}\r\n \r\n \r\n {deliveryOptionList.map((delivery: DeliveryOption) => (\r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n ))}\r\n \r\n
    \r\n {pickupOptionDropdownError}\r\n
    \r\n
    : renderLocationLinePickupButton(filteredDeliveryMode)}\r\n \r\n {pickupInStoreButtonText}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method to render store location line item.\r\n * @param locationLineItem - The Location Line item view props.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderStoreLocationLineItem = (locationLineItem: IStoreSelectorLocationLineItemProps,\r\n props: IStoreSelectorViewProps & IStoreSelectorProps) => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n hideStockStatus,\r\n index,\r\n isInStock,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n location,\r\n resources,\r\n storeHours,\r\n storeHoursList,\r\n stockStatusLabel,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n storeLocatorView,\r\n telemetryContent } = locationLineItem;\r\n const storeName = location.OrgUnitName;\r\n const distanceAsString: string | undefined = buildDistanceString(location.Distance,\r\n locationLineItem.preferredDistanceUnit, props.resources, locationLineItem.isLocationDisabled);\r\n const storeAddress: string | undefined = location.Address;\r\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\r\n const stockText: string | undefined = (hideStockStatus) ? undefined : stockStatus;\r\n\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n\r\n /**\r\n * Method to handle the change for preferred store.\r\n * @returns Void.\r\n */\r\n const onSetPreferredStoreClickHandler = () => () => {\r\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\r\n };\r\n\r\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n
    \r\n
    \r\n {storeLocatorView && \r\n {index}\r\n }\r\n \r\n {storeName}\r\n \r\n {distanceAsString ? \r\n {distanceAsString}\r\n : false}\r\n
    \r\n
    \r\n
    \r\n

    \r\n {locationLineItem.resources.contactInfoHeader}\r\n

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

    \r\n {locationLineItem.resources.storeHoursHeader}\r\n

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

    \r\n {resources.availabilityInfoHeader}\r\n

    \r\n {stockText &&

    \r\n {stockText}\r\n

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

    \r\n {resources.currentLocation}\r\n

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

    \r\n {storeSelectorViewProps.resources.contactText}\r\n

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

    \r\n {storeSelectorViewProps.resources.timeText}\r\n

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

    \r\n {productAvailability}\r\n

    \r\n {stockStatus &&

    \r\n {stockStatus}\r\n

    }\r\n
    \r\n }\r\n
    \r\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\r\n { canSelectPickUpMethod }\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Store Selector View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorViewComponent: React.FC> = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\r\n const { BodyContainerProps, storeResultContainerProps, FooterContainerProps, HeaderContainerProps, HeaderProps, ModuleProps,\r\n locationsMessage,\r\n search,\r\n state,\r\n spinner,\r\n maps,\r\n locationsList,\r\n noLocationsMessage,\r\n terms,\r\n storeDetailsModal,\r\n selectedLocation,\r\n bodyWrapperProps,\r\n data,\r\n context } = props;\r\n const offSetTopHeight = 250;\r\n const parentClientHeight = 50;\r\n const selectedLocationReference = React.useRef(null);\r\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\r\n\r\n const isDesktopViewport = React.useCallback(() => {\r\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\r\n const isDesktopPorts = (portView === 'md') || (portView === 'xl') || (portView === 'lg');\r\n setIsDesktopPort(isDesktopPorts);\r\n }, [context]);\r\n\r\n React.useEffect(() => {\r\n if (props.locationsList) {\r\n /**\r\n * Method to handle scrollling.\r\n */\r\n const scrollIntoView = () => {\r\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\r\n if (selectedLocationDiv !== null) {\r\n const totalTopHeight = Number(selectedLocationDiv.offsetTop) + Number(selectedLocationDiv.clientHeight);\r\n const parent = selectedLocationDiv.parentElement?.parentElement;\r\n if (parent) {\r\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop - offSetTopHeight;\r\n } else if (totalTopHeight > Number(parent.scrollTop) + Number(parent.clientHeight)) {\r\n parent.scrollTop = totalTopHeight - Number(parent.clientHeight) - parentClientHeight;\r\n }\r\n }\r\n }\r\n };\r\n scrollIntoView();\r\n }\r\n }, [props.locationsList]);\r\n\r\n React.useEffect(() => {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('resize', isDesktopViewport);\r\n }\r\n isDesktopViewport();\r\n }, [isDesktopViewport]);\r\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\r\n\r\n const isDesktopView = (viewport === 'md' || viewport === 'lg' || viewport === 'xl');\r\n\r\n if (!isDesktopView || !isDesktopPort) {\r\n return (\r\n \r\n \r\n {HeaderProps}\r\n \r\n \r\n \r\n {locationsMessage && }\r\n {search}\r\n \r\n \r\n {state.isSearchInProgress ? spinner : <>\r\n {locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\r\n }\r\n \r\n {maps}\r\n \r\n \r\n {selectedLocation && renderSelectedStore(selectedLocation, props)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {terms}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {HeaderProps}\r\n \r\n \r\n \r\n {locationsMessage && }\r\n {search}\r\n {state.isSearchInProgress ? spinner : <>\r\n {locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\r\n }\r\n \r\n \r\n {maps}\r\n \r\n \r\n \r\n {terms}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default StoreSelectorViewComponent;\r\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 IPasswordResetVerificationButton {\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 PasswordResetVerificationButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetVerificationButton;\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 IPasswordResetVerificationErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationError;\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 IPasswordResetVerificationInputProps {\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 IPasswordResetVerificationInput {\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 PasswordResetVerificationInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange\n}) => (\n \n);\n\nexport default PasswordResetVerificationInput;\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 IPasswordResetVerificationLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetVerificationLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetVerificationLabel;\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 IPasswordResetVerificationLoadingIcon {\n className: string;\n}\n\nconst PasswordResetVerificationLoadingIcon: React.FC = ({ className }) => (\n
    \n);\n\nexport default PasswordResetVerificationLoadingIcon;\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 IPasswordResetVerificationLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetVerificationLoadingMessage: React.FC = ({ className, message }) => (\n
    {message}
    \n);\n\nexport default PasswordResetVerificationLoadingMessage;\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 IPasswordResetVerificationSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationSuccess;\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 PasswordResetVerificationButtonComponent from './components/password-reset-verification-button';\nimport PasswordResetVerificationErrorComponent from './components/password-reset-verification-error';\nimport PasswordResetVerificationInputComponent from './components/password-reset-verification-input';\nimport PasswordResetVerificationLabelComponent from './components/password-reset-verification-label';\nimport PasswordResetVerificationLoadingIconComponent from './components/password-reset-verification-loading-icon';\nimport PasswordResetVerificationLoadingMessageComponent from './components/password-reset-verification-loading-message';\nimport PasswordResetVerificationSuccessComponent from './components/password-reset-verification-success';\nimport { IPasswordResetVerificationConfig, IPasswordResetVerificationProps } from './password-reset-verification.props.autogenerated';\n\nexport interface IPasswordResetVerificationViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetVerificationItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationLocalAccount {\n localAccount: INodeProps;\n verificationControlWrapper: INodeProps;\n items: IPasswordResetVerificationItem[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationButtonsWrapper: INodeProps;\n verificationButtons: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetVerificationLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationViewProps {\n className: string;\n viewState: IPasswordResetVerificationViewState;\n loading: IPasswordResetVerificationLoading;\n passwordResetVerification: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetVerificationLocalAccount: IPasswordResetVerificationLocalAccount;\n}\n\n/**\n *\n * PasswordResetVerification component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordResetVerification extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset-verification';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetVerificationProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.templateVersion = '';\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: IPasswordResetVerificationProps,\n nextState: IPasswordResetVerificationViewState\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 passwordResetVerification: {\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 )\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 && (\n \n ),\n passwordResetVerificationLocalAccount: 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 // 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 _prePopulateData(): void {\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((obj: { ID: string; PAT: string }) => {\n if (obj.ID.toLowerCase() === 'email') {\n this.emailRegex = obj.PAT;\n } else if (obj.ID.toLowerCase() === 'emailverificationcontrol') {\n this.templateVersion = 'v2';\n }\n });\n if (!this.templateVersion) {\n this.templateVersion = 'v1';\n }\n }\n }\n\n private _updateErrorMessage(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: this.props.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(): IPasswordResetVerificationLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n items: [\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n )\n ],\n successMessage: [\n ,\n\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n \n ],\n verificationButtonsWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n verificationButtons: [\n ,\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\n private _renderInput(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): IPasswordResetVerificationItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n}\n\nexport default PasswordResetVerification;\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 IPasswordResetVerificationItem,\n IPasswordResetVerificationLoading,\n IPasswordResetVerificationLocalAccount,\n IPasswordResetVerificationViewProps\n} from './password-reset-verification';\n\nconst PasswordResetVerificationItem: 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 verificationControlWrapper,\n items,\n successMessage,\n errorMessage,\n verificationButtonsWrapper,\n verificationButtons,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n \n {items &&\n items.map((item: IPasswordResetVerificationItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {successMessage &&\n successMessage.map((message: React.ReactNode, index: number) => {\n return {message};\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {verificationButtons &&\n verificationButtons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \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};\n\nconst PasswordResetVerificationLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetVerificationView: React.FC = props => {\n const {\n passwordResetVerification,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n passwordResetVerificationLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetVerificationLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetVerificationView;\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 { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const { heading, subheading, countryList, actionLink } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n \n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal,\n closeButtonTabIndex: 1\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n return this.renderCountry(value);\n });\n\n return countryLinks;\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && (\n \n )}\n
    \n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\n
    \n \n );\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\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 { ICountryPickerViewProps } from './country-picker';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, isOboRequest, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\nimport React from 'react';\n\nimport { InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsHeaderData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\n invoiceOrderItem: string;\n invoiceOrderItems: string;\n invoiceIdLabel: string;\n invoicePlacedByLabel: string;\n invoiceAmountDueText: string;\n invoicePaymentDueDateText: string;\n}\n\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsHeaderResources;\n onError?(): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n return (\n
    \n
    {invoiceNumberText}
    \n
    \n
    \n
    \n
    \n
    \n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
    \n
    \n
    \n
    {orderDate}
    \n
    {invoiceOrderItemsText}
    \n
    \n
    \n
    \n
    \n
    {resources.invoiceAmountDueText}
    \n
    \n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
    \n
    {dueDateText}
    \n
    \n
    \n
    \n \n
    \n
    \n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
    \n {lines.map(line => {\n return (\n
    \n
    {line.label}
    \n
    \n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
    \n
    \n );\n })}\n
    \n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
    \n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
    {resources.invoiceProductColor.replace('{0}', product.ColorName!)}
    \n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
    {resources.invoiceProductSize.replace('{0}', product.SizeName!)}
    \n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
    {resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
    \n )}\n
    \n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n lg: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n xl: { q: 'w=315&h=315&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const fallbackImage = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
    \n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.ProductId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.ProductId, props.context.actionContext);\n }\n\n return (\n
    \n
    \n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
    \n \n {product.ProductName}\n \n
    \n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
    \n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
    \n
    \n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
    \n
    \n
    \n
    \n
    \n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
    \n
    \n );\n })}\n
    \n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.RecordId)?.PrimaryImageUrl\n };\n return productLine;\n });\n\n this.totalDiscount = invoiceDetails.TotalDiscount;\n this.subtotal = invoiceDetails.InvoiceSubtotal;\n this.totalCharges = invoiceDetails.TotalCharges;\n this.totalTax = invoiceDetails.TotalTaxAmount;\n this.totalAmount = invoice.TotalAmount;\n this.currencyCode = invoice.CurrencyCode;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\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 { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { InvoiceErrorComponent } from '@msdyn365-commerce-modules/invoice';\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InvoiceDetailsHeaderComponent } from './components/invoice-details-header';\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/invoice-details-payment-summary';\nimport { InvoiceDetailsProductsComponent } from './components/invoice-details-products';\nimport { InvoiceDetailsModel } from './helpers/invoice-data';\nimport { IInvoiceDetailsData } from './invoice-details.data';\nimport { IInvoiceDetailsProps } from './invoice-details.props.autogenerated';\n\nexport interface IInvoiceDetailsViewState {\n invoiceDetails?: InvoiceDetailsModel;\n payInvoiceErrorModalOpen?: boolean;\n}\n\nexport interface IInvoiceDetailsViewProps extends IInvoiceDetailsProps {\n moduleProps: IModuleProps;\n header: JSX.Element;\n products: JSX.Element;\n paymentDetails: JSX.Element;\n payInvoiceError?: JSX.Element;\n}\n\n/**\n * InvoiceDetails component.\n * @extends {React.PureComponent>}\n */\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\n private static readonly _className: string = 'msc-invoice-details';\n\n public constructor(props: IInvoiceDetailsProps) {\n super(props);\n\n this.state = {};\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n }\n\n public async componentDidMount(): Promise {\n const invoice = await this.props.data.invoice;\n const invoiceDetails = await this.props.data.invoiceDetails;\n\n const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\n\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\n\n this.setState({\n invoiceDetails: invoiceDetailsModel,\n payInvoiceErrorModalOpen: false\n });\n }\n\n public render(): JSX.Element | null {\n if (!this.state.invoiceDetails) {\n return null;\n }\n\n const header = this._renderHeader();\n const products = this._renderProducts();\n const paymentDetails = this._renderPaymentDetails();\n const payInvoiceError = this._renderInvoiceErrors();\n\n const props: IInvoiceDetailsViewProps = {\n ...(this.props as IInvoiceDetailsProps),\n moduleProps: {\n moduleProps: this.props,\n className: InvoiceDetails._className\n },\n header,\n products,\n paymentDetails,\n payInvoiceError\n };\n\n return this.props.renderView(props);\n }\n\n private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\n const productInputs = invoiceLines\n .filter(product => product.RecordId)\n .map(\n product =>\n new ProductInput(\n product.RecordId!,\n this.props.context.request.apiSettings,\n channelId,\n undefined,\n this.props.context.actionContext.requestContext\n )\n );\n return getSimpleProductsAction(productInputs, this.props.context.actionContext);\n }\n\n private _renderHeader(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _renderProducts(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n const { imageSettings } = this.props.config;\n return (\n \n );\n }\n\n private _renderPaymentDetails(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _onAddToCartFailed(): void {\n this.setState({ payInvoiceErrorModalOpen: true });\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({ payInvoiceErrorModalOpen: false });\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${InvoiceDetails._className}__errors`;\n\n return (\n \n );\n }\n}\n\nexport default InvoiceDetails;\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 { IInvoiceDetailsViewProps } from './invoice-details';\n\nexport const InvoiceDetailsView: React.FC = props => {\n const { header, products, paymentDetails, payInvoiceError } = props;\n\n return (\n \n {header}\n {products}\n {paymentDetails}\n {payInvoiceError}\n \n );\n};\n\nexport default InvoiceDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Alert, Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IInvoiceErrorProps extends IComponentProps {\n messageHeader?: string;\n errorMessage?: string;\n otherError?: string;\n showError: boolean;\n payInvoiceErrorModalOpen: boolean;\n\n errorDialogHeader: string;\n errorDialogBodyErrorTitle: string;\n errorDialogBodyErrorDescription: string;\n errorDialogFooterGoToCartButtonText: string;\n errorDialogFooterCancelButtonText: string;\n cartUrl: string;\n\n setPayInvoiceErrorModalClose(): void;\n}\n\nexport interface IInvoiceErrorComponent extends IComponent {}\n\nexport const InvoiceError: React.FC = ({\n messageHeader,\n errorMessage,\n otherError,\n showError,\n payInvoiceErrorModalOpen,\n errorDialogHeader,\n errorDialogBodyErrorTitle,\n errorDialogBodyErrorDescription,\n errorDialogFooterGoToCartButtonText,\n errorDialogFooterCancelButtonText,\n cartUrl,\n setPayInvoiceErrorModalClose\n}) => {\n const errorMessages: (string | undefined)[] = [];\n\n if (otherError) {\n errorMessages.push(otherError);\n } else {\n errorMessages.push(errorMessage);\n }\n\n const className = 'msc-pay-invoice-error-dialog';\n\n return (\n <>\n 0} color='danger' assertive aria-label={messageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
    \n {message}\n
    \n );\n })}\n
    \n \n \n {errorDialogHeader}\n \n \n
    \n
    {errorDialogBodyErrorTitle}
    \n
    {errorDialogBodyErrorDescription}
    \n
    \n
    \n \n \n {errorDialogFooterGoToCartButtonText}\n \n \n {errorDialogFooterCancelButtonText}\n \n \n
    \n \n );\n};\n\n// @ts-expect-error\nexport const InvoiceErrorComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'InvoiceError',\n { component: InvoiceError }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IInvoiceStatusResources } from '../helpers/invoice-status';\n\nexport interface IInvoicesFilterResources extends IInvoiceStatusResources {\n invoicesFilterShowAll: string;\n}\n\nexport interface IInvoicesFilterProps extends IComponentProps {\n className: string;\n disabled: boolean;\n\n resources: IInvoicesFilterResources;\n\n currentState: InvoicesFilterState;\n onFilterStateChanged(state: InvoicesFilterState): void;\n}\n\nexport enum InvoicesFilterState {\n ShowAll,\n Paid,\n PartiallyPaid,\n Unpaid\n}\n\nconst getInvoicesFilterStateResources = (filterState: InvoicesFilterState, resources: IInvoicesFilterResources): string => {\n switch (filterState) {\n case InvoicesFilterState.ShowAll:\n return resources.invoicesFilterShowAll;\n case InvoicesFilterState.Paid:\n return resources.invoiceStatusPaid;\n case InvoicesFilterState.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n case InvoicesFilterState.Unpaid:\n return resources.invoiceStatusUnpaid;\n default:\n throw new Error('Failed to retrieve resource description for unknown invoices filter state.');\n }\n};\n\n/**\n * On Click function.\n * @param onStateClick -Invoice filter state function.\n * @param filterState -Invoice filter state.\n * @returns Set Invoice filter state.\n */\nconst onClickHandler = (onStateClick: (filterState: InvoicesFilterState) => void, filterState: InvoicesFilterState) => () => {\n onStateClick(filterState);\n};\n\nconst renderFilterStateItem = (\n filterState: InvoicesFilterState,\n resources: IInvoicesFilterResources,\n className: string,\n onStateClick: (filterState: InvoicesFilterState) => void\n): React.ReactNode => {\n const stateStringRepresentation = InvoicesFilterState[filterState];\n\n return (\n \n );\n};\n\nconst InvoicesFilter: React.FC = (props: IInvoicesFilterProps) => {\n const popoverRef = React.createRef();\n const [popoverState, setPopoverState] = React.useState(false);\n const togglePopover = React.useCallback(() => {\n setPopoverState(!popoverState);\n }, [popoverState]);\n\n const [filterState, setFilterState] = React.useState(props.currentState);\n\n const onFilterStateClick = (clickedState: InvoicesFilterState) => {\n setFilterState(clickedState);\n setPopoverState(false);\n props.onFilterStateChanged(clickedState);\n };\n\n return (\n
    \n \n {getInvoicesFilterStateResources(filterState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(InvoicesFilterState).map(state => {\n return renderFilterStateItem(state, props.resources, props.className, onFilterStateClick);\n })}\n \n
    \n );\n};\n\nexport const InvoicesFilterComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesFilterProps\n>('InvoicesFilterComponent', { component: InvoicesFilter });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\nexport interface IInvoicesTableHeaderResources {\n invoicesText: string;\n invoiceNumberText: string;\n invoiceDateMobileText: string;\n invoiceDateText: string;\n invoiceUsersText: string;\n invoiceAmountText: string;\n invoiceDueDateText: string;\n invoiceAmountDueText: string;\n invoiceStatusText: string;\n invoiceActionsText: string;\n invoiceListSelectAllRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isSelectedAll: boolean;\n isMobile: boolean;\n isAdmin: boolean;\n\n resources: IInvoicesTableHeaderResources;\n\n onSelectAll(isSelected: boolean): void;\n}\n\nexport interface IInvoicesTableHeaderComponent extends IComponent {}\n\nconst getDesktopHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoiceNumberText}\n {resources.invoiceDateText}\n {resources.invoiceUsersText}\n {resources.invoiceAmountText}\n {resources.invoiceDueDateText}\n {resources.invoiceAmountDueText}\n {resources.invoiceStatusText}\n {resources.invoiceActionsText}\n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoicesText}\n {resources.invoiceDateMobileText}\n \n {` `}\n {/* Actions */}\n \n );\n};\n\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\n const rowClassName = `${props.className}__row`;\n\n const switchCheckedState = () => {\n props.onSelectAll(!props.isSelectedAll);\n };\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\n } else {\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\n }\n\n return (\n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, {\n IComponent,\n IComponentProps,\n ICoreContext,\n IDateFormatOptions,\n isOboRequest,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject\n) => () => {\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n \n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n \n {formatDate(props.context, invoice.dueDate)}\n \n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n \n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nlet setShowPreviousActions: React.Dispatch> | undefined;\n\n/**\n * On Click view details function.\n * @param linkToInvoiceDetails -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\n if (MsDyn365.isBrowser) {\n window.location.href = linkToInvoiceDetails;\n }\n return;\n};\n\n/**\n * Toggle function.\n * @param isShowActions -Link to invoice details.\n * @param setShowActions -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\n const shouldShowActions = !isShowActions;\n if (shouldShowActions) {\n if (setShowPreviousActions) {\n setShowPreviousActions(false);\n }\n setShowActions(shouldShowActions);\n setShowPreviousActions = setShowActions;\n } else {\n setShowPreviousActions = undefined;\n setShowActions(shouldShowActions);\n }\n};\n\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\n const {\n resources: {\n invoiceViewDetailsButtonAriaLabel,\n invoiceViewDetailsButtonText,\n invoiceActionsButtonTextAriaLabel,\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel\n },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n return (\n
    \n \n {showActions && !isOnBehalfOfRequest && (\n
    \n \n {invoiceViewDetailsButtonText}\n \n \n \n
    \n )}\n
    \n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n
    \n {invoice.customerName}\n \n \n {formatDate(props.context, invoice.dueDate)}\n
    \n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\n const {\n data: { invoice }\n } = props;\n\n const onSelectLine = () => {\n invoice.isSelected = !invoice.isSelected;\n props.onChange();\n };\n\n let rowCells: JSX.Element;\n if (props.isMobile) {\n rowCells = getMobileRowCells(props, onSelectLine);\n } else {\n rowCells = getDesktopRowCells(props, onSelectLine);\n }\n\n return {rowCells};\n};\n\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableRowComponent\n>('InvoicesTableRowComponent', { component: InvoicesTableRow });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../helpers/invoice-data';\nimport { IInvoiceErrorState } from '../../invoices-list';\nimport { IInvoicesTableHeaderResources, InvoicesTableHeaderComponent } from './components/invoices-table-header-component';\nimport { IInvoicesTableRowResources, InvoicesTableRowComponent } from './components/invoices-table-row-component';\n\ninterface IInvoicesTableData {\n invoices: InvoiceModel[];\n customer: Customer;\n}\n\nexport interface IInvoicesTableResources extends IInvoicesTableHeaderResources, IInvoicesTableRowResources {}\n\nexport interface IInvoicesTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n invoiceButtonReferences?: React.RefObject[];\n payInvoiceButtonReferences?: React.RefObject[];\n resources: IInvoicesTableResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableComponent extends IComponent {}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst getViewport = (context: ICoreContext): GridSize => {\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (window?.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n};\n\nconst isMobileView = (context: ICoreContext) => {\n const viewport = getViewport(context);\n return viewport === 'xs' || viewport === 'sm';\n};\n\n/**\n * On select all function.\n * @param props -Invoice table props.\n * @returns On change.\n */\nconst onSelectAllHandler = (props: IInvoicesTableProps) => (isSelected: boolean) => {\n props.data.invoices.forEach(invoice => {\n invoice.isSelected = isSelected;\n });\n props.onChange();\n};\n\nconst InvoicesTable: React.FC = (props: IInvoicesTableProps): JSX.Element => {\n const [isMobile, setIsMobile] = useState(isMobileView(props.context));\n\n const updateViewport = () => {\n setIsMobile(isMobileView(props.context));\n };\n\n if (typeof window !== undefined && window.addEventListener) {\n window.addEventListener('resize', updateViewport);\n }\n const rowClassName = `${props.className}__row`;\n const headerClassName = `${props.className}__header`;\n\n return (\n \n invoice.isSelected)}\n isMobile={isMobile}\n isAdmin={props.data.customer.IsB2bAdmin || false}\n onSelectAll={onSelectAllHandler(props)}\n resources={props.resources}\n data={{}}\n />\n {props.data.invoices.map((invoice, index: number) => {\n return (\n \n );\n })}\n
    \n );\n};\n\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableComponent\n>('InvoicesTableComponent', { component: InvoicesTable });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\ninterface IMakePaymentData {\n invoices: InvoiceModel[];\n}\n\nexport interface IMakePaymentResources {\n makePaymentButtonText: string;\n makePaymentButtonAriaLabel: string;\n}\n\nexport interface IMakePaymentProps extends IComponentProps {\n context: ICoreContext;\n itemKey?: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n telemetryContent?: ITelemetryContent;\n navigationUrl?: string;\n buttonReferences?: React.RefObject;\n resources: IMakePaymentResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IMakePaymentComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IMakePaymentProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.buttonReferences);\n }\n setDisabled(false);\n };\n\n await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\n};\n\nconst MakePaymentComponentActions = {\n onClick\n};\n\n/**\n * On Click function.\n * @param input -Make payment props.\n * @param setDisabled -Set Disabled.\n * @returns Make payment component on click.\n */\nconst onClickHandler = (input: IMakePaymentProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await MakePaymentComponentActions.onClick(event, input, setDisabled);\n};\n\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\n const {\n data: { invoices }\n } = input;\n const hasInvoices = ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid));\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {input.resources.makePaymentButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'MakePayment',\n { component: MakePayment }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IPayableInvoice } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\nexport interface IPayInvoiceData {\n invoice: IPayableInvoice;\n}\n\nexport interface IPayInvoiceResources {\n payInvoiceButtonText: string;\n payInvoiceButtonAriaLabel: string;\n}\n\nexport interface IPayInvoiceProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n reference?: React.RefObject;\n resources: IPayInvoiceResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\ninterface IPayInvoiceComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IPayInvoiceProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.reference);\n }\n setDisabled(false);\n };\n\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\n};\n\nconst PayInvoiceComponentActions = {\n onClick\n};\n\n/**\n * On click handler function.\n * @param props -Invoice props.\n * @param setDisabled -Set disabled.\n * @returns Pay invoice component action.\n */\nconst onClickHandler = (props: IPayInvoiceProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await PayInvoiceComponentActions.onClick(event, props, setDisabled);\n};\n\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {props.resources.payInvoiceButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'PayInvoiceComponent',\n { component: PayInvoice, ...PayInvoiceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IRequestInvoiceButtonProps {\n innerReference?: React.RefObject;\n className: string;\n requestInvoiceButtonLabel: string;\n onClicked(): void;\n}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\n requestInvoiceButtonLabel,\n innerReference\n}) => {\n return (\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 { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IPayableInvoice {\n readonly id: string;\n readonly canBePaid: boolean;\n}\n\n/**\n * Represents invoice data model.\n */\nexport class InvoiceModel implements IPayableInvoice {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public amount?: number;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public currencyCode?: string;\n\n public isSelected: boolean;\n\n public constructor(invoice: OrderInvoice) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerAccountNumber = invoice.CustomerAccountNumber;\n this.customerName = invoice.CustomerName;\n this.amount = invoice.TotalAmount;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.currencyCode = invoice.CurrencyCode;\n\n this.isSelected = false;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IInvoiceStatusResources {\n invoiceStatusNone: string;\n invoiceStatusUnpaid: string;\n invoiceStatusPartiallyPaid: string;\n invoiceStatusPaid: string;\n}\n\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\n switch (invoiceStatus) {\n case InvoicePaidStatus.None:\n return resources.invoiceStatusNone;\n\n case InvoicePaidStatus.Unpaid:\n return resources.invoiceStatusUnpaid;\n\n case InvoicePaidStatus.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n\n case InvoicePaidStatus.Paid:\n return resources.invoiceStatusPaid;\n default:\n return '';\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, IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IInvoiceErrorState } from '../invoices-list';\nimport { IPayableInvoice } from './invoice-data';\n\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\nexport interface IAddInvoicesToCartFailureResult {\n failureReason: ICartActionFailureReason;\n}\n\nexport const payInvoices = async (\n invoices: IPayableInvoice[],\n actionContext: IActionContext,\n onError: (errorState: IInvoiceErrorState) => void\n) => {\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\n\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } });\n return;\n }\n\n const cartState = await getCartState(actionContext);\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\n\n if (result.status !== 'SUCCESS') {\n onError({\n errorMessage: '',\n errorReason: { failureReason: 'CARTACTIONFAILED' },\n otherError: result.errorDetails?.LocalizedMessage,\n errorCode: result.errorDetails?.ErrorResourceId\n });\n return;\n }\n\n const cartUrl = getUrlSync('cart', actionContext);\n if (cartUrl) {\n window?.location.assign(cartUrl);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\n/* ---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { IInvoicesListResources } from '../invoices-list.props.autogenerated';\n\ninterface IRequestInvoiceModalProps {\n className: string;\n email: string;\n isModalOpen: boolean;\n submitRequestLabel: string;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n cancelLabel: string;\n searchPlaceholderLabel: string;\n invoices: InvoiceModel[];\n invoicesFoundString: string;\n singleInvoiceFoundString: string;\n searchButtonAltText: string;\n resources: IInvoicesListResources;\n toggle(): void;\n onSubmitRequest(invoiceId: string): void;\n}\n\n/**\n * On submit request click function.\n * @param selectedInvoiceIndex -Check is busy.\n * @param onClosing -On closing function.\n * @param filteredInvoices -Invoice modal.\n * @param onSubmitRequest -On submit request function.\n * @returns Call on submit request.\n */\nconst onSubmitRequestClick = (\n onClosing: () => void,\n filteredInvoices: InvoiceModel[],\n onSubmitRequest: (invoiceId: string) => void,\n checkboxRef: React.MutableRefObject\n) => () => {\n const defaultIndex = 0;\n let closingFlag: number = 0;\n\n filteredInvoices.map((invoice, index) => {\n const inputInvoice = checkboxRef.current[Number(index)] as React.RefObject;\n if (inputInvoice.current?.checked === true && index >= defaultIndex) {\n onSubmitRequest(invoice.id);\n closingFlag = closingFlag + 1;\n }\n });\n if (closingFlag <= filteredInvoices.length) {\n onClosing();\n }\n};\n\n/**\n * On search input change function.\n * @param setSearchInput -Set search input.\n * @returns Set search input function.\n */\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (\n event: React.ChangeEvent\n) => {\n setSearchInput(event.target.value);\n};\n\n/**\n * Search entered handler.\n * @param invoices -InvoiceModel.\n * @param searchInput -String.\n * @param setFilteredInvoices -InvoiceModel action.\n * @param filteredInvoices -Filtered Invoices.\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\n * @param setShouldShowSearchResults -Show search result action.\n * @param setInvoiceOptions -Invoice options action.\n * @param selectedInvoiceIndex -Selected invoice index.\n * @param className -String.\n * @returns Set invoice options.\n */\nconst searchEnteredHandler = (\n invoices: InvoiceModel[],\n searchInput: string,\n setFilteredInvoices: React.Dispatch>,\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: React.Dispatch>,\n setShouldShowSearchResults: React.Dispatch>,\n setInvoiceOptions: React.Dispatch>,\n selectedInvoiceIndex: number,\n className: string,\n checkboxRef: React.MutableRefObject\n) => () => {\n let updatedInvoices = filteredInvoices;\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\n updatedInvoices = invoices.filter(invoice => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\n } else {\n updatedInvoices = invoices;\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(\n renderInvoiceOptions(\n StringExtensions.isNullOrEmpty(searchInput) ? invoices : updatedInvoices,\n setSelectedInvoiceIndex,\n className,\n checkboxRef\n )\n );\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
    \n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
    \n \n \n
    \n );\n })}\n
    \n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
    \n \n
    \n {email}\n
    \n
    \n {shouldShowSearchResults && (\n
    \n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
    \n )}\n
    \n \n \n
    \n {invoiceOptions}\n
    \n
    \n
    \n \n \n {submitRequestLabel}\n \n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, isOboRequest } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\nimport { RequestInvoiceButton } from './components/request-invoice-button';\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\nimport { InvoiceModel } from './helpers/invoice-data';\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\nimport { IInvoicesListData } from './invoices-list.data';\nimport { IInvoicesListProps } from './invoices-list.props.autogenerated';\n\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\n\nexport interface IInvoicesListViewProps extends IInvoicesListProps {\n moduleProps: IModuleProps;\n\n header: JSX.Element;\n filter: JSX.Element;\n content?: JSX.Element;\n invoiceRequestModal?: JSX.Element;\n pagination?: JSX.Element;\n}\n\nexport interface IInvoiceErrorState {\n errorHost?: InvoiceErrorHost;\n errorReason?: IAddInvoicesToCartFailureResult;\n errorMessage: string;\n otherError?: string;\n errorCode?: string;\n}\n\nexport interface IInvoicesListState {\n invoices: InvoiceModel[];\n invoicesFilterState: InvoicesFilterState;\n errorState: IInvoiceErrorState;\n isInvoiceRequestModalOpen: boolean;\n isLoading: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\nclass InvoicesList extends React.Component, IInvoicesListState> {\n private readonly _className: string = 'msc-invoices-list';\n\n private readonly payInvoiceRequestReference: React.RefObject;\n\n private readonly makePaymentReference: React.RefObject;\n\n private buttonChildReference: React.RefObject[] = [];\n\n private buttonChildPayButtonReference: React.RefObject[] = [];\n\n private readonly _queryResultSettings: IQueryResultSettings;\n\n constructor(props: IInvoicesListProps) {\n super(props);\n\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\n this.props.context.request,\n this.props.config as IQueryResultSettingsModuleConfig\n ).QueryResultSettings;\n this.payInvoiceRequestReference = React.createRef();\n this.makePaymentReference = React.createRef();\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\n this._requestInvoice = this._requestInvoice.bind(this);\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n this.state = {\n invoices: [],\n invoicesFilterState: InvoicesFilterState.ShowAll,\n isLoading: true,\n isPageLoaded: false,\n errorState: { errorMessage: '' },\n isInvoiceRequestModalOpen: false,\n payInvoiceErrorModalOpen: false,\n selectedButtonElement: null\n };\n }\n\n public shouldComponentUpdate(nextProps: IInvoicesListProps, nextState: IInvoicesListState): 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 },\n context: {\n request: { channel },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n data: { customerBalance },\n resources: { invoicesListTitle, invoicesListDescTitle, invoicesListDescCount }\n } = this.props;\n\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\n\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
    \n \n
    \n
    {invoicesListDescTitle}
    \n
    {amountText}
    \n
    {countText}
    \n
    \n
    \n );\n\n const viewProps: IInvoicesListViewProps = {\n ...(this.props as IInvoicesListProps),\n moduleProps: {\n moduleProps: this.props,\n className: classnames(this._className, className)\n },\n header,\n invoiceRequestModal: this._renderInvoiceRequestModal(),\n filter: this._renderInvoicesFilter(this._className),\n pagination: this._renderPagination()\n };\n\n if (!this.state.isPageLoaded) {\n return this.props.renderView(viewProps);\n }\n\n if (ArrayExtensions.hasElements(this.state.invoices)) {\n viewProps.content = this._renderListContainer();\n } else {\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public async componentDidMount(): Promise {\n await this.props.data.customer;\n const invoicesData = await this.props.data.invoices;\n this._initializeWithInvoices(invoicesData);\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
    \n
    {this.props.resources.invoiceEmptyInvoiceLinesTitle}
    \n
    {this.props.resources.invoiceEmptyInvoiceLinesDescription}
    \n
    \n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
    \n
    \n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n const isOnBehalfOfRequest = isOboRequest(this.props.context.request);\n\n return (\n
    \n
    \n {this._renderMakePayment(containerHeaderClass, isOnBehalfOfRequest)}\n {this._renderInvoiceRequestButton()}\n
    \n
    {this._renderInvoiceErrors()}
    \n
    {this._renderInvoicesList(containerContentClass)}
    \n
    \n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const filterClassName = `${className}__filter`;\n return (\n \n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string, disabled: boolean): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderPagination(): JSX.Element | undefined {\n const { data, resources } = this.props;\n const invoices = data?.invoices?.result;\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\n return undefined;\n }\n\n return (\n \n {resources.invoicesLoadMore}\n \n );\n }\n\n private async _loadMoreInvoices(): Promise {\n this.setState({ isLoading: true });\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\n }\n const newInvoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._addInvoices(newInvoices);\n }\n\n private _renderInvoiceRequestModal(): JSX.Element {\n const customer = this.props.data.customer.result;\n const {\n invoiceRequestModalCancelLabel,\n invoiceRequestModalSubmitLabel,\n invoiceRequestModalHeaderLabel,\n invoiceRequestModalSendToEmailLabel,\n invoiceRequestModalSearch,\n invoiceRequestModalInvoiceSearchDisplay,\n invoiceRequestModalSingleInvoiceSearchDisplay,\n invoiceRequestModalSearchButton\n } = this.props.resources;\n\n return (\n \n );\n }\n\n private _onToggleInvoiceRequestModal(): void {\n this.setState({\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\n });\n if (this.state.isInvoiceRequestModalOpen) {\n this.state.selectedButtonElement?.focus();\n }\n }\n\n /**\n * Request specific invoice function.\n */\n private readonly _onToggleInvoiceRequestParentModal = () => {\n this.setState(\n {\n selectedButtonElement: this.payInvoiceRequestReference.current\n },\n () => {\n this._onToggleInvoiceRequestModal();\n }\n );\n };\n\n private _renderInvoiceRequestButton(): JSX.Element | null {\n const { invoiceRequestButtonLabel } = this.props.resources;\n const customer = this.props.data.customer.result;\n\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _requestInvoice(invoiceId: string): void {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n\n BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(context, b2bUserId, invoiceId, BusinessPartnerOperationDeliveryType.Email);\n\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\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 { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\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\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 { 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\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 retrun 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 * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\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 /* 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

    {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
    \n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\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 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 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 } from './components/selected-store/selected-store';\nimport { IStoreSelectorViewProps } from './store-selector';\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n}\n\nexport default Subscribe;\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 { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n salesAgreementPricePrompt?: string;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const {\n cartLabel,\n cartQtyLabel,\n data: { cart }\n } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n
    \n
    \n {qtyLabel}\n
    \n
    \n );\n});\n\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n // @ts-expect-error -- Compatible issue with the component override.\n ICartIconComponent\n>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\n\nexport default CartIconComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\n\n/**\n * Interface for OrderTemplateImage.\n */\ninterface IOrderTemplateImage {\n props: {\n children: React.ReactElement[];\n };\n}\n\n/**\n * To render order template.\n * @param orderTemplate - The order template view props.\n * @param orderTemplateNodeProps - The order template node props.\n * @returns The JSX Element.\n */\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\n const currentImageListLength = orderTemplateImageElement.props.children.length;\n const defaultNumberImagesInTile = 4;\n\n if (currentImageListLength < defaultNumberImagesInTile) {\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\n orderTemplateImageElement.props.children.push();\n }\n }\n\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\n/**\n * Order Template List View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nexport const OrderTemplateListViewComponent: React.FC> = props => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n OrderTemplateList,\n OrderTemplates,\n OrderTemplate,\n status,\n statusMessage,\n heading,\n orderTemplates,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n \n {status === 'SUCCESS' && (!OrderTemplates || !orderTemplates || !ArrayExtensions.hasElements(orderTemplates)) ? (\n
    \n

    {props.resources.headingForEmptyOrderTemplateList}

    \n

    {props.resources.textForEmptyOrderTemplateList}

    \n {createOrderTemplateButton}\n
    \n ) : (\n createOrderTemplateButton\n )}\n {templateHeaderStatusMessage}\n
    \n {status !== 'SUCCESS' && statusMessage}\n {OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) && (\n \n {orderTemplates.map(orderTemplate => {\n return renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n
    \n );\n};\n\nexport default OrderTemplateListViewComponent;\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 { ContactInformationType, DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } 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\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 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 * 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 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 && (\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 {pickupInStoreButtonText}\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 {pickupInStoreButtonText}\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"],"names":["Aaa_b2c_order_history","React","constructor","props","super","getRequestOrderList","async","response","getRequestOrderHistoryB2CAsync","callerContext","this","context","actionContext","queryResultSettings","RequestOrder","mappedRequestOrder","customerInfo","handleMouseEnterEvent","index","setState","mouseOverIndex","handleMouseOutEvent","handlePageItemsChange","totalItemPerPage","activePage","pageCount","currentPageItems","state","searchPageItems","length","Math","ceil","requestOrderLines","getEndOrderIndexInPage","getStartOrderIndexInPage","push","handleOnChangeInput","searchString","toLowerCase","getOrderDetailPageUrl","requestId","lineNum","request","orderDetailUrl","url","requestUrl","origin","sitePath","window","location","href","config","redirectToOrderDetailUrl","searchItems","filter","f","b2BCUSTOMERNAME","includes","console","log","resetItems","headers","AccountNumber","products","isLoading","data","customerInformation","result","requestOrders","mappedProducts","requestOrder","RequestOrderId","imageUrl","LowResImageURL","stockistName","orderNumber","totalPrice","B2CPrice","toLocaleString","orderLinesPriceInfo","parseData","JSON","parse","RequestOrderLines","_forEach","orderLine","name","DetailName","price","snapShotId","Snapshotid","statusName","StatusName","LineNum","toString","render","viewProps","_objectSpread","renderView","style","pagination","marginRight","marginBottom","a","color","float","padding","textDecoration","transition","border","cursor","active","backgroundColor","hover","disabled","searchInput","height","width","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","cropFocalRegion","className","type","placeholder","value","onChange","event","target","Button","title","onClick","key","map","line","Image","requestContext","altText","productName","src","fallBackSrc","fallbackImage","gridSettings","imageSettings","loadFailureBehavior","marginTop","orderLinePriceInfo","disabledWrapper","Array","p","onMouseEnter","onMouseLeave","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","Node","Object","assign","CategorySuggest","UlCategory","text","MobileAutoSuggestEmptyComponent","noSearchResultImage","renderProductNotFoundResultsImage","resources","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","form","searchForm","formWrapper","isMobile","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","cancelBtnAriaLabel","cancelBtn","input","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","items","item","_item$id","LiProduct","id","AProduct","thumbnail","tag","renderTitle","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","format","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","label","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","useEffect","propsFormInput","propsFormInputCurrent","ref","current","action","isMobileViewport","useCallback","isMobileView","variant","VariantType","Browser","addEventListener","viewport","StringExtensions","isNullOrEmpty","Module","isSearchFormExpanded","StoreSelectorFoundLocationsMessageComponent","locations","searchRadius","isSeeAllStore","preferredDistanceUnit","storeCountMessage","milesShortText","storeCountMessageInKm","RichTextComponent","storeAllCountMessage","replace","extractPhoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","ContactInformationType","Phone","IsPrivate","ArrayExtensions","hasElements","primaryPhoneContact","find","IsPrimary","Locator","renderStoreHours","storeHours","storeHoursList","locationOpen","RegularStoreHours","displayTime","stringify","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","endDayShort","startDayFull","startDayShort","endDayFull","storeHoursDayPeriod","storeHoursDay","timeRange","storeOpenFrom","openFrom","storeOpenTo","openTo","matchDeliveryOptions","productDeliveryOptions","storePickUpOptionList","productDeliveryOption","delivery","Code","PickUpMethodDropdownComponent","handlers","pickUpStatesProps","selectStoreText","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","productPickUpOptionList","deliveryOptionList","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","onChangeHandler","preventDefault","currentTarget","dataset","description","onClickHandler","undefined","filteredPickupMode","onSelected","handleDropdownToggle","filterDeliveryOption","pickupInStoreButtonText","filteredDeliveryMode","classnames","role","Description","renderLocationLinePickupButton","renderStoreLocationLineItem","locationLineItem","hideStockStatus","isInStock","preferredStoreLocationId","isPreferredStoreEnabled","stockStatusLabel","storeLocatorView","telemetryContent","storeName","OrgUnitName","distanceAsString","buildDistanceString","distance","isLocationDisabled","closeDistanceString","distanceString","floor","Distance","storeAddress","Address","phoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockText","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","isPreferredStore","OrgUnitNumber","contentAction","etext","PreferredStore","preferredStoreAttribute","getTelemetryAttributes","RemovePreferredStore","removePreferredStoreAttribute","contactInfoHeader","storeHoursHeader","availabilityInfoHeader","preferredStoreAriaLabel","onRemovePreferredStore","preferredStoreText","setAsPreferredStoreTextAriaLabel","onSetAsPreferredStore","setAsPreferredStoreText","renderStoreLocations","selectedLocationReference","_props$data$storeSele","_props$locationListPr","show","storeSelectorStateManager","listMapViewState","displayList","locationListProps","store","renderStoreLocation","isCurrentLocation","orgUnitLocation","selectedStoreLocationId","canSelectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","selectLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","attributes","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","selected","Number","parseInt","onKeyDown","currentLocation","renderSelectedStore","selectedLocationProps","storeSelectorViewProps","_selectedStore$OrgUni","_selectedStore$OrgUni2","_selectedStore$OrgUni3","_selectedStore$OrgUni4","_selectedStore$StoreH","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_selectedStore$OrgUni7","_selectedStore$OrgUni8","_selectedStore$OrgUni9","_selectedStore$OrgUni10","_selectedStore$OrgUni11","_storeSelectorViewPro","_storeSelectorViewPro2","_storeSelectorViewPro3","_storeSelectorViewPro4","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","preferredStoreButton","removePreferredStoreButton","selectedStore","OrgUnitAvailability","OrgUnitLocation","StoreHours","buildStoreHours","contactText","timeText","availabilityText","closedText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreAriaFormatText","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","secondsToTime","OpenFrom","OpenTo","storeNameValue","getTelemetryObject","telemetryPageName","friendlyName","telemetry","orgUnitNumber","deliveryOptions","DeliveryOptions","selectedLocation","_data$storeSelectorSt2","_data$storeSelectorSt3","BodyContainerProps","storeResultContainerProps","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","locationsMessage","search","spinner","maps","locationsList","noLocationsMessage","terms","storeDetailsModal","bodyWrapperProps","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","selectedLocationDiv","_selectedLocationDiv$","totalTopHeight","offsetTop","clientHeight","parent","parentElement","scrollTop","MsDyn365","isBrowser","_data$storeSelectorSt","isSearchInProgress","displayMap","_ref","ariaLabel","message","errorClassName","GetMaxLength","maxLength","parsedMaxLength","isNaN","pattern","forId","htmlFor","successClassName","PasswordResetVerification","moduleClassName","handleHeadingChange","heading","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","isInitialized","getValue","v1Value","v2Value","templateVersion","emailRegex","EmailRegex","defaultRegex","source","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","viewState","isShowLoading","passwordResetVerification","moduleProps","loading","modal","Modal","isOpen","modalBody","ModalBody","icon","PasswordResetVerificationLoadingIconComponent","PasswordResetVerificationLoadingMessageComponent","loadingMessage","defaultAADConainer","display","aadConainer","Msdyn365","editProps","onEdit","passwordResetVerificationLocalAccount","_renderLocalAccount","obj","ID","PAT","verifying_blurb","localAccount","verificationControlWrapper","_renderInput","emailAddressLabelText","verificationCodeLabelText","successMessage","PasswordResetVerificationSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","errorMessage","PasswordResetVerificationErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","verificationButtonsWrapper","verificationButtons","PasswordResetVerificationButtonComponent","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","buttonsWrapper","buttons","continueButtonAriaLabel","continueButtonText","cancelButtonAriaLabel","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","labelText","cssClassName","wrapper","PasswordResetVerificationLabelComponent","PasswordResetVerificationInputComponent","__decorate","observable","observer","PasswordResetVerificationItem","PasswordResetVerificationLoading","_ref3","_ref2","error","button","LocalAccount","CountryPicker","_telemetryContent","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","isModalOpen","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","set","baseUrl","isCookieValueSet","get","_heading$tag","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","handleTextChange","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","tabIndex","stayOnCurrentSiteButtonText","viewprops","modalContainer","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","link","renderCountryList","stayOnCurrentSiteButton","handleLinkTextChange","_this$props$config$ac","linkText","linkUrl","destinationUrl","_link$linkText","editableLink","openInNewTab","additionalProperties","onTelemetryClick","onTextChange","localeItems","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","imageSize","image","imageProps","displayString","shouldSkipToMainImage","displaySubString","countryPickerView","country","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","date","invoiceDate","cultureFormatter","formatDate","year","month","day","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","isOboRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","currencyCode","formatCurrency","amountDue","PayInvoiceComponent","typeName","invoice","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","product","quantity","Quantity","productUrl","ProductName","ProductId","getProductPageUrlSync","RecordId","_renderProductImage","getFallbackImageUrl","ItemId","apiSettings","primaryImageUrl","_renderProductDimensions","isNullOrWhitespace","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","Id","InvoiceDate","Date","CustomerName","InvoiceDueDate","AmountBalance","status","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","CurrencyCode","InvoicePaidStatus","Paid","InvoiceDetails","_onAddToCartFailed","bind","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","arguments","productInputs","ProductInput","getSimpleProductsAction","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","otherError","errorMessages","Alert","assertive","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","setShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","isSelected","rowCells","getMobileRowCells","invoiceRowArialabel","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","customer","isCurrentUser","customerAccountNumber","invoiceCurrentUser","_window","device","Type","innerWidth","sm","md","getViewport","onSelectAllHandler","invoices","forEach","InvoicesTableComponent","updateViewport","headerClassName","all","isAdmin","IsB2bAdmin","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","_event","setDisabled","payInvoices","errorState","buttonReferences","MakePaymentComponent","hasInvoices","canBePaid","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","errorCode","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","i","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","RequestInvoiceModal","email","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","_focusElement$current","focus","searchEntered","searchEnteredHandler","updatedInvoices","toLocaleUpperCase","searchResultString","invoicesFoundReplaceIndex","indexOf","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isPageLoaded","isInvoiceRequestModalOpen","_customerBalance$resu","_customerBalance$resu2","_heading$text","channel","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","Heading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","_renderPagination","content","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","_addInvoices","newInvoices","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","BusinessPartnerId","getCustomer","GetCustomerInput","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","tableClassName","newErrorState","_newErrorState$errorR","errorHost","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleId","moduleTypeName","navigationUrl","_this$state$selectedB","invoiceErrorMessageHeader","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","Email","_this$state$selectedB2","invoiceId","_this$props$data$b2bU","_this$props$data$b2bU2","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","specificInvoice","InvoiceListView","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","deliveryCode","getAttribute","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","StoreSelectorLocationLines","_scrollIntoView","selectedLocationRef","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","_availabilityWithHour","_availabilityWithHour2","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","storeCounter","previousProps","_stores","_sortStores","reaction","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","StoreSelectorLocationLineItemComponent","ItemAvailabilities","onLocationSelected","productPickUpDeliveryOptions","shouldShowIndex","stores","_value$OrgUnitAvailab","_value$OrgUnitAvailab2","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","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","autoComplete","onSubmit","searchInputAriaLabel","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","StoreSelectorFoundLocationsMessage","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","seconds","hours","ampm","divisorForMinutes","getShortTimeString","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","deliveryMode","onPickupInStoreClickHandler","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","productdeliveryOptions","deliveryOption","pickup","_delivery","stockLabel","preferredStoreAttributes","removePreferredStoreAttributes","renderPickupModes","_props$selectedStore","_props$selectedStore$","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","_props$selectedStore5","_props$selectedStore6","_props$selectedStore7","_props$selectedStore8","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","shouldHideStockStatus","parentClassName","pickUpDeliveryOptionButton","pickupModes","StoreSelector","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeLocations","selectedStoreResources","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","_location$OrgUnitPick2","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","_preferredStore$OrgUn4","_preferredStore$OrgUn5","_preferredStore$OrgUn6","storeId","mode","_store$OrgUnitAvailab3","_store$OrgUnitAvailab4","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","_closeDialog","_storeSelectorStateMa","_storeSelectorStateMa2","_storeSelectorStateMa3","parentElementRef","closeDialog","_setOrgUnitStoreInformation","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","setOrgUnitStoreInformation","catch","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","warning","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_isInStock$OrgUnitAva2","_this$props$data$stor7","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$context$a","_this$props$context$a2","_this$props$context$a3","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","_this$props$data$stor6","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor8","_this$props$data$stor9","_this$props$context$a4","_this$props$data$stor10","when","_this$props$data$stor11","_this$props$data$stor12","_this$props$data$stor13","_this$props$data$stor14","isSameContext","_storeSelectorStateMa4","_storeSelectorStateMa5","_storeSelectorStateMa6","_sortLocation","_storeSelectorStateMa7","_storeSelectorStateMa8","_storeSelectorStateMa9","_storeSelectorStateMa10","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","mapSlot","isMobileDevice","Viewport","isInlineView","isLocatorView","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","_getStoreLocationListProps","hasMapSlot","dialogClassName","classname","onClosed","mapContainerProps","outOfStockThreshold","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab5","selectedStoreLocation","lineResources","_store$OrgUnitAvailab6","renderDeliveryOptions","renderBody","Subscribe","paragraph","_emailAddressInputRef","subscribeParagraph","subscribeHeading","handleText","subscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","emailInput","subscribeFormEmailAriaLabel","subscribeEmailPlaceholderText","submitButton","subscribeFormSubmitAriaLabel","subscribeButtonLabel","submitButtonLabelText","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","totalItemsInCart","qtyLabel","visibility","CartIconComponent","createComponentOverride","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","removeButton","orderTemplateName","orderTemplateImageElement","currentImageListLength","children","offset","getBoundingClientRect","totalHeight","top"],"sourceRoot":""}