{"version":3,"file":"static/js/6.895b80c9e14afea8596f.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/koelliker/utils/currentSubStepTitle.tsx?54d4","webpack://Msdyn365.Commerce.Online/./src/themes/koelliker/views/checkout-delivery-options.view.tsx?944b","webpack://Msdyn365.Commerce.Online/./src/themes/koelliker/views/navigation-menu.view.tsx?323b","webpack://Msdyn365.Commerce.Online/./src/themes/koelliker/views/order-history.view.tsx?ca12","webpack://Msdyn365.Commerce.Online/./src/themes/koelliker/views/reviews-list.view.tsx?35df","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/fabrikam/views/search-result-container.view.tsx?89df","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/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7"],"sourcesContent":["const CurrentSubStepTitle = (salesOrderStatus:number) => {\r\n if (salesOrderStatus === 1) {\r\n return 'Creato';\r\n } else if (salesOrderStatus === 2) {\r\n return 'Confermato';\r\n } else if (salesOrderStatus === 3) {\r\n return 'Pagato';\r\n } else if (salesOrderStatus === 4) {\r\n return 'Completo';\r\n } else if (salesOrderStatus === 5) {\r\n return 'In Preparazione';\r\n } else if (salesOrderStatus === 6) {\r\n return 'Fatturato';\r\n } else if (salesOrderStatus === 7) {\r\n return 'Immatricolato';\r\n } else if (salesOrderStatus === 8) {\r\n return 'Spedito';\r\n } else if (salesOrderStatus === 9) {\r\n return 'Consegnato';\r\n } else if (salesOrderStatus === 10) {\r\n return 'Reso richiesto';\r\n } else if (salesOrderStatus === 11) {\r\n return 'Reso in elaborazione';\r\n } else if (salesOrderStatus === 12) {\r\n return 'Reso completato';\r\n } else {\r\n return '';\r\n }\r\n};\r\n\r\nexport default CurrentSubStepTitle;","/*---------------------------------------------------------------------------------------------\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 { ICheckoutDeliveryOption, ICheckoutDeliveryOptionEdit, ICheckoutDeliveryOptionsError, ICheckoutDeliveryOptionsList, ICheckoutDeliveryOptionsViewProps } 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 React from 'react';\r\n\r\nconst DeliveryOptionList: React.FC = ({\r\n DeliveryOptionsList,\r\n list\r\n}) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n list.forEach((item, key) => {\r\n // @ts-ignore\r\n const splittedDesc = item?.description?.props?.description.split('|');\r\n // @ts-ignore\r\n list[key].cDescription = splittedDesc[0];\r\n // @ts-ignore\r\n list[key].tooltip = splittedDesc[1];\r\n });\r\n return (\r\n \r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n
\r\n {deliveryOption.radioButton}\r\n {\r\n // @ts-ignore\r\n {deliveryOption.cDescription && deliveryOption.cDescription}\r\n }\r\n {deliveryOption.price}\r\n
\r\n {\r\n // @ts-ignore\r\n deliveryOption.tooltip && (\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\nconst DeliveryOptionSelected: React.FC = ({\r\n DeliveryOption,\r\n description,\r\n price,\r\n}) => {\r\n // @ts-ignore\r\n const cDescription = description?.props?.description?.split('|')[0];\r\n\r\n return (\r\n \r\n Hai scelto: {cDescription && cDescription} {price}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({\r\n Error,\r\n /*title,*/\r\n message,\r\n}) => {\r\n return (\r\n \r\n

Si è verificato un errore.
Controlla la corretta compilazione dei dati personali

\r\n
\r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const { 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 } = props;\r\n\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 {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 * 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/* tslint:disable: no-duplicate-imports */\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Drawer, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent, Module, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData, IImageSettings, Image} from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?:string|null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText:string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private currentLevel: number = 0;\r\n private escapeKey:number = 27;\r\n private menuNode: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = {activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined,categoryImageAltText:''};\r\n this._closeSubmenu =this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n document && document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document && document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document && document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document && document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView} = this.props;\r\n\r\n this.currentLevel = 1;\r\n return(\r\n \r\n {isMobileView\r\n ? this._renderMobileMenu()\r\n : this._renderDesktopMenu()\r\n }\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const {isMobileView, menuItemData, Navigation}= this.props;\r\n return(\r\n \r\n {menuItemData.map((menuItem: IMenuItemData) => {\r\n return this._renderDrawerMenu(menuItem);\r\n })}\r\n \r\n );\r\n }\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation} = this.props;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return (this._renderDrawer(menuItem));\r\n } else {\r\n return (this._renderLinkMenuItem(menuItem));\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const toggleButtonText= menuItem.linkText;\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return (\r\n this._renderLinkMenuItem(item)\r\n );\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return (\r\n this._renderSpanMenuItem(item)\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView} = this.props;\r\n const {activeMenu} = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for(let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText});\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push (\r\n {this._createMenuItemList(menuItem)} \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push (\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for(let i = 0; i <= subMenus.length-1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText});\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id));\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return (this._renderLinkMenuItem(menuItemData,menuItemData.id,false));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number,IsSubMenu?:boolean): JSX.Element | null {\r\n const {isMobileView, ListItem} = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\r\n // const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && (this.currentLevel <= Math.round(multiLevelSupportedMenu)-1);\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu?`level-${this.currentLevel.toString()}`:'';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined,true);\r\n }\r\n return (\r\n \r\n { menuItem }\r\n { subMenu }\r\n \r\n );\r\n });\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu,IsSubMenu));\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const {Button} = this.props;\r\n return (\r\n \r\n { option.linkText }\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number,hoverEffect:boolean=true): JSX.Element | null {\r\n const {Link} = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource= option.imageSource ? option.imageSource :'';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n\r\n const isBrowser = typeof window !== 'undefined' && document !== undefined;\r\n if(isBrowser){\r\n // Active link : Desktop\r\n const navItems = document && document.querySelectorAll('.ms-nav__list__item');\r\n navItems.forEach(currentItem => {\r\n if (window.location.pathname === currentItem?.querySelector('.ms-nav__list__item__link')?.getAttribute('href')) {\r\n currentItem.classList.add('active');\r\n }\r\n });\r\n // Active link : Mobile\r\n const navItemsMobile = document && document.querySelectorAll('.mobile-view .ms-nav__list__item__link');\r\n navItemsMobile.forEach(currentItem => {\r\n if (window.location.pathname === currentItem?.getAttribute('href')) {\r\n currentItem.classList.add('active');\r\n }\r\n });\r\n }\r\n return (\r\n \r\n { option.linkText }\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const {Span} = this.props;\r\n return (\r\n { option.linkText }\r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number,submenu?:boolean): JSX.Element | null {\r\n\r\n const {DivContainer, MenuList,ImageDivContainer,showCategoryImage,isMobileView} = this.props;\r\n const categoryImageDisplay = !isMobileView && showCategoryImage && this.state.categoryImage !==null && this.state.categoryImage !==undefined && !submenu;\r\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className:'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n 2 && 'navmenu-multi-level') }>\r\n { menuOptions }\r\n \r\n {\r\n categoryImageDisplay && this.state.categoryImage &&(\r\n \r\n { this.state.categoryImage && this._getCategoryImage(this.state.categoryImage,this.state.categoryImageAltText) }\r\n )\r\n }\r\n \r\n );\r\n }\r\n private _updateCategoryImage=(categoryImageSrc:string,linkText:string) => ()=> {\r\n this.setState({\r\n categoryImage: categoryImageSrc !==''? categoryImageSrc :'empty',\r\n categoryImageAltText:linkText\r\n });\r\n }\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n if(this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!,data.linkText!)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({activeMenu:undefined, mobileViewLabelText: ''});\r\n }\r\n };\r\n\r\n private _closeSubmenu():void {\r\n if (!this.props.isMobileView) {\r\n this.setState({activeMenu:undefined, mobileViewLabelText: ''});\r\n }\r\n }\r\n private _escFunction = (event:React.KeyboardEvent) => {\r\n\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n }\r\n private _getCategoryImage=(categoryImage:string,alttext:string):React.ReactNode|null => {\r\n\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, this.props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if(categoryImageUrl !== undefined) {\r\n const ImageData:IImageData = {src:categoryImageUrl};\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nexport default NavigationMenuView;","/* tslint:disable: no-duplicate-imports */\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport {getSalesOrderDetailsBySalesIdAsync} from '@msdyn365-commerce/retail-proxy/dist/DataActions/SalesOrdersDataActions.g';\r\nimport * as React from 'react';\r\nimport currentSubStepTitle from '../utils/currentSubStepTitle';\r\ninterface IOrderInformationC extends IOrderInformation {\r\n salesStatus: string | undefined;\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 salesStatus\r\n}) => {\r\n // @ts-ignore\r\n const salesIdValue = salesId && salesId.props.children.split(': ')[1];\r\n\r\n return (\r\n \r\n {channelName}\r\n {receiptId}\r\n {salesIdValue && (\r\n
N. ordine:{' '}{salesIdValue}
\r\n )}\r\n
Ordine del:{' '}{createdDate}
\r\n
N° articoli:{' '}{count}
\r\n {salesStatus !== 'canceled' &&\r\n
Prezzo:{' '}{amount}
\r\n }\r\n\r\n {channelReferenceId}\r\n
\r\n );\r\n}\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\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, salesLinesProps, salesLines }) => {\r\n return(\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n <>\r\n \r\n {salesLine?.data?.product?.Name}\r\n \r\n \r\n {salesLine.salesLine}\r\n \r\n \r\n ))}\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 = (props) => {\r\n const { salesOrderProps, orderInfomation, groups, orderDetailsLink } = props;\r\n const salesStatus = props?.groups?.groups && props.groups.groups[0].data.salesStatus;\r\n // @ts-ignore\r\n const orderDetailsHref = orderDetailsLink && orderDetailsLink.props?.href;\r\n const salesId = orderDetailsHref.split('salesId=').pop();\r\n // @ts-ignore\r\n const context = props.actionContext;\r\n const[salesOrderStatus, setSalesOrderStatus] = React.useState(1);\r\n // as to bug in default link to order detail page\r\n // const orderDetailsLinkCustom = React.cloneElement(orderDetailsLink as React.ReactElement,{ href: `/orderdetails?salesId=${salesId}` });\r\n React.useEffect(() => {\r\n getSalesOrderDetailsBySalesIdAsync({ callerContext: context }, salesId).then((result) => {\r\n const orderStatus = result?.ExtensionProperties?.filter(i => i.Key === 'SalesOrderStatus_CAP')[0].Value?.StringValue;\r\n orderStatus && setSalesOrderStatus(Number(orderStatus));\r\n });\r\n });\r\n\r\n const statusColor = (() => {\r\n if (salesOrderStatus === 9 || salesOrderStatus === 12) {\r\n return 'done';\r\n } else {\r\n return 'in-progress';\r\n }\r\n })();\r\n // @ts-ignore\r\n\r\n return (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n
\r\n
Stato dell'ordine
\r\n
{currentSubStepTitle(salesOrderStatus)}
\r\n {orderDetailsLink}\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders, ...other }) => {\r\n return (\r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n );\r\n}\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n context,\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 return (\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\n\r\nexport default OrderHistoryView;\r\n","/* tslint:disable: no-duplicate-imports */\r\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { IReportReviewModalViewProps, IReviewCardViewProps, IReviewsListState, IReviewsListViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n averageRating,\r\n filterByDropdown,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n reviewCount,\r\n reviewModal,\r\n sortByDropdown,\r\n state,\r\n userReview\r\n } = props;\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n return {noReviewsMessage};\r\n }\r\n\r\n return (\r\n \r\n {averageRating}\r\n {reviewCount}\r\n { reviewCards.length === 0 ?\r\n null : \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n }\r\n \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n \r\n { reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal, moduleProps)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.rating}\r\n {props.name}\r\n {props.date}\r\n \r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n {props.report}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;","/*!\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 }\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 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 } = this.props;\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 {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

\n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\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\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: 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.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.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('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\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, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\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 !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\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 } 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 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 !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\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, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\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 this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\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 multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\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\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 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 private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = 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 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 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 private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !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 {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 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 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 NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\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 mobileViewLabelText: '',\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 * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\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 return (\n \n );\n }\n return null;\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 { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
\n
{buttonText}
\n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.subscribe({\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n });\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request).removeItemById(this.state.comparisonItemId);\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(this.props.context.request).hasItemById(\n comparisonItemId\n ),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n"],"names":["salesOrderStatus","DeliveryOptionList","DeliveryOptionsList","list","length","forEach","item","key","splittedDesc","description","props","split","cDescription","tooltip","React","Node","map","deliveryOption","DeliveryOption","code","className","radioButton","price","DeliveryOptionSelected","ErrorMessage","Error","message","CheckoutDeliveryOptions","viewState","deliveryOptions","deliveryOptionSelected","errorMessage","waiting","saveButton","editButton","cancelButton","Module","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","NavigationMenuView","constructor","super","currentLevel","escapeKey","_updateCategoryImage","categoryImageSrc","linkText","this","setState","categoryImage","categoryImageAltText","_handleDropdownToggle","data","parentId","isMobileView","activeMenu","id","mobileViewLabelText","parentMenu","state","undefined","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","_escFunction","keyCode","_closeSubmenu","_getCategoryImage","alttext","categoryImageUrl","generateImageUrl","context","actionContext","requestContext","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","ImageData","src","Image","gridSettings","request","imageSettings","config","categoryImageSettings","loadFailureBehavior","role","altText","bind","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","componentDidMount","document","body","addEventListener","componentWillUnmount","removeEventListener","render","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","classnames","menuItem","_renderDrawerMenu","MenuList","ref","tabIndex","_renderDisplay","subMenu","_renderDrawer","_renderLinkMenuItem","toggleButtonText","Drawer","openGlyph","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","i","_getFromSubMenu","push","_createMenuItemList","index","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","error","levelClassName","menuOptions","option","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","Button","onClick","onFocus","hoverEffect","Link","imagesource","contentAction","etext","attributes","getTelemetryAttributes","window","querySelectorAll","currentItem","location","pathname","querySelector","getAttribute","classList","add","onMouseOver","href","onTelemetryClick","Span","level","submenu","DivContainer","ImageDivContainer","categoryImageDisplay","DivContainerClass","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","salesStatus","salesIdValue","children","OrderHistoryGroupDelivery","deliveryProps","heading","processing","address","trackingInfo","OrderHistoryGroup","groupProps","salesLinesProps","salesLines","salesLine","LineId","product","Name","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","pop","setSalesOrderStatus","getSalesOrderDetailsBySalesIdAsync","callerContext","then","result","orderStatus","ExtensionProperties","filter","Key","Value","StringValue","Number","statusColor","currentSubStepTitle","OrderHistoryList","listProps","salesOrders","other","salesOrder","orderHistoryProps","header","alert","loading","emptyMessage","backToShoppingLink","moreButton","buildReviewCard","cardProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","moduleProps","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","SignUpButton","text","ariaLabel","disabled","link","SignUpError","type","errorClassName","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","SignUpInput","value","pattern","isRequired","onChange","fieldReference","InputType","TextArea","SignUpLabel","forId","htmlFor","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","element","label","maxChars","customClass","baseSignUpItem","wrapper","Address","isAddressInput","input","updateForm","hasError","resetAddress","splice","BusinessSignUp","BusinessSignUpDefaultInputs","FirstName","Text","resources","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","EmailRegex","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","moduleClassName","needsToReset","handleHeadingChange","_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","catch","_onCancel","cleanForm","isAddress","_addedReference","shouldComponentUpdate","nextProps","nextState","viewProps","businessSignUp","ContainerWrapper","editProps","onEdit","businessSignUpForm","_renderForm","renderView","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","linkUrl","destinationUrl","getUrlSync","FormWrapper","items","buttons","disclaimer","RichTextComponent","newFormFields","BusinessSignUpItem","button","SearchBar","onSearchTextChange","ev","searchText","onSearch","handleKeyUp","KeyCodes","searchPlaceholderLabel","placeholder","onKeyUp","title","DataGrid","renderGridHeader","rowClassName","columns","column","reactKey","renderGridRow","fieldName","onRender","loadDataInternal","async","user","isAuthenticated","loadData","paging","loadMore","sortData","sorting","ascending","sort","item1","item2","value1","value2","toLowerCase","compareResult","filterData","c","isSearchable","columnValue","indexOf","trim","getDataToDisplay","itemsCount","pageSize","slice","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","Msdyn365","removeAccountSelectionCookie","businessPartnersHeading","businessPartnersProps","classname","tag","businessPartnersTable","businessPartnerUsersTable","backToBusinessPartnersLink","WaitingComponent","Waiting","CheckoutExpressPaymentContainer","_getItems","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","checkout","shippingAddressFromExpressCheckout","reaction","isExpressPaymentModulesReady","includes","extensionPropertyKey","paymentTenderType","isModuleReady","property","BooleanValue","isExpressCheckoutApplied","checkoutExpressPaymentSectionLoadingMessage","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","_renderMsdyn365Text","observer","ContainerItemsComponent","isLoadingClassName","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","editableLink","openInNewTab","additionalProperties","links","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","MsDyn365","onDismiss","CookieComplianceBanner","AlertProps","color","fade","Content","acceptButton","setConsentCookie","reload","Alert","renderCustomerName","accountInformation","customer","_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","isOpen","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","_positionInSetOffset","promotionalImage","promotionalContent","image","imageSrc","promotionalItemImageSettings","_handleFocusOutside","relatedTarget","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","posinset","setSize","keyValue","keys","isDrawerOpen","colProps","toggleButtonProps","onToggle","collapseProps","currentPos","menuItemDatum","isParent","shouldOpenNewTab","_renderPromotionalLink","showPromotionalContent","promotionalContentDisplay","OrderInfomation","channelAddress","SalesLine","salesLineProps","buyAgainButton","GroupDelivery","Group","delivery","isCashAndCarryTransaction","deliveryType","shipment","showTimeslot","pickupProps","pickupDateTimeslot","Groups","OrderSummary","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","viewModes","tableViewActions","table","orderSummary","payment","help","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","isMobile","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","query","recommendation","BackTopFooter","backtoTopText","destination","BackToTop","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","IFrameView","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","locale","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","categoryName","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","__decorate","observable","computed","isBackTrack","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","componentDidUpdate","ProductComparisonButton","_addToProductComparison","ProductComparisonItem","RecordId","catalogId","ProductComparisonState","addItem","_removeFromProductComparison","removeItemById","comparisonItemId","_getNewState","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","onClickHandler","isDisabled","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","variant","VariantType","app","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","getCatalogId","ProductComparisonButtonViewFunctionalComponent"],"sourceRoot":""}