{"version":3,"file":"static/js/19.af716b2c25de033419f9.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/krannich/views/navigation-menu.view.tsx?4a93","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.tsx?5602","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.tsx?6111","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.view.tsx?5db9"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu/src/modules/navigation-menu/./navigation-menu';\r\nimport { IMenuItemData } from '@msdyn365-commerce-modules/navigation-menu/src/modules/navigation-menu/./navigation-menu.data';\r\nimport { IDictionary } from '@msdyn365-commerce/retail-proxy';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText: string;\r\n // VSI -Customization\r\n menuItemListStateBool: boolean;\r\n drawerKeyValue: IDictionary;\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 static isBackTrack: boolean = false;\r\n\r\n private currentLevel: number = 0;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n this.state = {\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n categoryImageAltText: '',\r\n drawerKeyValue: {},\r\n menuItemListStateBool: false\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n document.body.addEventListener('focusout', this._handleFocusOutside);\r\n }\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\r\n this.currentLevel = 1;\r\n\r\n if (isMobileView) {\r\n return (\r\n \r\n \r\n {this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n )}\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\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 (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: undefined })\r\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \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 !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: item?.id })\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 this.props.context.telemetry.error('Submenu content is empty, module wont render.');\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, false);\r\n }\r\n return (\r\n <>\r\n
\r\n {this._renderButtonMenuItem(menuItemData)}\r\n
\r\n {/* Will Disable Hover until Complete page load */}\r\n
\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\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, true);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\r\n }\r\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\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\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 =\r\n subMenus &&\r\n 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 (option.linkText === 'All') {\r\n return <>;\r\n }\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : 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 {\r\n Link,\r\n isMobileView,\r\n context: {\r\n request: {\r\n url: {\r\n requestUrl: { origin }\r\n }\r\n }\r\n }\r\n } = this.props;\r\n if (isMobileView) {\r\n return (\r\n
\r\n {\r\n window.location.replace(String(origin + option.linkURL));\r\n }}\r\n onFocus={this._closeSubmenu}\r\n aria-haspopup={!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n aria-expanded={!!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n data-parent={activeMenu}\r\n >\r\n {option.linkText}\r\n \r\n \r\n
\r\n );\r\n }\r\n return (\r\n {\r\n window.location.replace(String(origin + option.linkURL));\r\n }}\r\n onFocus={this._closeSubmenu}\r\n aria-haspopup={!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n aria-expanded={!!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n data-parent={activeMenu}\r\n >\r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(\r\n option: IMenuItemData,\r\n index?: number,\r\n hoverEffect: boolean = true,\r\n isParent: boolean = false\r\n ): 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 return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\r\n const categoryImageDisplay =\r\n !isMobileView &&\r\n (showCategoryImage || showPromotionalContent) &&\r\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\r\n !submenu;\r\n const promotionalContentDisplay =\r\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__feature';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n {categoryImageDisplay &&\r\n this.state.categoryImage &&\r\n this.state.categoryImage.map(item => (\r\n \r\n {this.state.categoryImage && this._getCategoryImage(item)}\r\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n const linkText = option && option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n option.promotionalContent.map(item => {\r\n if (item && item.image) {\r\n const imageSrc = item.image.src;\r\n const promotionalItemImageSettings = item.image.imageSettings;\r\n promotionalImage.push({\r\n src: imageSrc,\r\n altText: item.text,\r\n imageSettings: promotionalItemImageSettings,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n });\r\n }\r\n this.setState({\r\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n categoryImageAltText: linkText\r\n });\r\n };\r\n\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState(\r\n {\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n },\r\n () => {\r\n this.setState({ menuItemListStateBool: true });\r\n }\r\n );\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\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\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n this.setState({\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n categoryImage: null\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleFocusOutside = (event: FocusEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n /**\r\n * Checks to assign a ref for focus.\r\n * @param index -Sub menu list index.\r\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\r\n * @param optionLinkText -Sub menu list.\r\n * @returns Ref.\r\n */\r\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n if (!NavigationMenuView.isBackTrack && index === 0) {\r\n return true;\r\n }\r\n if (!optionLinkText || !mobileViewLabelText) {\r\n return false;\r\n }\r\n return mobileViewLabelText === optionLinkText;\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\r\n }\r\n }\r\n\r\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n if (!categoryImage || !categoryImage.src) {\r\n return null;\r\n }\r\n\r\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, 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 return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n};\n\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\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 React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n {linkText}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \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 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\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 render(): JSX.Element | null {\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n \n );\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return index !== links.length - defaultValueToSubtract ? (\n \n ) : (\n
\n {value.linkText}\n
\n );\n });\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n });\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n };\n}\n\nexport default Breadcrumb;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root && (\n \n {root}\n {links && separator}\n \n )}\n {backButton && {backButton}}\n {links &&\n links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\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, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n linkOpenInNewTab?: boolean;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n const imageLinkOpenInNewTab = link?.openInNewTab;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel,\n linkOpenInNewTab: imageLinkOpenInNewTab\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\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: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\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, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph 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.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, isOboRequest, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IInvoiceErrorState, IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\nimport React from 'react';\n\nimport { InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsHeaderData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\n invoiceOrderItem: string;\n invoiceOrderItems: string;\n invoiceIdLabel: string;\n invoicePlacedByLabel: string;\n invoiceAmountDueText: string;\n invoicePaymentDueDateText: string;\n}\n\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsHeaderResources;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n return (\n
\n
{invoiceNumberText}
\n
\n
\n
\n
\n
\n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
\n
\n
\n
{orderDate}
\n
{invoiceOrderItemsText}
\n
\n
\n
\n
\n
{resources.invoiceAmountDueText}
\n
\n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
\n
{dueDateText}
\n
\n
\n
\n \n
\n
\n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
\n {lines.map(line => {\n return (\n
\n
{line.label}
\n
\n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
{resources.invoiceProductColor.replace('{0}', product.ColorName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
{resources.invoiceProductSize.replace('{0}', product.SizeName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
{resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
\n )}\n
\n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n xl: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const fallbackImage = getFallbackImageUrl(\n product.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
\n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.ProductId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.ProductId, props.context.actionContext);\n }\n\n return (\n
\n
\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
\n \n {product.ProductName}\n \n
\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
\n
\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
\n
\n
\n
\n
\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.ProductId)?.PrimaryImageUrl\n };\n return productLine;\n });\n\n this.totalDiscount = invoiceDetails.TotalDiscount;\n this.subtotal = invoiceDetails.InvoiceSubtotal;\n this.totalCharges = invoiceDetails.TotalCharges;\n this.totalTax = invoiceDetails.TotalTaxAmount;\n this.totalAmount = invoice.TotalAmount;\n this.currencyCode = invoice.CurrencyCode;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IInvoiceErrorState, InvoiceErrorComponent } from '@msdyn365-commerce-modules/invoice';\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InvoiceDetailsHeaderComponent } from './components/invoice-details-header';\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/invoice-details-payment-summary';\nimport { InvoiceDetailsProductsComponent } from './components/invoice-details-products';\nimport { InvoiceDetailsModel } from './helpers/invoice-data';\nimport { IInvoiceDetailsData } from './invoice-details.data';\nimport { IInvoiceDetailsProps } from './invoice-details.props.autogenerated';\n\nexport interface IInvoiceDetailsViewState {\n invoiceDetails?: InvoiceDetailsModel;\n payInvoiceErrorModalOpen?: boolean;\n errorState?: IInvoiceErrorState;\n}\n\nexport interface IInvoiceDetailsViewProps extends IInvoiceDetailsProps {\n moduleProps: IModuleProps;\n header: JSX.Element;\n products: JSX.Element;\n paymentDetails: JSX.Element;\n payInvoiceError?: JSX.Element;\n}\n\n/**\n * InvoiceDetails component.\n * @extends {React.PureComponent>}\n */\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\n private static readonly _className: string = 'msc-invoice-details';\n\n public constructor(props: IInvoiceDetailsProps) {\n super(props);\n\n this.state = { errorState: { errorMessage: '', otherError: '' } };\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n }\n\n public async componentDidMount(): Promise {\n const invoice = await this.props.data.invoice;\n const invoiceDetails = await this.props.data.invoiceDetails;\n\n const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\n\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\n\n this.setState({\n invoiceDetails: invoiceDetailsModel,\n payInvoiceErrorModalOpen: false,\n errorState: { errorMessage: '', otherError: '' }\n });\n }\n\n public render(): JSX.Element | null {\n if (!this.state.invoiceDetails) {\n return null;\n }\n\n const header = this._renderHeader();\n const products = this._renderProducts();\n const paymentDetails = this._renderPaymentDetails();\n const payInvoiceError = this._renderInvoiceErrors();\n\n const props: IInvoiceDetailsViewProps = {\n ...(this.props as IInvoiceDetailsProps),\n moduleProps: {\n moduleProps: this.props,\n className: InvoiceDetails._className\n },\n header,\n products,\n paymentDetails,\n payInvoiceError\n };\n\n return this.props.renderView(props);\n }\n\n private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\n const productInputs = invoiceLines\n .filter(product => product.ProductId)\n .map(\n product =>\n new ProductInput(\n product.ProductId!,\n this.props.context.request.apiSettings,\n channelId,\n undefined,\n this.props.context.actionContext.requestContext\n )\n );\n return getSimpleProductsAction(productInputs, this.props.context.actionContext);\n }\n\n private _renderHeader(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _renderProducts(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n const { imageSettings } = this.props.config;\n return (\n \n );\n }\n\n private _renderPaymentDetails(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n\n // check for errorcode and otherError which contains the LocalizedMessage from API\n if (\n errorState &&\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineAlreadyExistsInCart' &&\n errorState.otherError\n ) {\n this.setState({ errorState: errorState });\n }\n\n this.setState({ payInvoiceErrorModalOpen: true });\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({ payInvoiceErrorModalOpen: false });\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${InvoiceDetails._className}__errors`;\n\n return (\n \n );\n }\n}\n\nexport default InvoiceDetails;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IInvoiceDetailsViewProps } from './invoice-details';\n\nexport const InvoiceDetailsView: React.FC = props => {\n const { header, products, paymentDetails, payInvoiceError } = props;\n\n return (\n \n {header}\n {products}\n {paymentDetails}\n {payInvoiceError}\n \n );\n};\n\nexport default InvoiceDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Alert, Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IInvoiceErrorProps extends IComponentProps {\n messageHeader?: string;\n errorMessage?: string;\n otherError?: string;\n showError: boolean;\n payInvoiceErrorModalOpen: boolean;\n\n errorDialogHeader: string;\n errorDialogBodyErrorTitle: string;\n errorDialogBodyErrorDescription: string;\n errorDialogFooterGoToCartButtonText: string;\n errorDialogFooterCancelButtonText: string;\n cartUrl: string;\n\n setPayInvoiceErrorModalClose(): void;\n}\n\nexport interface IInvoiceErrorComponent extends IComponent {}\n\nexport const InvoiceError: React.FC = ({\n messageHeader,\n errorMessage,\n otherError,\n showError,\n payInvoiceErrorModalOpen,\n errorDialogHeader,\n errorDialogBodyErrorTitle,\n errorDialogBodyErrorDescription,\n errorDialogFooterGoToCartButtonText,\n errorDialogFooterCancelButtonText,\n cartUrl,\n setPayInvoiceErrorModalClose\n}) => {\n const errorMessages: (string | undefined)[] = [];\n\n if (otherError) {\n errorMessages.push(otherError);\n } else {\n errorMessages.push(errorMessage);\n }\n\n const className = 'msc-pay-invoice-error-dialog';\n\n return (\n <>\n 0} color='danger' assertive aria-label={messageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
\n {message}\n
\n );\n })}\n
\n \n \n {errorDialogHeader}\n \n \n
\n
{errorDialogBodyErrorTitle}
\n
{errorDialogBodyErrorDescription}
\n
\n
\n \n \n {errorDialogFooterGoToCartButtonText}\n \n \n {errorDialogFooterCancelButtonText}\n \n \n
\n \n );\n};\n\n// @ts-expect-error\nexport const InvoiceErrorComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'InvoiceError',\n { component: InvoiceError }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IInvoiceStatusResources } from '../helpers/invoice-status';\n\nexport interface IInvoicesFilterResources extends IInvoiceStatusResources {\n invoicesFilterShowAll: string;\n}\n\nexport interface IInvoicesFilterProps extends IComponentProps {\n className: string;\n disabled: boolean;\n\n resources: IInvoicesFilterResources;\n\n currentState: InvoicesFilterState;\n onFilterStateChanged(state: InvoicesFilterState): void;\n}\n\nexport enum InvoicesFilterState {\n ShowAll,\n Paid,\n PartiallyPaid,\n Unpaid\n}\n\nconst getInvoicesFilterStateResources = (filterState: InvoicesFilterState, resources: IInvoicesFilterResources): string => {\n switch (filterState) {\n case InvoicesFilterState.ShowAll:\n return resources.invoicesFilterShowAll;\n case InvoicesFilterState.Paid:\n return resources.invoiceStatusPaid;\n case InvoicesFilterState.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n case InvoicesFilterState.Unpaid:\n return resources.invoiceStatusUnpaid;\n default:\n throw new Error('Failed to retrieve resource description for unknown invoices filter state.');\n }\n};\n\n/**\n * On Click function.\n * @param onStateClick -Invoice filter state function.\n * @param filterState -Invoice filter state.\n * @returns Set Invoice filter state.\n */\nconst onClickHandler = (onStateClick: (filterState: InvoicesFilterState) => void, filterState: InvoicesFilterState) => () => {\n onStateClick(filterState);\n};\n\nconst renderFilterStateItem = (\n filterState: InvoicesFilterState,\n resources: IInvoicesFilterResources,\n className: string,\n onStateClick: (filterState: InvoicesFilterState) => void\n): React.ReactNode => {\n const stateStringRepresentation = InvoicesFilterState[filterState];\n\n return (\n \n );\n};\n\nconst InvoicesFilter: React.FC = (props: IInvoicesFilterProps) => {\n const popoverRef = React.createRef();\n const [popoverState, setPopoverState] = React.useState(false);\n const togglePopover = React.useCallback(() => {\n setPopoverState(!popoverState);\n }, [popoverState]);\n\n const [filterState, setFilterState] = React.useState(props.currentState);\n\n const onFilterStateClick = (clickedState: InvoicesFilterState) => {\n setFilterState(clickedState);\n setPopoverState(false);\n props.onFilterStateChanged(clickedState);\n };\n\n return (\n
\n \n {getInvoicesFilterStateResources(filterState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(InvoicesFilterState).map(state => {\n return renderFilterStateItem(state, props.resources, props.className, onFilterStateClick);\n })}\n \n
\n );\n};\n\nexport const InvoicesFilterComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesFilterProps\n>('InvoicesFilterComponent', { component: InvoicesFilter });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\nexport interface IInvoicesTableHeaderResources {\n invoicesText: string;\n invoiceNumberText: string;\n invoiceDateMobileText: string;\n invoiceDateText: string;\n invoiceUsersText: string;\n invoiceAmountText: string;\n invoiceDueDateText: string;\n invoiceAmountDueText: string;\n invoiceStatusText: string;\n invoiceActionsText: string;\n invoiceListSelectAllRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isSelectedAll: boolean;\n isMobile: boolean;\n isAdmin: boolean;\n\n resources: IInvoicesTableHeaderResources;\n\n onSelectAll(isSelected: boolean): void;\n}\n\nexport interface IInvoicesTableHeaderComponent extends IComponent {}\n\nconst getDesktopHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n
\n \n \n \n \n \n \n \n \n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, {\n IComponent,\n IComponentProps,\n ICoreContext,\n IDateFormatOptions,\n isOboRequest,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject,\n setShowActions: React.Dispatch>\n) => () => {\n setShowActions(false);\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nlet setShowPreviousActions: React.Dispatch> | undefined;\n\n/**\n * On Click view details function.\n * @param linkToInvoiceDetails -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\n if (MsDyn365.isBrowser) {\n window.location.href = linkToInvoiceDetails;\n }\n return;\n};\n\n/**\n * Toggle function.\n * @param isShowActions -Link to invoice details.\n * @param setShowActions -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\n const shouldShowActions = !isShowActions;\n if (shouldShowActions) {\n if (setShowPreviousActions) {\n setShowPreviousActions(false);\n }\n setShowActions(shouldShowActions);\n setShowPreviousActions = setShowActions;\n } else {\n setShowPreviousActions = undefined;\n setShowActions(shouldShowActions);\n }\n};\n\nfunction useOutsideClick(refinerRefernce: React.RefObject, toggle: (event: Event | MouseEvent) => void) {\n function handleClickOutside(event: Event | MouseEvent) {\n if (refinerRefernce.current && !refinerRefernce.current.contains(event.target as Node)) {\n toggle(event);\n }\n }\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n return () => {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n };\n }, [refinerRefernce, toggle]);\n}\n\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\n const {\n resources: {\n invoiceViewDetailsButtonAriaLabel,\n invoiceViewDetailsButtonText,\n invoiceActionsButtonTextAriaLabel,\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel\n },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n const wrapperRefiner = React.useRef(null);\n useOutsideClick(wrapperRefiner, toggle(showActions && !isOnBehalfOfRequest, setShowActions));\n return (\n
\n \n {showActions && !isOnBehalfOfRequest && (\n
\n \n {invoiceViewDetailsButtonText}\n \n \n \n
\n )}\n
\n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n
\n \n \n \n \n );\n};\n\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\n const {\n data: { invoice }\n } = props;\n\n const onSelectLine = () => {\n invoice.isSelected = !invoice.isSelected;\n props.onChange();\n };\n\n let rowCells: JSX.Element;\n if (props.isMobile) {\n rowCells = getMobileRowCells(props, onSelectLine);\n } else {\n rowCells = getDesktopRowCells(props, onSelectLine);\n }\n\n return {rowCells};\n};\n\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableRowComponent\n>('InvoicesTableRowComponent', { component: InvoicesTableRow });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../helpers/invoice-data';\nimport { IInvoiceErrorState } from '../../invoices-list';\nimport { IInvoicesTableHeaderResources, InvoicesTableHeaderComponent } from './components/invoices-table-header-component';\nimport { IInvoicesTableRowResources, InvoicesTableRowComponent } from './components/invoices-table-row-component';\n\ninterface IInvoicesTableData {\n invoices: InvoiceModel[];\n customer: Customer;\n}\n\nexport interface IInvoicesTableResources extends IInvoicesTableHeaderResources, IInvoicesTableRowResources {}\n\nexport interface IInvoicesTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n invoiceButtonReferences?: React.RefObject[];\n payInvoiceButtonReferences?: React.RefObject[];\n resources: IInvoicesTableResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableComponent extends IComponent {}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst getViewport = (context: ICoreContext): GridSize => {\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (window?.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n};\n\nconst isMobileView = (context: ICoreContext) => {\n const viewport = getViewport(context);\n return viewport === 'xs' || viewport === 'sm';\n};\n\n/**\n * On select all function.\n * @param props -Invoice table props.\n * @returns On change.\n */\nconst onSelectAllHandler = (props: IInvoicesTableProps) => (isSelected: boolean) => {\n props.data.invoices.forEach(invoice => {\n invoice.isSelected = isSelected;\n });\n props.onChange();\n};\n\nconst InvoicesTable: React.FC = (props: IInvoicesTableProps): JSX.Element => {\n const [isMobile, setIsMobile] = useState(isMobileView(props.context));\n\n const updateViewport = () => {\n setIsMobile(isMobileView(props.context));\n };\n\n if (typeof window !== undefined && window.addEventListener) {\n window.addEventListener('resize', updateViewport);\n }\n const rowClassName = `${props.className}__row`;\n const headerClassName = `${props.className}__header`;\n\n return (\n
\n \n {resources.invoiceNumberText}{resources.invoiceDateText}{resources.invoiceUsersText}{resources.invoiceAmountText}{resources.invoiceDueDateText}{resources.invoiceAmountDueText}{resources.invoiceStatusText}{resources.invoiceActionsText}\n \n {resources.invoicesText}{resources.invoiceDateMobileText}\n {` `}\n {/* Actions */}\n \n );\n};\n\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\n const rowClassName = `${props.className}__row`;\n\n const switchCheckedState = () => {\n props.onSelectAll(!props.isSelectedAll);\n };\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\n } else {\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\n }\n\n return (\n
\n \n \n \n {invoice.id}\n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n {formatDate(props.context, invoice.dueDate)}\n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n {getInvoiceStatusText(props.resources, invoice.status)}\n {extraActionsPopup(props)}\n \n \n \n {invoice.id}\n \n
\n {invoice.customerName}\n
\n {formatDate(props.context, invoice.dueDate)}\n
\n {getInvoiceStatusText(props.resources, invoice.status)}\n
{extraActionsPopup(props)}
\n invoice.isSelected)}\n isMobile={isMobile}\n isAdmin={props.data.customer.IsB2bAdmin || false}\n onSelectAll={onSelectAllHandler(props)}\n resources={props.resources}\n data={{}}\n />\n {props.data.invoices.map((invoice, index: number) => {\n return (\n \n );\n })}\n
\n );\n};\n\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableComponent\n>('InvoicesTableComponent', { component: InvoicesTable });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\ninterface IMakePaymentData {\n invoices: InvoiceModel[];\n}\n\nexport interface IMakePaymentResources {\n makePaymentButtonText: string;\n makePaymentButtonAriaLabel: string;\n}\n\nexport interface IMakePaymentProps extends IComponentProps {\n context: ICoreContext;\n itemKey?: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n telemetryContent?: ITelemetryContent;\n navigationUrl?: string;\n buttonReferences?: React.RefObject;\n resources: IMakePaymentResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IMakePaymentComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IMakePaymentProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.buttonReferences);\n }\n setDisabled(false);\n };\n\n await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\n};\n\nconst MakePaymentComponentActions = {\n onClick\n};\n\n/**\n * On Click function.\n * @param input -Make payment props.\n * @param setDisabled -Set Disabled.\n * @returns Make payment component on click.\n */\nconst onClickHandler = (input: IMakePaymentProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await MakePaymentComponentActions.onClick(event, input, setDisabled);\n};\n\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\n const {\n data: { invoices }\n } = input;\n // Added condition to enable MakePayment button only if can be paid invoice is selected\n const hasInvoices =\n ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid)) &&\n ArrayExtensions.hasElements(invoices.filter(invoice => invoice.isSelected));\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {input.resources.makePaymentButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'MakePayment',\n { component: MakePayment }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IPayableInvoice } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\nexport interface IPayInvoiceData {\n invoice: IPayableInvoice;\n}\n\nexport interface IPayInvoiceResources {\n payInvoiceButtonText: string;\n payInvoiceButtonAriaLabel: string;\n}\n\nexport interface IPayInvoiceProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n reference?: React.RefObject;\n resources: IPayInvoiceResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\ninterface IPayInvoiceComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IPayInvoiceProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.reference);\n }\n setDisabled(false);\n };\n\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\n};\n\nconst PayInvoiceComponentActions = {\n onClick\n};\n\n/**\n * On click handler function.\n * @param props -Invoice props.\n * @param setDisabled -Set disabled.\n * @returns Pay invoice component action.\n */\nconst onClickHandler = (props: IPayInvoiceProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await PayInvoiceComponentActions.onClick(event, props, setDisabled);\n};\n\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {props.resources.payInvoiceButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'PayInvoiceComponent',\n { component: PayInvoice, ...PayInvoiceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IRequestInvoiceButtonProps {\n innerReference?: React.RefObject;\n className: string;\n requestInvoiceButtonLabel: string;\n onClicked(): void;\n}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\n requestInvoiceButtonLabel,\n innerReference\n}) => {\n return (\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IPayableInvoice {\n readonly id: string;\n readonly canBePaid: boolean;\n}\n\n/**\n * Represents invoice data model.\n */\nexport class InvoiceModel implements IPayableInvoice {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public amount?: number;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public currencyCode?: string;\n\n public isSelected: boolean;\n\n public constructor(invoice: OrderInvoice) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerAccountNumber = invoice.CustomerAccountNumber;\n this.customerName = invoice.CustomerName;\n this.amount = invoice.TotalAmount;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.currencyCode = invoice.CurrencyCode;\n\n this.isSelected = false;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IInvoiceStatusResources {\n invoiceStatusNone: string;\n invoiceStatusUnpaid: string;\n invoiceStatusPartiallyPaid: string;\n invoiceStatusPaid: string;\n}\n\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\n switch (invoiceStatus) {\n case InvoicePaidStatus.None:\n return resources.invoiceStatusNone;\n\n case InvoicePaidStatus.Unpaid:\n return resources.invoiceStatusUnpaid;\n\n case InvoicePaidStatus.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n\n case InvoicePaidStatus.Paid:\n return resources.invoiceStatusPaid;\n default:\n return '';\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IInvoiceErrorState } from '../invoices-list';\nimport { IPayableInvoice } from './invoice-data';\n\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\nexport interface IAddInvoicesToCartFailureResult {\n failureReason: ICartActionFailureReason;\n}\n\nexport const payInvoices = async (\n invoices: IPayableInvoice[],\n actionContext: IActionContext,\n onError: (errorState: IInvoiceErrorState) => void\n) => {\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\n\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } });\n return;\n }\n\n const cartState = await getCartState(actionContext);\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\n\n if (result.status !== 'SUCCESS') {\n onError({\n errorMessage: '',\n errorReason: { failureReason: 'CARTACTIONFAILED' },\n otherError: result.errorDetails?.LocalizedMessage,\n errorCode: result.errorDetails?.ErrorResourceId\n });\n return;\n }\n\n const cartUrl = getUrlSync('cart', actionContext);\n if (cartUrl) {\n window?.location.assign(cartUrl);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\n/* ---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { IInvoicesListResources } from '../invoices-list.props.autogenerated';\n\ninterface IRequestInvoiceModalProps {\n className: string;\n email: string;\n isModalOpen: boolean;\n submitRequestLabel: string;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n cancelLabel: string;\n searchPlaceholderLabel: string;\n invoices: InvoiceModel[];\n invoicesFoundString: string;\n singleInvoiceFoundString: string;\n searchButtonAltText: string;\n resources: IInvoicesListResources;\n toggle(): void;\n onSubmitRequest(invoiceId: string): void;\n}\n\n/**\n * On submit request click function.\n * @param selectedInvoiceIndex -Check is busy.\n * @param onClosing -On closing function.\n * @param filteredInvoices -Invoice modal.\n * @param onSubmitRequest -On submit request function.\n * @returns Call on submit request.\n */\nconst onSubmitRequestClick = (\n onClosing: () => void,\n filteredInvoices: InvoiceModel[],\n onSubmitRequest: (invoiceId: string) => void,\n checkboxRef: React.MutableRefObject\n) => () => {\n const defaultIndex = 0;\n let closingFlag: number = 0;\n\n filteredInvoices.map((invoice, index) => {\n const inputInvoice = checkboxRef.current[Number(index)] as React.RefObject;\n if (inputInvoice.current?.checked === true && index >= defaultIndex) {\n onSubmitRequest(invoice.id);\n closingFlag = closingFlag + 1;\n }\n });\n if (closingFlag <= filteredInvoices.length) {\n onClosing();\n }\n};\n\n/**\n * On search input change function.\n * @param setSearchInput -Set search input.\n * @returns Set search input function.\n */\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (\n event: React.ChangeEvent\n) => {\n setSearchInput(event.target.value);\n};\n\n/**\n * Search entered handler.\n * @param invoices -InvoiceModel.\n * @param searchInput -String.\n * @param setFilteredInvoices -InvoiceModel action.\n * @param filteredInvoices -Filtered Invoices.\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\n * @param setShouldShowSearchResults -Show search result action.\n * @param setInvoiceOptions -Invoice options action.\n * @param selectedInvoiceIndex -Selected invoice index.\n * @param className -String.\n * @returns Set invoice options.\n */\nconst searchEnteredHandler = (\n invoices: InvoiceModel[],\n searchInput: string,\n setFilteredInvoices: React.Dispatch>,\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: React.Dispatch>,\n setShouldShowSearchResults: React.Dispatch>,\n setInvoiceOptions: React.Dispatch>,\n selectedInvoiceIndex: number,\n className: string,\n checkboxRef: React.MutableRefObject\n) => () => {\n let updatedInvoices = filteredInvoices;\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\n updatedInvoices = invoices.filter(invoice => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\n } else {\n updatedInvoices = invoices;\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(\n renderInvoiceOptions(\n StringExtensions.isNullOrEmpty(searchInput) ? invoices : updatedInvoices,\n setSelectedInvoiceIndex,\n className,\n checkboxRef\n )\n );\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
\n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
\n \n \n
\n );\n })}\n
\n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
\n \n
\n {email}\n
\n
\n {shouldShowSearchResults && (\n
\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
\n )}\n
\n \n \n
\n {invoiceOptions}\n
\n
\n
\n \n \n {submitRequestLabel}\n \n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, isOboRequest } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\nimport { RequestInvoiceButton } from './components/request-invoice-button';\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\nimport { InvoiceModel } from './helpers/invoice-data';\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\nimport { IInvoicesListData } from './invoices-list.data';\nimport { IInvoicesListProps } from './invoices-list.props.autogenerated';\n\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\n\nexport interface IInvoicesListViewProps extends IInvoicesListProps {\n moduleProps: IModuleProps;\n\n header: JSX.Element;\n filter: JSX.Element;\n content?: JSX.Element;\n invoiceRequestModal?: JSX.Element;\n pagination?: JSX.Element;\n}\n\nexport interface IInvoiceErrorState {\n errorHost?: InvoiceErrorHost;\n errorReason?: IAddInvoicesToCartFailureResult;\n errorMessage: string;\n otherError?: string;\n errorCode?: string;\n}\n\nexport interface IInvoicesListState {\n invoices: InvoiceModel[];\n invoicesFilterState: InvoicesFilterState;\n errorState: IInvoiceErrorState;\n isInvoiceRequestModalOpen: boolean;\n isLoading: boolean;\n isOpen: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\n@observer\nclass InvoicesList extends React.Component, IInvoicesListState> {\n private readonly _className: string = 'msc-invoices-list';\n\n private readonly payInvoiceRequestReference: React.RefObject;\n\n private readonly makePaymentReference: React.RefObject;\n\n private buttonChildReference: React.RefObject[] = [];\n\n private buttonChildPayButtonReference: React.RefObject[] = [];\n\n private readonly _queryResultSettings: IQueryResultSettings;\n\n private invoiceIds: string[] = [];\n\n constructor(props: IInvoicesListProps) {\n super(props);\n\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\n this.props.context.request,\n this.props.config as IQueryResultSettingsModuleConfig\n ).QueryResultSettings;\n this.payInvoiceRequestReference = React.createRef();\n this.makePaymentReference = React.createRef();\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\n this._requestInvoice = this._requestInvoice.bind(this);\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n this.state = {\n invoices: [],\n invoicesFilterState: InvoicesFilterState.ShowAll,\n isLoading: true,\n isOpen: true,\n isPageLoaded: false,\n errorState: { errorMessage: '' },\n isInvoiceRequestModalOpen: false,\n payInvoiceErrorModalOpen: false,\n selectedButtonElement: null\n };\n }\n\n public shouldComponentUpdate(nextProps: IInvoicesListProps, nextState: IInvoicesListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className = '', heading },\n context: {\n request: { channel },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n data: { customerBalance },\n resources: { invoicesListTitle, invoicesListDescTitle, invoicesListDescCount }\n } = this.props;\n\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\n\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n
{invoicesListDescTitle}
\n
{amountText}
\n
{countText}
\n
\n
\n );\n\n const viewProps: IInvoicesListViewProps = {\n ...(this.props as IInvoicesListProps),\n moduleProps: {\n moduleProps: this.props,\n className: classnames(this._className, className)\n },\n header,\n invoiceRequestModal: this._renderInvoiceRequestModal(),\n filter: this._renderInvoicesFilter(this._className),\n pagination: this._renderPagination()\n };\n\n if (!this.state.isPageLoaded) {\n return this.props.renderView(viewProps);\n }\n\n if (ArrayExtensions.hasElements(this.state.invoices)) {\n viewProps.content = this._renderListContainer();\n } else {\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public async componentDidMount(): Promise {\n await this.props.data.customer;\n const invoicesData = await this.props.data.invoices;\n this._initializeWithInvoices(invoicesData);\n\n reaction(\n () => this.state.isInvoiceRequestModalOpen,\n async () => {\n if (this.invoiceIds && !this.state.isInvoiceRequestModalOpen) {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n for (const invoiceId of this.invoiceIds) {\n await BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(\n context,\n b2bUserId,\n invoiceId,\n BusinessPartnerOperationDeliveryType.Email\n );\n }\n this.invoiceIds = [];\n }\n }\n );\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
\n
{this.props.resources.invoiceEmptyInvoiceLinesTitle}
\n
{this.props.resources.invoiceEmptyInvoiceLinesDescription}
\n
\n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
\n
\n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n const isOnBehalfOfRequest = isOboRequest(this.props.context.request);\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass, isOnBehalfOfRequest)}\n {this._renderInvoiceRequestButton()}\n
\n
{this._renderInvoiceErrors()}
\n
{this._renderInvoicesList(containerContentClass)}
\n
\n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner?.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer?.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerContentClass = `${containerClass}__content`;\n const filterClassName = `${className}__filter`;\n return (\n
\n
{this._renderInvoiceInCartPaymentMessage()}
\n \n
\n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string, disabled: boolean): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderInvoiceInCartPaymentMessage(): JSX.Element {\n const cart = this.props.data.cart?.result;\n\n if (!cart?.hasInvoiceLine) {\n return <>;\n }\n\n return (\n \n \n \n );\n }\n\n // Dismiss alert.\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private _renderPagination(): JSX.Element | undefined {\n const { data, resources } = this.props;\n const invoices = data?.invoices?.result;\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\n return undefined;\n }\n\n return (\n \n {resources.invoicesLoadMore}\n \n );\n }\n\n private async _loadMoreInvoices(): Promise {\n this.setState({ isLoading: true });\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\n }\n const newInvoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._addInvoices(newInvoices);\n }\n\n private _renderInvoiceRequestModal(): JSX.Element {\n const customer = this.props.data.customer.result;\n const {\n invoiceRequestModalCancelLabel,\n invoiceRequestModalSubmitLabel,\n invoiceRequestModalHeaderLabel,\n invoiceRequestModalSendToEmailLabel,\n invoiceRequestModalSearch,\n invoiceRequestModalInvoiceSearchDisplay,\n invoiceRequestModalSingleInvoiceSearchDisplay,\n invoiceRequestModalSearchButton\n } = this.props.resources;\n\n return (\n \n );\n }\n\n private _onToggleInvoiceRequestModal(): void {\n this.setState({\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\n });\n if (this.state.isInvoiceRequestModalOpen) {\n this.state.selectedButtonElement?.focus();\n }\n }\n\n /**\n * Request specific invoice function.\n */\n private readonly _onToggleInvoiceRequestParentModal = () => {\n this.setState(\n {\n selectedButtonElement: this.payInvoiceRequestReference.current\n },\n () => {\n this._onToggleInvoiceRequestModal();\n }\n );\n };\n\n private _renderInvoiceRequestButton(): JSX.Element | null {\n const { invoiceRequestButtonLabel } = this.props.resources;\n const customer = this.props.data.customer.result;\n\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _requestInvoice(invoiceId: string): void {\n this.invoiceIds.push(invoiceId);\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.Component> {\n @observable public map: Microsoft.Maps.Map | undefined;\n private timeout: number = 500;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const loadMapAPIInput = {\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n };\n\n if (\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded\n ) {\n this._initMap();\n if (this.props.data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n this._updateMapsForDistributor();\n } else {\n this._updateMap();\n }\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n when(\n () => !!this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.loadMapApi ||\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi,\n () => {\n if (this.props.data.distributorSelectorStateManager?.result?.loadMapApi) {\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n } else {\n this.props.data.storeSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n }\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.distributorSelectorStateManager?.result?.distributorList,\n this.props.data.distributorSelectorStateManager?.result?.selectedDistributorId,\n this.map\n ];\n },\n () => {\n this._updateMapsForDistributor();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data\n } = this.props;\n\n const shouldDisplayMap = data.storeSelectorStateManager?.result?.isDialogOpen\n ? data.storeSelectorStateManager?.result?.listMapViewState.displayMap\n : data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen\n ? data.distributorSelectorStateManager?.result?.listMapViewState.displayMap\n : false;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data\n } = this.props;\n\n if (data.storeSelectorStateManager?.result?.isMapApiLoaded || data.distributorSelectorStateManager?.result?.isMapApiLoaded) {\n const mapLoadOptions = {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n };\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, mapLoadOptions);\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n if (data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n // Hide the distributor details that appear below the screen size of 768px.\n data.distributorSelectorStateManager?.result?.updateDistributorMapVisibility(false);\n await data.distributorSelectorStateManager?.result?.setSelectedDistributorId(undefined);\n } else {\n await data.storeSelectorStateManager?.result?.setSelectedStoreLocationId(undefined);\n }\n });\n }\n };\n\n private readonly _updateMapsForDistributor = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n const distributorInfoList = distributorSelectorStateManager?.distributorList;\n const selectedDistributorId = distributorSelectorStateManager?.selectedDistributorId;\n\n if (this.map && ArrayExtensions.hasElements(distributorInfoList)) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const distributorList = distributorInfoList.filter(distributor => distributor.OrgUnit !== undefined);\n\n for (const [index, distributorInfo] of distributorList.entries()) {\n const orgUnit = distributorInfo.OrgUnit;\n\n if (orgUnit?.Latitude && orgUnit.Longitude) {\n const isLocationSelected = selectedDistributorId === orgUnit?.RecordId;\n const options = this._getPushpinOptions(isLocationSelected, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(orgUnit?.Latitude, orgUnit.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleDistributorPushpinClick(orgUnit.RecordId);\n });\n isLocationSelected ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isLocationSelected) {\n mapLocation = orgUnit;\n }\n }\n }\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n }, this.timeout);\n }\n };\n\n /**\n * Handle the click event of the pushpin for distributors on the maps.\n * @param recordId - RecordId.\n */\n private readonly handleDistributorPushpinClick = (recordId: number | undefined): void => {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n // Show the distributor details that appear below the screen size of 768px.\n distributorSelectorStateManager?.updateDistributorMapVisibility(true);\n distributorSelectorStateManager?.setSelectedDistributorId(undefined);\n if (recordId) {\n setTimeout(() => {\n distributorSelectorStateManager?.setSelectedDistributorId(recordId);\n }, this.timeout);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\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 { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\n"],"names":["NavigationMenuView","React","constructor","props","super","currentLevel","_updateCategoryImage","categoryImageSrc","option","linkText","promotionalImage","src","altText","ArrayExtensions","hasElements","promotionalContent","map","item","image","imageSrc","promotionalItemImageSettings","imageSettings","push","text","additionalProperties","linkUrl","destinationUrl","this","setState","categoryImage","length","categoryImageAltText","_handleDropdownToggle","data","parentId","isMobileView","isBackTrack","activeMenu","id","mobileViewLabelText","parentMenu","state","undefined","menuItemListStateBool","showCategoryImage","imageSource","_handleGoBack","_handleClickOutside","event","menuNode","current","contains","target","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","index","optionLinkText","_getCategoryImage","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_ref","_categoryImage$imageS","generateImageUrl","context","actionContext","requestContext","apiSettings","Image","Object","assign","className","gridSettings","request","config","categoryImageSettings","loadFailureBehavior","role","menuItemRef","drawerKeyValue","bind","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","componentDidMount","MsDyn365","isBrowser","document","body","addEventListener","componentDidUpdate","_this$menuItemRef$cur","children","focus","componentWillUnmount","removeEventListener","render","MenuList","MobileBackButton","MobileDescriptionContainer","MobileDescriptionLabel","Navigation","Module","classnames","Node","ref","tabIndex","onClick","_renderDisplay","ListItem","menuItemData","menuItemList","menuItem","menuItemDatum","_getFromSubMenu","key","_createMenuItemList","forEach","subMenus","subMenu","i","found","error","_renderSubMenu","_renderButtonMenuItem","linkURL","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","Link","url","requestUrl","origin","window","location","replace","String","onFocus","hoverEffect","arguments","isParent","imagesource","contentAction","etext","attributes","getTelemetryAttributes","shouldOpenNewTab","onMouseOver","href","onTelemetryClick","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","RequestsTableColumnHeader","getUserName","resources","StringExtensions","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","date","cultureFormatter","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","moduleProps","tableData","operationRequests","result","_request$TypeValue","_request$StatusValue","row","b2bRequestsTypeColumn","type","TableDataType","Text","value","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","filter","isMobile","mobileExcludedColumns","includes","name","sortable","ariaLabel","columnSortAriaLabel","rows","editLinkText","deleteLinkText","viewLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","isNaN","Number","parseInt","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","reqContext","URL","isSingleSelectOnly","actions","onDelete","onEdit","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","Heading","tag","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","format","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","isChannelTypeB2B","viewProps","_objectSpread","b2bRequestsStatus","heading","table","renderView","__decorate","computed","noclick","attribute","itemProp","content","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","_getCustomBreadcrumbLinks","itemPosition","links","keyIndex","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","find","Language","toLowerCase","_getPDPLinks","categoryPaths","product","Name","hideProductName","_goBack","history","back","_getPDPBackButton","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","link","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","description","modal","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","min","max","applyDefaultOrderSettings","quantity","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","title","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","ImageList","handleParagraphChange","images","paragraph","_renderImageListItems","imageList","xl","disableLazyLoad","_image$imageSettings","_link$linkText","imageProps","imageLink","imageLinkText","imageLinkAriaLabel","imageLinkOpenInNewTab","openInNewTab","Msdyn365","editProps","linkAltText","linkAriaLabel","linkOpenInNewTab","_heading$tag","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","editableLink","onTextChange","InteractiveFeatureItem","_telemetryContent","handleHeadingChange","handleLinkTextChange","linkIndex","_this$props$config$li","indexItem","itemCounter","isMosaic","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","invoiceDate","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","isOboRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","currencyCode","formatCurrency","amountDue","PayInvoiceComponent","invoice","disabled","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","label","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","Quantity","productUrl","ProductName","ProductId","getProductPageUrlSync","RecordId","_renderProductImage","_context$request$app","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","OmniChannelMedia","primaryImageUrl","fallBackSrc","_renderProductDimensions","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","products","Id","InvoiceDate","Date","CustomerName","InvoiceDueDate","AmountBalance","status","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","CurrencyCode","InvoicePaidStatus","Paid","InvoiceDetails","errorState","errorMessage","otherError","_onAddToCartFailed","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","productInputs","ProductInput","getSimpleProductsAction","newErrorState","errorHost","errorCode","_this$state$errorStat","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","errorClassName","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","errorMessages","Alert","isOpen","color","assertive","message","Modal","toggle","ModalHeader","ModalBody","ModalFooter","Button","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onClickHandler","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","setShowActions","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","useState","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","wrapperRefiner","refinerRefernce","handleClickOutside","useOutsideClick","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","rowCells","getMobileRowCells","invoiceRowArialabel","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","customer","isCurrentUser","AccountNumber","customerAccountNumber","invoiceCurrentUser","viewport","_window","device","Type","innerWidth","getViewport","onSelectAllHandler","invoices","InvoicesTableComponent","setIsMobile","updateViewport","headerClassName","all","isAdmin","IsB2bAdmin","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","async","_event","setDisabled","payInvoices","buttonReferences","MakePaymentComponent","hasInvoices","canBePaid","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","htmlFor","RequestInvoiceModal","email","isModalOpen","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","setTimeout","_focusElement$current","searchEntered","searchEnteredHandler","updatedInvoices","toLocaleUpperCase","searchResultString","invoicesFoundReplaceIndex","indexOf","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onDismiss","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","shouldComponentUpdate","nextProps","nextState","_customerBalance$resu","_customerBalance$resu2","_heading$text","channel","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","pagination","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","reaction","_this$props$data$b2bU","callerContext","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","Email","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","BusinessPartnerId","getCustomer","GetCustomerInput","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","_renderInvoiceInCartPaymentMessage","tableClassName","_newErrorState$errorR","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleTypeName","navigationUrl","_this$state$selectedB","invoiceErrorMessageHeader","_this$props$data$cart","cart","hasInvoiceLine","invoiceInCartPaymentMessage","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","_this$state$selectedB2","specificInvoice","observer","InvoiceListView","Map","timeout","mapRef","_initMap","_data$storeSelectorSt","_data$distributorSele","storeSelectorStateManager","isMapApiLoaded","distributorSelectorStateManager","mapLoadOptions","credentials","BingMapsApiKey","pushpinAccessible","Microsoft","Maps","Events","addHandler","_data$distributorSele2","_data$distributorSele3","_data$distributorSele4","_data$storeSelectorSt2","isDistributorSelectorDialogOpen","updateDistributorMapVisibility","setSelectedDistributorId","setSelectedStoreLocationId","_updateMapsForDistributor","_this$props$data$dist","pushpinOptions","distributorInfoList","distributorList","selectedDistributorId","mapLocation","entities","clear","pushpins","distributor","OrgUnit","distributorInfo","entries","orgUnit","Latitude","Longitude","isLocationSelected","options","_getPushpinOptions","pushpin","Pushpin","Location","handleDistributorPushpinClick","unshift","currentLocation","setView","center","_Microsoft$Maps$Locat","bounds","LocationRect","fromShapes","setOptions","_updateMap","_this$props$data$stor","_storeSelectorStateMa","orgUnitStoreInformation","selectedStoreLocationId","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","isSelectedLocation","OrgUnitNumber","handleClickEvent","_Microsoft$Maps$Locat2","orgUnitNumber","recordId","_this$props$data$dist2","showIndex","size","selectionColor","icon","_getSvgIcon","_this$props$context","_this$props$data$stor2","_this$props$data$dist3","BingMapsEnabled","loadMapAPIInput","lang","market","ChannelCountryRegionISOCode","_this$props$data$dist4","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","_this$props$data$dist5","_this$props$data$dist6","_this$props$data$stor5","_this$props$data$dist7","loadMapApi","_this$props$data$dist8","_this$props$data$dist9","_this$props$data$stor6","_this$props$data$stor7","_this$props$data$dist10","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$dist11","_this$props$data$dist12","_data$storeSelectorSt3","_data$storeSelectorSt4","_data$distributorSele5","_data$distributorSele6","shouldDisplayMap","isDialogOpen","listMapViewState","displayMap","classname","show","Header","headerProps","MapProps","observable","MapHeader","_ref2"],"sourceRoot":""}