{"version":3,"file":"static/js/6.df09961a42bd2d5cb99f.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.tsx?12c8","webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.view.tsx?638f","webpack://Msdyn365.Commerce.Online/./src/modules/map-custom/map-custom.tsx?7be2","webpack://Msdyn365.Commerce.Online/./src/modules/map-custom/map-custom.view.tsx?fdae","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/checkout-delivery-options.view.tsx?3e8c","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/checkout.view.tsx?ea45","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-confirmation.view.tsx?31ca","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-history.view.tsx?1eff","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/product-specification.view.tsx?ddc2","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/search.view.tsx?3a76","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/sign-in.view.tsx?a0ea","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-button.tsx?e1d9","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-error.tsx?7f8a","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-input.tsx?5bbe","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-label.tsx?4988","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.tsx?13a2","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.view.tsx?e2f8","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/search-bar.tsx?63c1","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/data-grid.tsx?ddec","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/business-partner-users-table.tsx?c677","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/business-partners-table.tsx?8b1d","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/business-partners.tsx?57a6","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/business-partners.view.tsx?b34e","webpack://Msdyn365.Commerce.Online/./src/common/waiting.tsx?8095","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IGenericPopupProps } from './generic-popup.props.autogenerated';\r\n\r\nimport classnames from 'classnames';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface IGenericPopupState {\r\n popupVisible: boolean;\r\n recallVisible: boolean;\r\n}\r\n\r\nexport interface IGenericPopupViewProps extends IGenericPopupProps<{}>, IGenericPopupState {\r\n onDismissRecall(): void;\r\n onDismissPopup(): void;\r\n handleTextRecall(): void;\r\n classNamePopup: string;\r\n classNameRecall: string;\r\n}\r\n\r\n/**\r\n *\r\n * GenericPopup component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass GenericPopup extends React.PureComponent, IGenericPopupState> {\r\n public state: IGenericPopupState = {\r\n popupVisible: false,\r\n recallVisible: false\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n // const { closeButtonAriaLabel, closeButtonLabel } = this.props.resources;\r\n const { className } = this.props.config;\r\n const { popupVisible, recallVisible } = this.state;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n classNamePopup: classnames('venchi_popup'),\r\n classNameRecall: classnames('venchi-recall', 'slide-in', className),\r\n popupVisible, // State data\r\n recallVisible, // State data\r\n onDismissRecall: this._onDismissRecall, // Methods\r\n onDismissPopup: this._onDismissPopup, // Methods\r\n handleTextRecall: this._displayPopupNow\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly _onDismissRecall = (): void => {\r\n this.createCookieRecall();\r\n this.setState({ recallVisible: false });\r\n };\r\n\r\n private readonly _onDismissPopup = (): void => {\r\n if (this.props.config.recallEnabled || false) {\r\n switch (this.props.config.recallShowAfterPopup) {\r\n case 'afterPopup':\r\n setTimeout(this._displayRecallNow, 3000);\r\n break;\r\n case 'afterPageReload':\r\n default:\r\n break;\r\n }\r\n }\r\n this.setState({\r\n popupVisible: false\r\n });\r\n };\r\n\r\n private readonly _displayRecallNow = (): void => {\r\n this.setState({\r\n popupVisible: false,\r\n recallVisible: true\r\n });\r\n };\r\n\r\n private readonly _displayPopupNow = (): void => {\r\n if (this.props.config.cookieCheckbox) {\r\n this.createCookie();\r\n }\r\n this.setState({\r\n popupVisible: true,\r\n recallVisible: false\r\n });\r\n };\r\n\r\n public async componentDidMount() {\r\n const cookie = new Cookies();\r\n if (this.props.config.hidePopupIfCookieIsSet) {\r\n if (!cookie.get(`${this.props.config.modalId}-shown`)) {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n } else {\r\n if (this.props.config.recallEnabled && !cookie.get(`${this.props.config.modalId}-recall-hidden`)) {\r\n setTimeout(this._displayRecallNow, 1000 * (this.props.config.delayRecall || 0));\r\n }\r\n }\r\n } else {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n }\r\n }\r\n\r\n private createCookie() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.expireDays >= 1) {\r\n var date = new Date();\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n // @ts-ignore\r\n date.setDate(date.getDate() + (this.props.config.expireDays || 0));\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-shown`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-shown`, true);\r\n }\r\n }\r\n\r\n private createCookieRecall() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.recallDismissableForDays >= 1) {\r\n var date = new Date();\r\n // @ts-ignore\r\n date.setDate(\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n date.getDate() + (this.props.config.recallDismissableForDays || 0)\r\n );\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true);\r\n }\r\n }\r\n}\r\n\r\nexport default GenericPopup;\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 { IGenericPopupViewProps } from './generic-popup';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst GenericPopupView: React.FC = props => {\r\n const {\r\n slots,\r\n popupVisible,\r\n recallVisible,\r\n classNamePopup,\r\n classNameRecall,\r\n onDismissRecall,\r\n onDismissPopup,\r\n handleTextRecall\r\n } = props;\r\n const { modalId, recallDismissable, modalHeader, recallText } = props.config;\r\n const { closeButtonAriaLabel, closeButtonLabel } = props.resources;\r\n\r\n React.useEffect(() => {\r\n if (popupVisible) {\r\n //@ts-ignore\r\n const label = props.config.modalName || 'Generic';\r\n window.dataLayer.push({\r\n event: 'gaEvent',\r\n eventCategory: 'Popup',\r\n eventAction: 'Displayed',\r\n eventLabel: label\r\n });\r\n }\r\n }, [popupVisible]);\r\n\r\n const handleClose = React.useCallback(() => {\r\n const popupElement = document.querySelector('.venchi_popup');\r\n const form = popupElement?.getElementsByTagName('form');\r\n\r\n if (form?.length && popupVisible) {\r\n const label = props.config.modalName;\r\n window.dataLayer.push({\r\n event: 'gaEvent',\r\n eventCategory: 'Popup',\r\n eventAction: 'click_close',\r\n eventLabel: label\r\n });\r\n }\r\n onDismissPopup();\r\n }, [onDismissPopup, popupVisible, props]);\r\n\r\n return (\r\n <>\r\n \r\n {modalHeader}\r\n
\r\n \r\n
\r\n
{slots.content}
\r\n
\r\n
\r\n
\r\n
\r\n {recallVisible ? (\r\n
\r\n \r\n {recallDismissable ? (\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\nexport default GenericPopupView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n// tslint:disable:no-reference\r\n/// \r\n\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions/dist/types/utilities/full-org-unit-availability';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport classname from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IMapCustomData } from './map-custom.data';\r\nimport { IMapCustomProps, IPushpinOptionsData } from './map-custom.props.autogenerated';\r\n\r\nexport interface IHeader {\r\n headerProps: INodeProps;\r\n heading: React.ReactNode;\r\n}\r\n\r\nexport interface IMapViewProps extends IMapCustomProps {\r\n ModuleProps: IModuleProps;\r\n Header: IHeader;\r\n MapProps: INodeProps;\r\n Map: Microsoft.Maps.Map | undefined;\r\n}\r\n\r\n/**\r\n *\r\n * Map component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass Map extends React.Component> {\r\n @observable public map: Microsoft.Maps.Map | undefined;\r\n private mapRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IMapCustomProps) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n }\r\n } = this.props;\r\n\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\r\n });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n () => {\r\n this._initMap();\r\n }\r\n );\r\n\r\n reaction(\r\n () => {\r\n return [\r\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\r\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n this.map\r\n ];\r\n },\r\n async () => {\r\n if (!this.props.data.storeSelectorStateManager.result?.context?.isDialog) {\r\n this._updateMap();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { heading, className },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const displayMap = storeSelectorStateManager?.listMapViewState?.displayMap;\r\n\r\n const viewProps: IMapViewProps = {\r\n ...this.props,\r\n ModuleProps: {\r\n tag: 'div',\r\n moduleProps: this.props,\r\n className: classname('ms-map', { show: displayMap }, className)\r\n },\r\n Header: {\r\n headerProps: { className: 'ms-map__header' },\r\n heading: heading && heading.text && (\r\n \r\n )\r\n },\r\n MapProps: {\r\n tag: 'div',\r\n className: 'ms-map__body',\r\n ref: this.mapRef\r\n },\r\n Map: this.map\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\r\n\r\n private _initMap = () => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\r\n credentials: channel?.BingMapsApiKey,\r\n pushpinAccessible: true\r\n });\r\n }\r\n };\r\n\r\n private _updateMap = () => {\r\n // const pushpinOptions = this.props.config.pushpinOptions;\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\r\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n\r\n if (this.map && orgUnitStoreInformation) {\r\n let mapLocation: OrgUnitLocation | undefined;\r\n this.map.entities.clear();\r\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\r\n\r\n orgUnitStoreInformation.map((unitStoreInfo: IFullOrgUnitAvailability, index: number) => {\r\n const storeLocation = unitStoreInfo?.OrgUnitAvailability?.OrgUnitLocation;\r\n\r\n if (storeLocation?.Latitude && storeLocation.Longitude) {\r\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\r\n // tslint:disable-next-line:no-shadowed-variable\r\n const pushpinOptions = {\r\n color: storeLocation.OrgUnitName && storeLocation.OrgUnitName.startsWith('R ') ? '#5f8798' : '#8c7760',\r\n selectionColor: storeLocation.OrgUnitName && storeLocation.OrgUnitName.startsWith('R ') ? '#004f71' : '#542D00',\r\n showIndex: true,\r\n size: 1.5\r\n };\r\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\r\n const pushpin = new Microsoft.Maps.Pushpin(\r\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\r\n options\r\n );\r\n\r\n Microsoft.Maps.Events.addHandler(\r\n pushpin,\r\n 'click',\r\n () =>\r\n storeLocation.OrgUnitNumber &&\r\n storeSelectorStateManager?.setSelectedStoreLocationId(storeLocation.OrgUnitNumber)\r\n );\r\n\r\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\r\n\r\n if (isSelectedLocation) {\r\n mapLocation = storeLocation;\r\n }\r\n }\r\n });\r\n\r\n if (mapLocation) {\r\n const currLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\r\n this.map.setView({ center: currLocation });\r\n } else {\r\n // Create a LocationRect from array of pushpins and set the map view.\r\n this.map.setView({\r\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\r\n });\r\n }\r\n\r\n this.map.setOptions({ pushpinAccessible: true });\r\n this.map?.entities.push(pushpins);\r\n }\r\n };\r\n\r\n private _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\r\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\r\n\r\n const size = pushpinOptions?.size || 1;\r\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\r\n const icon = this._getSvgIcon(size, color, text);\r\n\r\n return {\r\n // fallback if icon doesn't render properly\r\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\r\n icon: icon\r\n };\r\n };\r\n\r\n private _getSvgIcon = (size: number, color?: string, text?: string) => {\r\n return `\r\n \r\n ${\r\n text\r\n ? `${text}`\r\n : ''\r\n }\r\n `;\r\n };\r\n}\r\n\r\nexport default Map;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeader, IMapViewProps } from './map-custom';\r\n\r\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\r\n\r\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\r\n \r\n {Header && }\r\n \r\n \r\n);\r\n\r\nexport default MapView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionEdit,\r\n ICheckoutDeliveryOptionsError,\r\n ICheckoutDeliveryOptionsList,\r\n ICheckoutDeliveryOptionsViewProps\r\n} from '@msdyn365-commerce-modules/checkout/src/modules/checkout-delivery-options/./checkout-delivery-options';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ICheckoutDeliveryOptionsResources } from '../definition-extensions/checkout-delivery-options.ext.props.autogenerated';\r\n\r\nexport interface ICheckoutDeliveryOptionsListC extends ICheckoutDeliveryOptionsList {\r\n resources: ICheckoutDeliveryOptionsResources;\r\n}\r\nexport interface ICheckoutDeliveryOptionsViewPropsC extends ICheckoutDeliveryOptionsViewProps {\r\n resources: ICheckoutDeliveryOptionsResources;\r\n}\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list, resources }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n Array.from(document.getElementsByClassName('ms-checkout-delivery-options__description')).forEach(el => {\r\n const deliveryOption = el.textContent;\r\n if (deliveryOption) {\r\n const position = deliveryOption?.indexOf('(');\r\n if (position > 0) {\r\n const output = [deliveryOption.slice(0, position), '
', deliveryOption.slice(position)].join('');\r\n // tslint:disable-next-line:no-inner-html\r\n el.innerHTML = output;\r\n }\r\n }\r\n });\r\n const pickUpList:\r\n | { code: string; radioButton: React.ReactNode; description: string; price: React.ReactNode }[]\r\n | ICheckoutDeliveryOptionEdit[] = [];\r\n // @ts-ignore\r\n\r\n return (\r\n \r\n

{resources.courierDeliveryTitle}

\r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n if (deliveryOption.code !== '04') {\r\n return (\r\n \r\n {deliveryOption.radioButton}\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n \r\n );\r\n } else {\r\n // @ts-ignore\r\n pickUpList.push(deliveryOption);\r\n return;\r\n }\r\n })}\r\n {pickUpList.length > 0 && (\r\n <>\r\n

Pick Up in store

\r\n {/* @ts-ignore */}\r\n \r\n {pickUpList[0]?.radioButton}\r\n {pickUpList[0]?.description}\r\n {pickUpList[0]?.price}\r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({ Error, title, message }) => {\r\n return (\r\n \r\n {title}\r\n {message}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionSelected,\r\n errorMessage,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton,\r\n resources\r\n } = props;\r\n // @ts-ignore\r\n const extraTextField = props.config.paragraph;\r\n const extraText = extraTextField && ;\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {extraText}\r\n {viewState.isLoading && waiting}\r\n {viewState.isError && errorMessage && }\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n ICheckoutViewProps,\r\n IEmailDelivery,\r\n ILineItem,\r\n ILineItemDeliveryGroup,\r\n ILineItems,\r\n IOrderSummary,\r\n IPickUpAtStore\r\n} from '@msdyn365-commerce-modules/checkout';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { ICheckoutResources as ICheckoutResourcesExt } from '../definition-extensions/checkout.ext.props.autogenerated';\r\n\r\nimport * as React from 'react';\r\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => {label};\r\n\r\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => {\r\n return (\r\n \r\n {item}\r\n {pickUpAtStore && }\r\n {emailDelivery && }\r\n \r\n );\r\n};\r\n\r\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\r\n \r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({\r\n LineItemDeliveryGroup,\r\n LineItemList,\r\n heading,\r\n lineItems,\r\n lineItemWraper,\r\n lineItemWraperIcon\r\n}) => (\r\n \r\n {lineItemWraperIcon}\r\n {lineItemWraper}\r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const LineItemsComponent: React.FC = ({\r\n LineItems,\r\n Header,\r\n heading,\r\n editLink,\r\n itemsForPickup,\r\n itemsForShip,\r\n itemsForEmail,\r\n itemsGroupWithMulitplePickupMode\r\n}) => (\r\n \r\n \r\n {heading}\r\n {editLink}\r\n \r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\r\n {itemsGroupWithMulitplePickupMode !== undefined\r\n ? itemsGroupWithMulitplePickupMode.map((item, index) => {\r\n return ;\r\n })\r\n : null}\r\n \r\n);\r\n\r\nconst OrderSummaryComponent: React.FC = ({ heading, lines, ...other }) => {\r\n // if(other.locale !== 'en-US' && lines && lines.shipping && lines.shipping.props && lines.shipping.props.price && lines.subtotal && lines.subtotal.props && lines.subtotal.props.price) {\r\n // @ts-ignore\r\n if (other.locale !== 'en-US' && lines && lines.shipping && lines.shipping.props && lines.subtotal && lines.subtotal.props) {\r\n // @ts-ignore\r\n lines.shipping.props.price = other.shippingPrice;\r\n // @ts-ignore\r\n lines.subtotal.props.price = other.subTotalAmount;\r\n }\r\n // @ts-ignore\r\n if (other.locale !== 'en-US' && lines && lines.totalDiscounts && lines.totalDiscounts.props && lines.totalDiscounts.props.price) {\r\n // @ts-ignore\r\n lines.totalDiscounts.props.price = other.discountAmount;\r\n }\r\n return (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.subtotal}\r\n {lines.shipping}\r\n {lines.otherCharge}\r\n {lines.tax}\r\n {lines.totalDiscounts}\r\n {lines.loyalty}\r\n {lines.giftCard}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\ninterface ICheckoutViewPropsExt extends ICheckoutViewProps {\r\n resources: ICheckoutResourcesExt;\r\n}\r\n// tslint:disable-next-line:max-func-body-length\r\nconst CheckoutView: React.FC = props => {\r\n const {\r\n canShow,\r\n checkoutProps,\r\n headerProps,\r\n hasSalesOrder,\r\n bodyProps,\r\n mainProps,\r\n mainControlProps,\r\n sideProps,\r\n sideControlFirstProps,\r\n sideControlSecondProps,\r\n termsAndConditionsProps,\r\n orderConfirmation,\r\n loading,\r\n alert,\r\n title,\r\n guidedForm,\r\n orderSummary,\r\n lineItems,\r\n placeOrderButton,\r\n termsAndConditions,\r\n keepShoppingButton\r\n } = props;\r\n const locale = props.checkoutProps.moduleProps.context.request.locale;\r\n const subTotalAmount = props?.data?.checkout?.result?.checkoutCart?.cart?.SubtotalSalesAmount;\r\n const totalAmount = props?.data?.checkout?.result?.checkoutCart?.cart?.TotalAmount;\r\n const discountAmount = props?.data?.checkout?.result?.checkoutCart?.cart?.DiscountAmount;\r\n const shippingPrice = totalAmount && subTotalAmount ? (totalAmount - subTotalAmount).toFixed(2) : '';\r\n const extraOrdersSummaryEu = {\r\n subTotalAmount: subTotalAmount,\r\n totalAmount: totalAmount,\r\n shippingPrice: shippingPrice,\r\n discountAmount: discountAmount,\r\n locale: locale\r\n };\r\n const [greeting, setGreeting] = React.useState({\r\n status: false,\r\n greetingMessageCAP: '',\r\n greetingSignCAP: ''\r\n });\r\n const getCartProps = async () => {\r\n const currentCartState = await getCartState(props.context?.actionContext);\r\n // prettier-ignore\r\n // @ts-ignore\r\n const extPropsToRemove = currentCartState?.cart?.ExtensionProperties?.filter((fieldVal: { Key: string }) => fieldVal.Key === 'ExtPropsRemove_CAP')[0]?.Value?.BooleanValue;\r\n // prettier-ignore\r\n if(extPropsToRemove) {\r\n const extKeysToRemove = ['ActiveCartId_CAP','CheckoutCartId_CAP','GreetingMessage_CAP','GreetingSign_CAP','billing','Type_CAP','Country_CAP','City_CAP','ZipCode_CAP','OrgName_CAP',\r\n 'VatNum_CAP','FiscalCode_CAP','PEC_CAP','SDI_CAP','InvoiceCustAccount_CAP','Street_CAP','StreetNumber_CAP','FirstName_CAP','LastName_CAP'];\r\n\r\n const removeExtProps = async () => {\r\n const extProps = currentCartState?.cart?.ExtensionProperties;\r\n const extPropsToEmpty = [];\r\n if (extProps) {\r\n for (const prop of extKeysToRemove) {\r\n if (!Object.keys(extProps).includes(prop)) {\r\n extPropsToEmpty.push({\r\n Key: prop,\r\n Value: {}\r\n });\r\n }\r\n }\r\n extPropsToEmpty.push({\r\n Key: 'ExtPropsRemove_CAP',\r\n Value: {\r\n BooleanValue: false\r\n }\r\n });\r\n }\r\n await currentCartState.updateExtensionProperties({ newExtensionProperties: extPropsToEmpty });\r\n };\r\n void removeExtProps();\r\n } else {\r\n // prettier-ignore\r\n // @ts-ignore\r\n const greetingMessageCAP = currentCartState?.cart?.ExtensionProperties?.filter((greetingVal: { Key: string }) => greetingVal.Key === 'GreetingMessage_CAP')[0]?.Value?.StringValue;\r\n // prettier-ignore\r\n // @ts-ignore\r\n const greetingSignCAP = currentCartState?.cart?.ExtensionProperties?.filter((greetingVal: { Key: string }) => greetingVal.Key === 'GreetingSign_CAP')[0]?.Value?.StringValue;\r\n setGreeting({\r\n status:\r\n (greetingMessageCAP !== null && greetingMessageCAP !== undefined && greetingMessageCAP !== '') ||\r\n (greetingSignCAP !== null && greetingSignCAP !== undefined && greetingSignCAP !== ''),\r\n greetingMessageCAP: greetingMessageCAP !== undefined ? greetingMessageCAP : '',\r\n greetingSignCAP: greetingSignCAP !== undefined ? greetingSignCAP : ''\r\n });\r\n }\r\n\r\n // necessary for BE _CAP table\r\n const checkoutResult = props?.data?.checkout?.result;\r\n const cartResult = currentCartState;\r\n\r\n const dataCompiledCc = [\r\n {\r\n Key: 'ActiveCartId_CAP',\r\n Value: { StringValue: cartResult.cart.Id }\r\n },\r\n {\r\n Key: 'CheckoutCartId_CAP',\r\n Value: { StringValue: checkoutResult?.checkoutCart.cart.Id }\r\n }\r\n ];\r\n await checkoutResult?.updateExtensionProperties({ newExtensionProperties: dataCompiledCc });\r\n await cartResult.updateExtensionProperties({ newExtensionProperties: dataCompiledCc });\r\n };\r\n\r\n React.useEffect(() => {\r\n if (canShow) {\r\n void getCartProps();\r\n }\r\n }, [canShow]);\r\n return (\r\n \r\n {!hasSalesOrder && {title}}\r\n {!hasSalesOrder && (\r\n \r\n {loading}\r\n {alert}\r\n {canShow && (\r\n
\r\n
\r\n \r\n {guidedForm}\r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n
\r\n
\r\n \r\n {orderSummary && }\r\n \r\n {termsAndConditions}\r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n {greeting.status ? (\r\n
\r\n

\r\n \r\n {props.resources.greetingTitle}\r\n

\r\n
\r\n
\r\n {' '}\r\n {greeting.greetingMessageCAP}\r\n
\r\n
\r\n {greeting.greetingSignCAP}\r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n {/* tslint:disable-next-line:react-a11y-anchors */}\r\n

\r\n \r\n {props.resources.addGreetingText}\r\n \r\n

\r\n
\r\n )}\r\n
\r\n {/* tslint:disable-next-line:react-a11y-anchors */}\r\n

\r\n \r\n {props.resources.insertModifyYourPromoCode}\r\n \r\n

\r\n
\r\n\r\n {lineItems && }\r\n\r\n \r\n {termsAndConditions}\r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n {hasSalesOrder && orderConfirmation}\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-sales-line';\r\nimport { IOrderConfirmationViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/./order-confirmation';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IHelp,\r\n IOrderSummary,\r\n IPaymentMethods\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n receiptEmail,\r\n createdDate,\r\n channelReferenceId\r\n}) => (\r\n \r\n {createdDate}\r\n {channelReferenceId}\r\n {receiptEmail}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n {salesLine}\r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo,\r\n pickupDateTimeslot\r\n}) => (\r\n \r\n {heading}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {delivery && delivery.shippingItemsToYou}\r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = ({\r\n orderSummaryProps,\r\n heading,\r\n subtotal,\r\n shipping,\r\n tax,\r\n totalAmount,\r\n earnedPoints,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n if (other.locale !== 'en-US' && other.subTotalAmount) {\r\n // @ts-ignore\r\n subtotal.props.value = other.subTotalAmount;\r\n // @ts-ignore\r\n if (other.shippingAmount) {\r\n // @ts-ignore\r\n shipping.props.value = other.shippingAmount;\r\n }\r\n }\r\n return (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n );\r\n};\r\n\r\nexport const OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderConfirmationView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n data,\r\n slots\r\n}) => {\r\n const updateExtProps = async (modprops: IModuleProps) => {\r\n const currentCartState = await getCartState(modprops.moduleProps.context?.actionContext);\r\n const cartLines = currentCartState?.cart?.CartLines;\r\n if (!cartLines || (cartLines && cartLines.length === 0)) {\r\n console.log(currentCartState?.cart?.CartLines?.length);\r\n const removeExtProps = [\r\n {\r\n Key: 'ExtPropsRemove_CAP',\r\n Value: {\r\n BooleanValue: true\r\n }\r\n }\r\n ];\r\n await currentCartState.updateExtensionProperties({ newExtensionProperties: removeExtProps });\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n void updateExtProps(moduleProps);\r\n }, []);\r\n const locale = moduleProps.moduleProps.context.request.locale;\r\n // @ts-ignore\r\n const salseOrderData = moduleProps?.moduleProps?.data?.orderHydration?.result?.salesOrder;\r\n const grossAmount = salseOrderData?.GrossAmount;\r\n const chargeAmount = salseOrderData?.ShippingChargeAmount;\r\n const subTotalAmount = grossAmount && chargeAmount ? (grossAmount - chargeAmount).toFixed(2) : '';\r\n const extraOrdersSummaryEu = {\r\n subTotalAmount: subTotalAmount,\r\n shippingAmount: chargeAmount,\r\n locale: locale\r\n };\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {backToShoppingLink}\r\n {groups && }\r\n {payment && }\r\n {orderSummary && }\r\n {help && }\r\n {slots &&\r\n slots.commisionJunction &&\r\n React.cloneElement(slots.commisionJunction[0] as React.ReactElement, {\r\n salesOrder: data.orderHydration.result?.salesOrder\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHeader,\r\n IList,\r\n IOrderHistoryViewProps,\r\n IOrderInformation,\r\n ISalesOrder\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo\r\n}) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n {salesLine.salesLine}\r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => {\r\n // @ts-ignore\r\n const dataPrice = orderInfomation.amount !== null ? orderInfomation.amount.props.data.price.CustomerContextualPrice : 0;\r\n const orderType = dataPrice < 0 ? 'order--return' : 'order--default';\r\n return (\r\n \r\n {orderInfomation && }\r\n {console.log(orderInfomation)}\r\n {groups && }\r\n {orderDetailsLink}\r\n \r\n );\r\n};\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n <>\r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image, IImageData } from '@msdyn365-commerce/core';\r\n// import { StockCountJournalsDataActions } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n IProductSpecificationProps as IProductSpecificationExtensionProps,\r\n IProductSpecificationConfig as IProductSpecificationExtensionConfig,\r\n IReassuranceItemsData as IReassuranceItemsExtensionData\r\n} from '../definition-extensions/product-specification.ext.props.autogenerated';\r\nimport * as React from 'react';\r\n// import axios from 'axios';\r\ninterface NutritionalData {\r\n label: string;\r\n qty1Label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n subcategory: NutritionalSubcategoryData[];\r\n}\r\n\r\ninterface NutritionalSubcategoryData {\r\n label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n}\r\n\r\n/* interface ProductLabel {\r\n label: string;\r\n imgLink: string;\r\n} */\r\n\r\ninterface ReassuranceShowType {\r\n title: string;\r\n description: string;\r\n image: IImageData;\r\n}\r\n\r\nconst ProductSpecificationView: React.FC &\r\n IProductSpecificationExtensionConfig> = props => {\r\n const { ProductSpecification, productSpecificationResult } = props;\r\n const tags = ['Gluten free', 'Palm oil free', 'Vegan friendly', 'Light'];\r\n const specificationsList = ['Product description', /* 'Nutritional Values', */ 'Nutritional Values JSON', 'Ingredients'];\r\n const ingredientsAllAttributesList = ['Ingredients', 'Ingredients 2', 'Ingredients 3'];\r\n const labels = props.resources;\r\n // @ts-ignore\r\n const pTags = [];\r\n // @ts-ignore\r\n const pSpecifications = [];\r\n // @ts-ignore\r\n const ingredientsArray = [];\r\n var ingredientsString = '';\r\n\r\n const temporaryDisabled = true;\r\n\r\n const reassuranceItems: ReassuranceShowType[] =\r\n props?.config?.reassuranceItems?.map((reassurance: IReassuranceItemsExtensionData) => ({\r\n title: reassurance.reassuranceTitle,\r\n description: reassurance.reassuranceDescription,\r\n image: reassurance.reassuranceImage\r\n })) ?? [];\r\n\r\n const isProductAccordionOpened = props?.config?.productDescriptionAccordionOpened ?? false;\r\n\r\n const [accordionsState, setAccordionsState] = React.useState(isProductAccordionOpened ? 'Productdescription' : '');\r\n // const [fetchingLabels, setFetchingLabels] = React.useState(false);\r\n /* const [productLabels, setProductLabels] = React.useState(\r\n [{\r\n label: labels['product_specification_title_emea_label'] ?? \"EMEA label\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_emea_warnings'] ?? \"EMEA warnings\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_fda_label'] ?? \"FDA label\",\r\n imgLink: ''\r\n }]) */\r\n\r\n productSpecificationResult?.map(row => {\r\n const itemHtml = row?.props.cellData.props.dangerouslySetInnerHTML;\r\n if (row !== null && tags.includes(row.props.productName) && itemHtml !== undefined && itemHtml.__html === 'Yes') {\r\n pTags.push(row);\r\n }\r\n });\r\n productSpecificationResult?.map(row => {\r\n if (\r\n row !== null &&\r\n specificationsList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n pSpecifications.push(row);\r\n }\r\n if (\r\n row !== null &&\r\n ingredientsAllAttributesList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n ingredientsArray.push(row);\r\n }\r\n });\r\n // @ts-ignore\r\n const productSku = props.data.product.result?.ItemId;\r\n // @ts-ignore\r\n const productPrimaryImageUrl = props.data.product.result?.PrimaryImageUrl;\r\n\r\n // @ts-ignore\r\n ingredientsArray.map(row => {\r\n ingredientsString += row.props.cellData.props.dangerouslySetInnerHTML.__html || '';\r\n });\r\n\r\n const accordionOnClick = (accordion: string): void => {\r\n const accStates = accordionsState.split(',');\r\n if (accStates.includes(accordion)) {\r\n // setAccordionsState(accStates.filter(acc=>acc!==accordion).join(','));\r\n setAccordionsState('');\r\n } else {\r\n // setAccordionsState([...accStates, accordion].join(','));\r\n setAccordionsState(accordion);\r\n }\r\n };\r\n\r\n const isAccordionExpanded = (accordion: string): boolean => {\r\n const accStates = accordionsState.split(',');\r\n return accStates.includes(accordion);\r\n };\r\n\r\n const _renderNutritionalValues = (jData: any): JSX.Element => {\r\n // const jData = JSON.parse(data);\r\n return (\r\n
\r\n {jData.map((row: NutritionalData) => (\r\n <>\r\n
\r\n
{labels[row.label] ?? ''}
\r\n
\r\n
{labels[row.qty1Label] ?? ''}
\r\n
{row.qty1Value ?? ''}
\r\n
{row.qty1Unit ?? ''}
\r\n
\r\n {row.subcategory &&\r\n row.subcategory.map((subRow: NutritionalSubcategoryData) => (\r\n
\r\n
{labels[subRow.label] ?? ''}
\r\n
\r\n
{subRow.qty1Value ?? ''}
\r\n
{subRow.qty1Unit ?? ''}
\r\n
\r\n ))}\r\n \r\n ))}\r\n
\r\n );\r\n };\r\n\r\n /* const _renderProductLabels = (productLabels: ProductLabel[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_product_labels'] ?? 'Product labels';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {productLabels.filter(label => label.imgLink !== '').map((row: ProductLabel) => (\r\n
\r\n
\r\n {row.label}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n } */\r\n\r\n const _renderReassurance = (reassuranceItems: ReassuranceShowType[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_reassurance'] ?? 'Shipments and Returns';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {reassuranceItems.map((row: ReassuranceShowType, index: number) => {\r\n const isLast = index === reassuranceItems.length - 1;\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {row.title}\r\n {row.description}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n React.useEffect(() => {\r\n /* if (!fetchingLabels) {\r\n setFetchingLabels(true);\r\n _getProductLabels(productSku, productPrimaryImageUrl).then((response: string[]) => {\r\n const newProductLabels = [...productLabels];\r\n productLabels.forEach((_, index: number) => {\r\n newProductLabels[index].imgLink = response[index];\r\n });\r\n setProductLabels(newProductLabels);\r\n });\r\n } */\r\n });\r\n\r\n if (temporaryDisabled) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {props.title}\r\n {pSpecifications.length ? (\r\n \r\n {// @ts-ignore\r\n pSpecifications.map(row => {\r\n const title = row.props.productName;\r\n const titleId = title.replace(/\\s+/g, '');\r\n const titleLabel = labels[`product_specification_title_${title.replace(/\\s+/g, '_').toLowerCase()}`] ?? title;\r\n const ingredientsFinalString = ingredientsString;\r\n\r\n let accordionContent;\r\n if (title === 'Ingredients' && ingredientsFinalString) {\r\n accordionContent = ingredientsFinalString;\r\n } else if (title === 'Nutritional Values JSON') {\r\n try {\r\n const jData = JSON.parse(row.props.cellData.props.dangerouslySetInnerHTML.__html);\r\n accordionContent = _renderNutritionalValues(jData);\r\n } catch (e) {\r\n return;\r\n }\r\n } else if (row.props.cellData.props.dangerouslySetInnerHTML.__html) {\r\n accordionContent = row.props.cellData.props.dangerouslySetInnerHTML.__html;\r\n }\r\n\r\n if (!accordionContent) return;\r\n\r\n return (\r\n // tslint:disable-next-line:jsx-key\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{accordionContent}
\r\n \r\n );\r\n })}\r\n {reassuranceItems.length > 0 ? _renderReassurance(reassuranceItems, labels) : null}\r\n {/* {productLabels.filter(label => label.imgLink !== '').length > 0 ? _renderProductLabels(productLabels, labels) : null} */}\r\n {/* { _renderSocialShare(props.slots && props.slots?.socialShare)} */}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n};\r\n\r\n/* const _getProductLabels = async (productId?: string, baseImagePath?: string): Promise => {\r\n if (productId && baseImagePath) {\r\n const results: string[] = [];\r\n const imgBaseUrlArray = decodeURIComponent(baseImagePath).split('/');\r\n imgBaseUrlArray.pop();\r\n\r\n\r\n const imgUrls = [\r\n [...imgBaseUrlArray, `${productId}_000_006.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_007.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_008.jpg`].join('/'),\r\n ];\r\n \r\n for (let i=0; i<3; i=i+1) {\r\n try {\r\n const response = await axios.get(imgUrls[i]);\r\n results.push(response?.status === 200 ? imgUrls[i] : '');\r\n } catch (e) {\r\n results.push('');\r\n }\r\n }\r\n return results; \r\n }\r\n return ['', '', ''];\r\n} */\r\n\r\n/* const _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n}; */\r\n\r\nexport default ProductSpecificationView;\r\n","/*--------------------------------------------------------------\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 { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISearchCategoryViewProps,\r\n ISearchFormViewProps,\r\n ISearchKeywordViewProps,\r\n ISearchProductViewProps\r\n} from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\n\r\nconst SearchView: React.FC = props => {\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 CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label,\r\n isLoadingAutoSuggest,\r\n isLoadingNode\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.input}\r\n {form.cancelBtn}\r\n {form.submitBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n productSuggestions.items.map((item, index) => {\r\n // @ts-ignore\r\n if (item?.price?.props?.data?.price?.CustomerContextualPrice != 0)\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 else return null;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem,\r\n ISignInLoading,\r\n ISignInLocalAccount /*ISignInSocialAccount, ISignInSocialItem,*/,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/./sign-in';\r\n\r\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignInItem) => {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n/*\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n*/\r\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n /*signInSocialAccount,*/\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n const canonicalDomain = props.signIn.moduleProps.context.request.canonicalDomain;\r\n const sitePath =\r\n props.signIn.moduleProps.context.request.sitePath && props.signIn.moduleProps.context.request.sitePath !== null\r\n ? props.signIn.moduleProps.context.request.sitePath\r\n : '';\r\n const requestUrl: string = `https://${canonicalDomain}${sitePath}`;\r\n \r\n const handleGaGuestCheckout = React.useCallback(() => {\r\n window.dataLayer.push({\r\n event: 'gaEvent',\r\n eventCategory: 'Account',\r\n eventAction: 'Guest checkout​',\r\n eventLabel: 'click' \r\n })\r\n }, [])\r\n\r\n const handleGaSignUp = React.useCallback(() => {\r\n window.dataLayer.push({\r\n event: 'gaEvent',\r\n eventCategory: 'Account',\r\n eventAction: 'Iscrizione',\r\n eventLabel: 'click' \r\n });\r\n }, [])\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {/*SocialAccount(signInSocialAccount)*/}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n \r\n
\r\n {signUpLink}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SignInView;\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 IBusinessSignUpButtonProps {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n link?: string;\n telemetryContent: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const SignUpButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n link,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent, text);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignUpButton;\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 IBusinessSignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n

{message}

\n \n );\n};\n\nexport default SignUpError;\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\nimport { InputType } from '../business-sign-up';\n\nexport interface IBusinessSignUpInputProps {\n id?: string;\n type: InputType;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IBusinessSignUpInput {\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\nexport const SignUpInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n onChange,\n fieldReference\n}) => {\n if (type === InputType.TextArea) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default SignUpInput;\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 IBusinessSignUpLabelProps {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nexport const SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, getUrlSync, RichTextComponent, Text } from '@msdyn365-commerce/core';\nimport { Address, BusinessPartnerProspect } from '@msdyn365-commerce/retail-proxy';\nimport { createProspectAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBusinessSignUpConfig, IBusinessSignUpProps } from './business-sign-up.props.autogenerated';\nimport { SignUpButton, SignUpError, SignUpInput, SignUpLabel } from './components';\n\nexport interface IBusinessSignUpExtendedProps extends IBusinessSignUpProps {\n formItems?: IFormItem[];\n}\n\nexport interface IBusinessSignUpItem {\n wrapper: INodeProps;\n isAddressInput?: boolean;\n id: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input?: React.ReactNode;\n}\n\nexport interface IBusinessState {\n isReady: boolean;\n formItems: IFormItem[];\n addressHasErrors: boolean;\n showAddressErrors: boolean;\n hasSubmitErrors: boolean;\n}\n\nexport interface IBusinessSignUpLocalAccount {\n FormWrapper: INodeProps;\n items: IBusinessSignUpItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface IBusinessSignUpViewProps {\n className: string;\n businessSignUp: IModuleProps;\n ContainerWrapper: INodeProps;\n heading: React.ReactNode;\n businessSignUpForm: IBusinessSignUpLocalAccount;\n formItems: IFormItem[];\n}\n\nexport interface IFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n address?: Address;\n customClass?: string;\n fieldReference?: React.RefObject;\n}\n\nexport enum InputType {\n // eslint-disable-next-line @typescript-eslint/no-shadow -- Text enum doesn't override the imported Text\n Text = 'text',\n Address = 'address',\n Email = 'email',\n TextArea = 'textarea'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n Email = 'CompanyEmail',\n CompanyName = 'CompanyName',\n Address = 'CompanyAddress',\n JobTitle = 'JobTitle',\n Size = 'CompanySize',\n Department = 'Department',\n Comment = 'Comment'\n}\n\nexport const renderInputSection = (\n inputs: IFormItem[],\n className: string,\n needToReset: boolean,\n onInputChange: (event: React.ChangeEvent) => void,\n showErrors: boolean,\n addressForm?: React.ReactNode,\n updateAddress?: (errors: boolean, currAddress?: Address) => void\n): IBusinessSignUpItem[] => {\n return inputs.map((element, index) => {\n const { id, type, label, maxChars, isRequired, pattern, customClass, value, fieldReference } = element;\n\n const baseSignUpItem: IBusinessSignUpItem = {\n wrapper: {\n className: classnames(className, `${className}-${id}`, customClass)\n },\n id,\n label: ,\n errorMessage: \n };\n\n if (type === InputType.Address) {\n if (addressForm) {\n baseSignUpItem.isAddressInput = true;\n baseSignUpItem.input = (\n <>\n {React.cloneElement(addressForm as React.ReactElement, {\n updateForm: updateAddress,\n hasError: showErrors,\n isRequired: isRequired === undefined ? false : isRequired,\n resetAddress: needToReset\n })}\n \n );\n } else {\n // If the address slot is not filled, remove this input from the form\n inputs.splice(index, 1);\n }\n } else {\n baseSignUpItem.input = (\n \n );\n }\n\n return baseSignUpItem;\n });\n};\n\n/**\n *\n * Business Request Form Modules\n * Form that a business can use to submit a request to become a partner with Microsoft.\n * @extends {React.Component>}\n */\nclass BusinessSignUp extends React.Component {\n // Used as default data\n public BusinessSignUpDefaultInputs: IFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.firstNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.lastNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.emailAddressLabel,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-50'\n },\n {\n id: InputID.CompanyName,\n type: InputType.Text,\n label: this.props.resources.companyLabel,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Department,\n type: InputType.Text,\n label: this.props.resources.departmentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.JobTitle,\n type: InputType.Text,\n label: this.props.resources.jobTitleLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Size,\n type: InputType.Text,\n label: this.props.resources.companySizeLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Address,\n type: InputType.Address,\n label: this.props.resources.companyAddressLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n },\n {\n id: InputID.Comment,\n type: InputType.TextArea,\n label: this.props.resources.commentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n }\n ];\n\n private readonly formChildReference: React.RefObject = React.createRef();\n\n private readonly moduleClassName: string = 'ms-business-sign-up';\n\n private needsToReset: boolean = false;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IBusinessSignUpExtendedProps) {\n super(props);\n\n this.state = {\n isReady: false,\n formItems: this.props.formItems || this._addedReference(),\n addressHasErrors: false,\n showAddressErrors: false,\n hasSubmitErrors: false\n };\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.formChildReference.current?.focus();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessSignUpExtendedProps, nextState: IBusinessState): 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 } = this.props;\n const { formItems } = this.state;\n const { className, heading } = config;\n\n const viewProps = {\n ...this.props,\n businessSignUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n ContainerWrapper: {\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n businessSignUpForm: this._renderForm(),\n formItems\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle the heading change event.\n * @param event - Content Editable Event.\n */\n public handleHeadingChange = (event: ContentEditableEvent): void => {\n this.props.config.heading.text = event.target.value;\n };\n\n private _renderForm(): IBusinessSignUpLocalAccount {\n const { config, resources, slots } = this.props;\n const { showAddressErrors, hasSubmitErrors, isReady, formItems } = this.state;\n const {\n signUpButtonArialabel,\n signUpButtonText,\n cancelButtonArialabel,\n cancelButtonText,\n errorMessage,\n partialAddressErrorMessage\n } = resources;\n const addressForm = (slots && slots.addressSlot && slots.addressSlot.length > 0 && slots.addressSlot[0]) || undefined;\n const successPageURL =\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\n getUrlSync('home', this.props.context.actionContext);\n\n const form = {\n FormWrapper: {\n className: `${this.moduleClassName}__form `\n },\n items: renderInputSection(\n formItems,\n `${this.moduleClassName}__form-item`,\n this.needsToReset,\n this._onInputChange,\n showAddressErrors,\n addressForm,\n this._onAddressChange\n ),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasSubmitErrors && ,\n showAddressErrors && (\n \n )\n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n\n if (this.needsToReset) {\n this.needsToReset = false;\n }\n\n return form;\n }\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\n this.setState({\n isReady: this._isFormReady(),\n formItems: newForm,\n hasSubmitErrors: false\n });\n };\n\n private _addedReference(): IFormItem[] {\n const newFormFields = this.BusinessSignUpDefaultInputs;\n newFormFields[0].fieldReference = this.formChildReference;\n return newFormFields;\n }\n\n private readonly _onAddressChange = (errors: boolean, currentAddress?: Address): void => {\n // Find address item\n const newForm = this.state.formItems;\n const addressItem = newForm.find(item => {\n return item.type === InputType.Address;\n });\n\n // If found --> set to currentAddress\n if (addressItem) {\n addressItem.address = currentAddress;\n\n // Update state with new values and set errors to false if address is not required field\n this.setState(\n {\n formItems: newForm,\n addressHasErrors: errors,\n showAddressErrors: false\n },\n () => {\n this.setState({ isReady: this._isFormReady() });\n }\n );\n }\n };\n\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const currentInput of formItems) {\n // Will return FALSE if:\n // - input field is required\n // IF is address AND addressHasErrors === true\n // ELSE value is undefined OR empty\n // OR\n // - pattern provided and value does not match pattern\n\n if (currentInput.isRequired) {\n if (currentInput.type === InputType.Address) {\n if (this.state.addressHasErrors) {\n return false;\n }\n } else if (currentInput.value === undefined || currentInput.value === '') {\n return false;\n }\n }\n if (currentInput.pattern !== undefined && currentInput.value.match(currentInput.pattern) === null) {\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _onSubmit = (event: React.MouseEvent) => {\n if (this.state.addressHasErrors) {\n this.setState({\n showAddressErrors: true\n });\n\n event.preventDefault();\n return;\n }\n\n const { context } = this.props;\n\n // Check for matching id and if not empty\n const firstName = this._getItem(InputID.FirstName);\n const lastName = this._getItem(InputID.LastName);\n const companyName = this._getItem(InputID.CompanyName);\n const companyEmail = this._getItem(InputID.Email);\n const companyAddress = this._getItem(InputID.Address, true);\n const jobTitle = this._getItem(InputID.JobTitle);\n const department = this._getItem(InputID.Department);\n const companySize = this._getItem(InputID.Size);\n const comments = this._getItem(InputID.Comment);\n\n // API gets email as part of the address object, but I do not use the email input from the address component, thus we need to copy it over\n if (companyEmail && companyEmail.value && companyAddress && companyAddress.address) {\n companyAddress.address.Email = companyEmail.value;\n }\n\n const newPartner: BusinessPartnerProspect = {\n FirstName: firstName && firstName.value,\n LastName: lastName && lastName.value,\n CompanyName: companyName && companyName.value,\n Address: companyAddress && companyAddress.address && companyAddress.address,\n JobTitle: jobTitle && jobTitle.value,\n Department: department && department.value,\n CompanySize: (companySize && Number.parseInt(companySize.value, 10)) || 0,\n Comments: comments && comments.value\n };\n\n // Create business partner request\n createProspectAsync({ callerContext: context.actionContext }, newPartner).catch(() => {\n this.setState({\n hasSubmitErrors: true,\n isReady: false\n });\n });\n };\n\n private readonly _onCancel = () => {\n // Reset values of the form\n const cleanForm = this.state.formItems;\n cleanForm.forEach(input => {\n input.value = '';\n });\n\n // Set reset flag so address input will get reset on next renderInputSection() call\n this.needsToReset = true;\n\n this.setState({\n isReady: false,\n formItems: cleanForm,\n addressHasErrors: true,\n showAddressErrors: false,\n hasSubmitErrors: false\n });\n };\n\n private readonly _getItem = (id: string, isAddress: boolean = false) => {\n if (isAddress) {\n return this.state.formItems.find(item => {\n return item.id === id && item.address;\n });\n }\n return this.state.formItems.find(item => {\n return item.id === id && item.value !== '';\n });\n };\n}\n\nexport default BusinessSignUp;\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 { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\n\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\n // Hide label and error message if rendering address section\n return (\n \n {!isAddressInput && label}\n {!isAddressInput && errorMessage}\n {input}\n \n );\n};\n\nconst BusinesSignUpView: React.FC = props => {\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\n\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\n\n return (\n \n \n {heading}\n \n {items &&\n items.map((item: IBusinessSignUpItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n \n \n );\n};\n\nexport default BusinesSignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\nimport { KeyCodes } from '@msdyn365-commerce-modules/utilities';\n\nexport interface ISearchBarProps {\n className: string;\n searchPlaceholderLabel: string;\n onSearch(searchText: string): void;\n}\n\nexport interface ISearchBarState {\n searchText: string;\n}\n\nexport class SearchBar extends React.Component {\n constructor(props: ISearchBarProps) {\n super(props);\n this.state = {\n searchText: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, searchPlaceholderLabel } = this.props;\n return (\n
\n \n
\n );\n }\n\n private readonly onSearchTextChange = (ev: React.ChangeEvent): void => {\n this.setState({\n searchText: ev.target.value\n });\n };\n\n private readonly onSearch = (): void => {\n this.props.onSearch(this.state.searchText);\n };\n\n private readonly handleKeyUp = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter) {\n this.onSearch();\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 { IComponentProps } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { moduleClassName } from '../business-partners';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { SearchBar } from './search-bar';\n\n/**\n * Props of DataGrid component.\n */\nexport interface IDataGridProps extends IComponentProps {\n className: string;\n pageSize?: number;\n searchPlaceholderLabel: string;\n defaultSorting?: ISortingInfo;\n resources: IBusinessPartnersResources;\n columns: IDataGridColumn[];\n loadData(): Promise;\n}\n\n/**\n * State of DataGrid component.\n */\nexport interface IDataGridState {\n data: Tdata[];\n paging: IPagingInfo;\n filter: IFilterInfo;\n sorting?: ISortingInfo;\n isLoading: boolean;\n hasError: boolean;\n}\n\nexport interface IPagingInfo {\n index: number;\n}\n\nexport interface IFilterInfo {\n searchText: string;\n}\n\nexport interface ISortingInfo {\n fieldName: string;\n ascending: boolean;\n}\n\n/**\n * Column definition of DataGrid component.\n */\nexport interface IDataGridColumn {\n /**\n * A unique key for identifying the column.\n */\n reactKey: string;\n\n /**\n * Name to render on the column header.\n */\n name: string;\n\n /**\n * Class name added to table cell.\n */\n className?: string;\n\n /**\n * The field to pull the text value from for the column.Can be unset if a custom `onRender` method is provided.\n */\n fieldName?: string;\n\n /**\n * Whether the user can search this column by text.\n */\n isSearchable?: boolean;\n\n /**\n * Custom renderer for cell content, instead of the default text rendering.\n */\n onRender?(item: Tdata): JSX.Element;\n}\n\nconst defaultPageSize = 10;\n\n/**\n * DataGrid component encapsulates common table functionalities.\n */\nexport class DataGrid extends React.Component, IDataGridState> {\n constructor(props: IDataGridProps) {\n super(props);\n this.state = {\n data: [],\n sorting: props.defaultSorting,\n paging: { index: 0 },\n filter: { searchText: '' },\n isLoading: true,\n hasError: false\n };\n }\n\n public componentDidMount(): void {\n this.loadDataInternal();\n }\n\n public shouldComponentUpdate(nextProps: Readonly>, nextState: Readonly>): boolean {\n return (\n this.props.id !== nextProps.id ||\n this.props.columns !== nextProps.columns ||\n this.state.data !== nextState.data ||\n this.state.paging !== nextState.paging ||\n this.state.filter !== nextState.filter ||\n this.state.isLoading !== nextState.isLoading ||\n this.state.hasError !== nextState.hasError\n );\n }\n\n public render(): JSX.Element | null {\n const data = this.getDataToDisplay();\n const hasMore = this.hasMore();\n if (this.state.hasError) {\n return {this.props.resources.genericErrorMessage};\n }\n if (this.state.isLoading) {\n return {this.props.resources.loadingLabel};\n }\n if (!ArrayExtensions.hasElements(data)) {\n return (\n <>\n \n

{this.props.resources.noDataMessage}

\n \n );\n }\n return (\n <>\n \n \n {this.renderGridHeader()}\n {data.map((item, index) => this.renderGridRow(item, index))}\n
\n {hasMore && (\n \n )}\n \n );\n }\n\n /**\n * Renders the TH header in the table.\n * @returns - Header react node.\n */\n private readonly renderGridHeader = () => {\n const className = `${this.props.className}__header`;\n const rowClassName = `${className}__row`;\n return (\n \n \n {this.props.columns.map(column => (\n \n {column.name}\n \n ))}\n \n \n );\n };\n\n /**\n * Renders table row.\n * @param item - Data item for this row.\n * @param index - Index of the row.\n * @returns - Row react node.\n */\n private readonly renderGridRow = (item: Tdata, index: number) => {\n const rowClassName = `${this.props.className}__row`;\n return (\n \n {this.props.columns.map(column => {\n if (column.fieldName) {\n return (\n \n {((item as unknown) as { [key: string]: string })[column.fieldName]}\n \n );\n }\n return {column.onRender?.(item)};\n })}\n \n );\n };\n\n /**\n * Load data for the table.\n * @returns Promise.\n */\n private readonly loadDataInternal = async () => {\n if (!this.props.context.actionContext.requestContext.user.isAuthenticated) {\n this.setState({\n isLoading: false\n });\n return;\n }\n try {\n const result = await this.props.loadData();\n this.setState({\n isLoading: false,\n data: result\n });\n } catch {\n this.setState({\n isLoading: false,\n hasError: true\n });\n }\n };\n\n private readonly onSearch = (searchText: string): void => {\n this.setState({\n paging: { index: 0 },\n filter: { searchText }\n });\n };\n\n private readonly loadMore = (): void => {\n this.setState({\n paging: { index: this.state.paging.index + 1 }\n });\n };\n\n private readonly sortData = (): Tdata[] => {\n const sorting = this.state.sorting;\n if (!sorting) {\n return this.state.data;\n }\n const { fieldName, ascending } = sorting;\n return this.state.data.sort((item1: Tdata, item2: Tdata) => {\n let value1 = ((item1 as unknown) as { [key: string]: string })[fieldName];\n let value2 = ((item2 as unknown) as { [key: string]: string })[fieldName];\n if (typeof value1 === 'string' && typeof value2 === 'string') {\n value1 = value1.toLowerCase();\n value2 = value2.toLowerCase();\n }\n const compareResult = value1 > value2 ? 1 : value1 < value2 ? -1 : 0;\n return ascending ? compareResult : compareResult * -1;\n });\n };\n\n private readonly filterData = (): Tdata[] => {\n const column = this.props.columns.find(c => c.isSearchable);\n const searchText = this.state.filter.searchText;\n return this.sortData().filter(item => {\n if (!column?.fieldName || !searchText) {\n return true;\n }\n const columnValue = ((item as unknown) as { [key: string]: string })[column.fieldName];\n return columnValue && columnValue.toLowerCase().indexOf(searchText.trim().toLowerCase()) >= 0;\n });\n };\n\n private readonly getDataToDisplay = (): Tdata[] => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.slice(0, itemsCount);\n };\n\n private readonly hasMore = (): boolean => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.length > itemsCount;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { BusinessPartner, BusinessPartnerUser, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * View model of business partner user, used to display.\n */\nexport interface IBusinessPartnerUserViewModel extends BusinessPartnerUser {\n name: string;\n spendingLimitStr: string;\n}\n\n/**\n * Props of BusinessPartnerUsersTable.\n */\nexport interface IBusinessPartnerUsersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n businessPartner: BusinessPartner;\n resources: IBusinessPartnersResources;\n onSelect(businessPartnerUser: BusinessPartnerUser): void;\n}\n\n/**\n * BusinessPartnerUsersTable component.\n */\nexport class BusinessPartnerUsersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessUserTableNameHeadingText,\n fieldName: 'name',\n isSearchable: true\n },\n {\n reactKey: 'email',\n name: this.props.resources.businessUserTableEmailHeadingText,\n fieldName: 'Email'\n },\n {\n reactKey: 'spendingLimit',\n name: this.props.resources.businessUserTableSpendingLimitHeadingText,\n className: `${this.props.className}__row__column-with-number`,\n fieldName: 'spendingLimitStr'\n },\n {\n reactKey: 'select-button',\n name: '',\n onRender: this.renderSelectButton,\n className: `${this.props.className}__row__column-select-button`\n }\n ];\n };\n\n /**\n * Renders the button to select a business partner user.\n * @param businessPartnerUser - The business partner user to select.\n * @returns - Button component.\n */\n private readonly renderSelectButton = (businessPartnerUser: IBusinessPartnerUserViewModel) => {\n return (\n {\n this.props.onSelect(businessPartnerUser);\n }}\n title={this.props.resources.select}\n aria-label={this.props.resources.select}\n />\n );\n };\n\n /**\n * Call retail proxy to get business partner users.\n * @returns - Business partner users view model.\n */\n private readonly getBusinessPartnerUsers = async (): Promise => {\n const businessPartners = await BusinessPartnersDataActions.getUsersAsync(\n {\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n },\n this.props.businessPartner.BusinessPartnerId\n );\n return businessPartners\n .filter(user => user.StatusValue === 1)\n .map(user => ({\n ...user,\n name: `${user.FirstName} ${user.LastName}`,\n spendingLimitStr: !ObjectExtensions.isNullOrUndefined(user.SpendingLimit)\n ? this.props.context.cultureFormatter.formatCurrency(user.SpendingLimit.toString())\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 { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { BusinessPartner, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * Props of IBusinessPartnersTable.\n */\nexport interface IBusinessPartnersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n resources: IBusinessPartnersResources;\n onSelect(businessPartner: BusinessPartner): void;\n}\n\n/**\n * BusinessPartnersTable component.\n */\nexport class BusinessPartnersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessPartnerName,\n fieldName: 'Name',\n isSearchable: true\n },\n {\n reactKey: 'select-button',\n name: '',\n onRender: this.renderSelectButton,\n className: `${this.props.className}__row__column-select-button`\n }\n ];\n };\n\n /**\n * Renders the button to select a business partner.\n * @param businessPartner - The business partner to select.\n * @returns - Button component.\n */\n private readonly renderSelectButton = (businessPartner: BusinessPartner) => {\n return (\n {\n this.props.onSelect(businessPartner);\n }}\n title={this.props.resources.select}\n aria-label={this.props.resources.select}\n />\n );\n };\n\n /**\n * Call retail proxy to get business partners.\n * @returns - Business partners.\n */\n private readonly getBusinessPartners = async () => {\n const businessPartners = await BusinessPartnersDataActions.getManagedBusinessPartnersAsync({\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n });\n return businessPartners;\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 { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { BusinessPartner, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersData } from './business-partners.data';\nimport { IBusinessPartnersProps } from './business-partners.props.autogenerated';\nimport { BusinessPartnerUsersTable } from './components/business-partner-users-table';\nimport { BusinessPartnersTable } from './components/business-partners-table';\n\n/**\n * Props for the module view.\n */\nexport interface IBusinessPartnersViewProps extends IBusinessPartnersProps {\n businessPartnersProps: IModuleProps;\n businessPartnersHeading?: React.ReactNode;\n businessPartnersTable?: React.ReactNode;\n businessPartnerUsersTable?: React.ReactNode;\n backToBusinessPartnersLink?: React.ReactNode;\n}\n\n/**\n * State of BusinessPartners component.\n */\nexport interface IBusinessPartnersState {\n selectedBusinessPartner?: BusinessPartner;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partners';\n\n/**\n * BusinessPartners component.\n */\nclass BusinessPartners extends React.Component, IBusinessPartnersState> {\n constructor(props: IBusinessPartnersProps) {\n super(props);\n this.state = {};\n }\n\n public componentDidMount() {\n this.props.context.request.cookies.removeAccountSelectionCookie();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessPartnersProps, nextState: IBusinessPartnersState): 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, pageSize, businessPartnersHeading }\n } = this.props;\n const viewProps: IBusinessPartnersViewProps = {\n ...this.props,\n businessPartnersProps: {\n moduleProps: this.props,\n className: classname(moduleClassName, className)\n },\n businessPartnersHeading: businessPartnersHeading && businessPartnersHeading.text && (\n \n ),\n businessPartnersTable: !this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n businessPartnerUsersTable: this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n backToBusinessPartnersLink: this.state.selectedBusinessPartner ? (\n {\n this.onSelectBusinessPartner();\n }}\n >\n {this.props.resources.backToBusinessPartnersLink}\n \n ) : (\n undefined\n )\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Event handler of business partner selection.\n * @param businessPartner - Selected business partner.\n */\n private readonly onSelectBusinessPartner = (businessPartner?: BusinessPartner) => {\n this.setState({\n selectedBusinessPartner: businessPartner\n });\n };\n\n /**\n * Event handler of business partner user selection.\n * @param businessPartnerUser - Selected business partner user.\n */\n private readonly onSelectBusinessPartnerUser = (businessPartnerUser: BusinessPartnerUser) => {\n if (businessPartnerUser.AccountNumber) {\n this.props.context.request.cookies.setAccountSelectionCookie(true, businessPartnerUser.AccountNumber);\n const homeUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext);\n if (homeUrl && Msdyn365.msdyn365Commerce.isBrowser) {\n window.location.href = homeUrl;\n }\n }\n };\n}\n\nexport default BusinessPartners;\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 { IBusinessPartnersViewProps } from './business-partners';\n\n/**\n * View layout of business partner module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n return (\n \n {props.backToBusinessPartnersLink}\n {props.businessPartnersHeading}\n {props.businessPartnersTable}\n {props.businessPartnerUsersTable}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n
\n \n {message}\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 { IModuleStateProps } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\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 { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

{countTitle}

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

\n

{groupTitle}

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

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

\n );\n return (\n
\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n
\n
\n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {'Code '}\n {coupon.Code}\n {'Applied '}\n
\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["GenericPopup","React","constructor","state","popupVisible","recallVisible","_onDismissRecall","this","createCookieRecall","setState","_onDismissPopup","props","config","recallEnabled","recallShowAfterPopup","setTimeout","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","render","className","viewProps","classNamePopup","classnames","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","renderView","cookie","Cookies","hidePopupIfCookieIsSet","get","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","options","expires","set","recallDismissableForDays","slots","recallDismissable","modalHeader","recallText","closeButtonAriaLabel","closeButtonLabel","resources","label","modalName","window","dataLayer","push","event","eventCategory","eventAction","eventLabel","handleClose","popupElement","document","querySelector","form","getElementsByTagName","length","Modal","id","isOpen","onClosed","ModalHeader","toggle","ModalBody","renderModuleAttributes","content","onClick","Map","super","mapRef","handleHeadingChange","heading","text","target","value","_initMap","context","actionContext","requestContext","channel","data","storeSelectorStateManager","result","isMapApiLoaded","map","Microsoft","Maps","current","credentials","BingMapsApiKey","pushpinAccessible","_updateMap","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","unitStoreInfo","index","storeLocation","OrgUnitAvailability","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","pushpinOptions","color","OrgUnitName","startsWith","selectionColor","showIndex","size","_getPushpinOptions","pushpin","Pushpin","Location","Events","addHandler","setSelectedStoreLocationId","unshift","currLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","toString","undefined","icon","_getSvgIcon","componentDidMount","telemetry","BingMapsEnabled","reaction","setMapModuleLoaded","loadMapApi","key","lang","ChannelCountryRegionISOCode","market","DefaultLanguageId","async","isDialog","error","displayMap","listMapViewState","ModuleProps","tag","moduleProps","classname","show","Header","headerProps","Msdyn365","editProps","onEdit","request","MapProps","ref","__decorate","observable","observer","MapHeader","Node","Module","DeliveryOptionList","DeliveryOptionsList","list","Array","from","getElementsByClassName","forEach","el","deliveryOption","textContent","position","indexOf","output","slice","join","innerHTML","pickUpList","courierDeliveryTitle","code","DeliveryOption","radioButton","description","price","DeliveryOptionSelected","ErrorMessage","Error","title","message","CheckoutDeliveryOptions","viewState","deliveryOptions","deliveryOptionSelected","errorMessage","waiting","saveButton","editButton","cancelButton","extraTextField","paragraph","extraText","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","PickUpAtStoreComponent","PickUpAtStore","location","EmailDeliveryComponent","EmailDelivery","LineItemComponent","LineItem","item","pickUpAtStore","emailDelivery","LineItemGroupComponent","LineItemDeliveryGroup","LineItemList","lineItems","lineItem","LineId","LineItemGroupComponentWithMultiplePickUp","lineItemWraper","lineItemWraperIcon","LineItemComponentWithMultiplePickUp","PickUpAtStoreComponentWithMultiplePickUp","LineItemsComponent","LineItems","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","OrderSummaryComponent","lines","other","locale","shipping","subtotal","shippingPrice","subTotalAmount","totalDiscounts","discountAmount","otherCharge","tax","loyalty","giftCard","orderTotal","canShow","checkoutProps","hasSalesOrder","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","orderConfirmation","loading","alert","guidedForm","orderSummary","placeOrderButton","termsAndConditions","keepShoppingButton","checkout","checkoutCart","cart","SubtotalSalesAmount","totalAmount","TotalAmount","DiscountAmount","extraOrdersSummaryEu","toFixed","greeting","setGreeting","status","greetingMessageCAP","greetingSignCAP","currentCartState","getCartState","ExtensionProperties","filter","fieldVal","Key","Value","BooleanValue","extKeysToRemove","extProps","extPropsToEmpty","prop","Object","keys","includes","updateExtensionProperties","newExtensionProperties","removeExtProps","greetingVal","StringValue","checkoutResult","cartResult","dataCompiledCc","Id","getCartProps","greetingTitle","greetingMessage","greetingSign","href","addGreetingText","insertModifyYourPromoCode","OrderConfirmationOrderInfomation","orderInformationProps","receiptEmail","createdDate","channelReferenceId","OrderConfirmationSalesLine","salesLineProps","salesLine","buyAgainButton","OrderConfirmationGroupDelivery","deliveryProps","count","processing","address","trackingInfo","pickupDateTimeslot","OrderConfirmationGroup","groupProps","delivery","salesLinesProps","salesLines","shippingItemsToYou","OrderConfirmationGroups","groupsProps","groups","group","OrderConfirmationOrderSummary","orderSummaryProps","earnedPoints","shippingAmount","OrderConfirmationPayment","paymentMethodsProps","methods","OrderConfirmationHelp","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","backToShoppingLink","orderInfomation","payment","help","modprops","cartLines","CartLines","console","log","updateExtProps","salseOrderData","orderHydration","salesOrder","grossAmount","GrossAmount","chargeAmount","ShippingChargeAmount","commisionJunction","OrderHistoryOrderInfomation","salesId","receiptId","channelName","amount","OrderHistoryGroupDelivery","OrderHistoryGroup","OrderHistoryGroups","OrderHistoryHeader","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderDetailsLink","dataPrice","CustomerContextualPrice","orderType","OrderHistoryList","listProps","salesOrders","orderHistoryProps","header","emptyMessage","moreButton","ProductSpecification","productSpecificationResult","tags","specificationsList","ingredientsAllAttributesList","pTags","pSpecifications","ingredientsArray","reassuranceItems","reassurance","reassuranceTitle","reassuranceDescription","image","reassuranceImage","isProductAccordionOpened","productDescriptionAccordionOpened","accordionsState","setAccordionsState","row","itemHtml","cellData","dangerouslySetInnerHTML","productName","__html","product","ItemId","PrimaryImageUrl","_renderForm","SearchForm","FormWrapper","input","cancelBtn","submitBtn","_renderKeywordSuggestions","KeywordSuggest","UlKeyword","keywordSuggestions","isLoadingAutoSuggest","isLoadingNode","_renderProductSuggestions","ProductSuggest","UlProduct","productSuggestions","items","LiProduct","AProduct","thumbnail","_renderCategorySuggestions","CategorySuggest","UlCategory","categorySuggestions","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","searchText","AutoSuggest","autosuggestCategory","autosuggestKeyword","autosuggestProduct","SignInLoading","modal","modalBody","signIn","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signUpSectionHeading","signUpDescription","signUpLink","requestUrl","canonicalDomain","sitePath","handleGaGuestCheckout","handleGaSignUp","isShowLoading","localAccount","forgetPassword","disclaimer","signInButton","wrapper","LocalAccount","SignUpButton","ariaLabel","telemetryContent","disabled","link","payLoad","getPayloadObject","attributes","getTelemetryAttributes","Button","role","SignUpError","type","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","pattern","isRequired","onChange","fieldReference","InputType","TextArea","name","SignUpLabel","forId","htmlFor","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","element","maxChars","customClass","baseSignUpItem","Address","isAddressInput","updateForm","hasError","resetAddress","splice","BusinessSignUp","BusinessSignUpDefaultInputs","FirstName","Text","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","EmailRegex","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","moduleClassName","needsToReset","_onInputChange","newForm","formItems","isReady","_isFormReady","hasSubmitErrors","_onAddressChange","errors","currentAddress","addressItem","find","addressHasErrors","showAddressErrors","currentInput","match","_onSubmit","preventDefault","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","newPartner","CompanySize","Comments","createProspectAsync","callerContext","catch","_onCancel","cleanForm","isAddress","_addedReference","getTelemetryObject","telemetryPageName","friendlyName","focus","shouldComponentUpdate","nextProps","nextState","businessSignUp","ContainerWrapper","businessSignUpForm","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","linkUrl","destinationUrl","getUrlSync","buttons","RichTextComponent","newFormFields","BusinessSignUpItem","button","SearchBar","onSearchTextChange","ev","onSearch","handleKeyUp","keyCode","KeyCodes","searchPlaceholderLabel","placeholder","onKeyUp","DataGrid","renderGridHeader","rowClassName","columns","column","reactKey","renderGridRow","fieldName","onRender","loadDataInternal","user","isAuthenticated","loadData","paging","loadMore","sortData","sorting","ascending","sort","item1","item2","value1","value2","toLowerCase","compareResult","filterData","c","isSearchable","columnValue","trim","getDataToDisplay","itemsCount","pageSize","hasMore","defaultSorting","genericErrorMessage","loadingLabel","ArrayExtensions","businessPartnerLoadMore","noDataMessage","BusinessPartnerUsersTable","getColumns","businessUserTableNameHeadingText","businessUserTableEmailHeadingText","businessUserTableSpendingLimitHeadingText","renderSelectButton","businessPartnerUser","onSelect","select","getBusinessPartnerUsers","BusinessPartnersDataActions","bypassCache","queryResultSettings","businessPartner","BusinessPartnerId","StatusValue","spendingLimitStr","ObjectExtensions","SpendingLimit","cultureFormatter","formatCurrency","businessPartnerSearchCustomer","BusinessPartnersTable","businessPartnerName","getBusinessPartners","businessPartnerSearchCompany","BusinessPartners","onSelectBusinessPartner","selectedBusinessPartner","onSelectBusinessPartnerUser","AccountNumber","cookies","setAccountSelectionCookie","homeUrl","removeAccountSelectionCookie","businessPartnersHeading","businessPartnersProps","businessPartnersTable","businessPartnerUsersTable","backToBusinessPartnersLink","WaitingComponent","Waiting","CheckoutExpressPaymentContainer","_getItems","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","shippingAddressFromExpressCheckout","isExpressPaymentModulesReady","extensionPropertyKey","paymentTenderType","isModuleReady","property","isExpressCheckoutApplied","checkoutExpressPaymentSectionLoadingMessage","isPaymentVerificationRedirection","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","_renderMsdyn365Text","ContainerItemsComponent","isLoadingClassName","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","linkText","contentAction","etext","editableLink","openInNewTab","additionalProperties","onTelemetryClick","links","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","bind","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","MsDyn365","onDismiss","CookieComplianceBanner","AlertProps","fade","Content","acceptButton","setConsentCookie","reload","Alert","renderCustomerName","accountInformation","customer","Name","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","search","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","src","altText","promotionalContent","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","navDrawerList","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","isDrawerOpen","colProps","toggleButtonProps","onToggle","collapseProps","_renderLinkText","menuSubItem","currentPos","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","OrderInfomation","channelAddress","SalesLine","GroupDelivery","Group","isCashAndCarryTransaction","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","Groups","OrderSummary","Payment","Help","viewModes","tableViewActions","table","BackTopFooter","backtoTopText","destination","BackToTop","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","IFrameView","TileList","_telemetryContent","StringExtensions","headingTag","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","vertical","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","tileListView","tileItem","keyIndex","toggleBopisHandler","cartLine","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","TelemetryConstant","puckUpinStoreAttribute","renderGroupBopisBlock","addToOrderTemplate","renderCartlinesInternal","itemIndex","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderBopisBlock","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","pickUpText","shippingText","emailshippingText","groupTitle","replace","itemLabel","itemsLabel","countTitle","renderCartLinesGroupTitle","updatedTitle","cartTitle","totalItemsInCart","orderSummaryLineitems","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","cartLinesGroup","cartlines","cartlineId","countItem","reduce","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","renderCartLinesGroup","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLines","orderSummaryItems","invoices","renderInvoiceSummarylines","invoiceSummaryLineitems","OrderSummaryItems","orderSummaryLines","renderOrderSummarylines","errorData","OrderSummaryErrors","Wrapper","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","then","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","promoPlaceholderText","promoCodeApplyButtonText","onSubmit","_removePromotion","currentTarget","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","Code","promoCodeHeadingText","renderAdditionalContent","additionalContent","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","renderProductDescription","primaryImageSource","imageUrl","fallBackSrc","xl","cropFocalRegion","renderProductImage","signInMessage","modalToggle","reviewModal","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","createReviewModal"],"sourceRoot":""}