{"version":3,"file":"static/js/11.45e05cca1ecfbcb3a9c9.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/header.view.tsx?2a15","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/reviews-list.view.tsx?43bb","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.tsx?36f7","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.view.tsx?a302","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.tsx?78b1","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.view.tsx?8c7b","webpack://Msdyn365.Commerce.Online/./src/modules/aad-generic/aad-generic.tsx?c076","webpack://Msdyn365.Commerce.Online/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.tsx?2f8c","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.view.tsx?ac91","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-description.tsx?4911","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-links.tsx?bee7","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?7378","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?81f3","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.tsx?c17e","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.view.tsx?0a60","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-links.tsx?6c7f","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/account-loyalty-tile.tsx?7f29","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/account-loyalty-tile.view.tsx?3547","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-description.tsx?c7bb","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/components/account-order-templates-tile-description.tsx?a8c4","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/components/account-order-templates-tile-links.tsx?0bcf","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/account-order-templates-tile.tsx?4e7d","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/account-order-templates-tile.view.tsx?a1f9","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-attributes.tsx?bcc2","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-links.tsx?8faf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/account-profile.tsx?fe69","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/account-profile.view.tsx?b964","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-description.tsx?770a","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-text.tsx?8115","webpack://Msdyn365.Commerce.Online/./src/modules/account-welcome-tile/account-welcome-tile.tsx?2115","webpack://Msdyn365.Commerce.Online/./src/modules/account-welcome-tile/account-welcome-tile.view.tsx?e5e3","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?0588","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?f114","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/account-wishlist-tile.tsx?b721","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/account-wishlist-tile.view.tsx?095e","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/password-reset/components/password-reset-button.tsx?a869","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-error.tsx?fbfd","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-input.tsx?20d9","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-label.tsx?6ef1","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-loading-icon.tsx?8828","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-loading-message.tsx?a980","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/password-reset.tsx?0983","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/password-reset.view.tsx?b341","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-button.tsx?33d4","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-error.tsx?b9c0","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-input.tsx?27a8","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-label.tsx?3142","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-loading-icon.tsx?96eb","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-loading-message.tsx?9245","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-success.tsx?7f30","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/sign-up.tsx?5ad1","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/sign-up.view.tsx?08eb","webpack://Msdyn365.Commerce.Online/./src/modules/business-organization-list/business-organization-list.tsx?0823","webpack://Msdyn365.Commerce.Online/./src/modules/business-organization-list/business-organization-list.view.tsx?c050","webpack://Msdyn365.Commerce.Online/./src/modules/business-organization-list/components/small-components.tsx?c4b5","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/cart.view.tsx?ac8f","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.tsx?074a","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.view.tsx?c5af","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.tsx?6111","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.view.tsx?5db9","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.tsx?6583","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.view.tsx?7490","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/business-organization-list.view.tsx?e6ec","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/media-gallery.view.tsx?7624","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/reviews-list.view.tsx?39ca"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { Collapse, Drawer, Module, Node, Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\n\r\nconst headerView: React.FC> = props => {\r\n if (typeof window !== 'undefined') {\r\n const [scrolled, setScrolled] = React.useState(false);\r\n const handleScroll = () => {\r\n const offset = window.scrollY;\r\n offset > 5 ? setScrolled(true) : setScrolled(false);\r\n };\r\n scrolled ? document.body.classList.add('headerIsSticky') : document.body.classList.remove('headerIsSticky');\r\n React.useEffect(() => {\r\n window.addEventListener('scroll', handleScroll);\r\n //FIXME invert the condition\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n const menuTopDesktop = document.getElementsByClassName('menu--top desktop')[0];\r\n const desktopMenuTop = document.getElementsByClassName('menu--top_ctn')[0];\r\n if (document.getElementsByClassName('menu--top mobile').length) {\r\n const menuTopMobile = document.getElementsByClassName('menu--top mobile')[0];\r\n const mobileMenu = document.getElementsByClassName('mobile menus')[0];\r\n mobileMenu.appendChild(menuTopMobile);\r\n }\r\n desktopMenuTop.appendChild(menuTopDesktop);\r\n }\r\n }, []);\r\n }\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer } = props;\r\n //FIXME invert the condition\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {/* @ts-ignore */}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n {_renderAccountBlock(props, false)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {props.navIcon}\r\n {props.logo}\r\n
\r\n
{_renderReactFragment(props.menuBar)}
\r\n
\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n {_renderReactFragment(props.siteOptions)}\r\n
\r\n
\r\n
\r\n
\r\n {_renderCollapseMenu(props)}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.preferredStore}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n {_renderStoreLocatorButton(props)}\r\n \r\n {props.logo}\r\n \r\n {_renderReactFragment(props.search)}\r\n {_renderAccountBlock(props, false)}\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.navIcon}\r\n {props.logo}\r\n \r\n \r\n {/* {_renderReactFragment(props.search)} */}\r\n {_renderStoreLocatorButton(props)}\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n \r\n \r\n \r\n {_renderCollapseMenu(props)}\r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nfunction _renderCollapseMenu(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n const { mobileMenuCollapsed, Divider, MobileMenuLinksContainer } = props;\r\n if (typeof window !== 'undefined') {\r\n mobileMenuCollapsed === true ? document.body.classList.remove('no-scroll') : document.body.classList.add('no-scroll');\r\n }\r\n //FIXME invert the condition\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n return (\r\n \r\n {_renderReactFragment(props.search)}\r\n \r\n
\r\n
{_renderReactFragment(props.menuBar)}
\r\n {_renderMobileAccountBlock(props, true)}\r\n {/* @ts-ignore */}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n
\r\n \r\n {_renderReactFragment(props.search)}\r\n {/* {_renderMobileAccountBlock(props, true)} */}\r\n \r\n \r\n
{_renderReactFragment(props.menuBar)}
\r\n \r\n {/* //TODO remove */}\r\n {_renderMobileAccountBlock(props, true)}\r\n {/* {props.wishListIconMobile} */}\r\n \r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\n\r\n\r\n\r\n/////\r\n\r\nfunction _renderStoreLocatorButton(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n if (props.config.storeLocatorPageLink == undefined || props.config.storeLocatorPageLink.destinationUrl == undefined || props.config.storeLocatorLabel == undefined) {\r\n return (<>)\r\n }\r\n \r\n return (\r\n <>\r\n \r\n {props.config.storeLocatorLabel}\r\n \r\n \r\n );\r\n \r\n \r\n\r\n}\r\n\r\nexport default headerView;\r\n","import { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n// import { getTelemetryObject } from '@msdyn365-commerce-modules/utilities';\r\n// import { constructViewportInformationForImage } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n /* averageRating,\r\n filterByDropdown, */\r\n moduleProps,\r\n /* noReviewsMessage, */\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n /* refineReviewsProps, */\r\n reportReviewModal,\r\n /* reviewsListProps, */\r\n reviewCards,\r\n /* reviewCount, */\r\n reviewModal,\r\n /* sortByDropdown, */\r\n state,\r\n userReview\r\n } = props;\r\n\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n // const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName ?? '', 'Recensioni', props.telemetry);\r\n\r\n const _toggleReviewModal = () => {\r\n document.body.style.overflowY = modalOpen ? 'scroll' : 'hidden';\r\n setModalOpen(!modalOpen);\r\n };\r\n\r\n // @ts-ignore\r\n const averageRating = props.data.ratingsSummary.result.averageRating ?? 0;\r\n // @ts-ignore\r\n const buttonLabel = props.resources.product_review_list_button_label ?? '';\r\n // @ts-ignore\r\n const title = props.resources.reviewListLabel ?? '';\r\n\r\n React.useEffect(() => {\r\n const page_summary = document.getElementsByClassName('msc-average-rating-container')[0];\r\n const modal_summary = document.getElementsByClassName('msc-average-rating-container')[1];\r\n if (page_summary && modal_summary) {\r\n modal_summary.innerHTML = page_summary.innerHTML;\r\n }\r\n });\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n /* return {noReviewsMessage}; */\r\n /* return (\r\n \r\n
\r\n
); */\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {/* {averageRating}\r\n {reviewCount} */}\r\n {/* { reviewCards.length === 0 ?\r\n null : \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n } */}\r\n {/* {React.createElement(React.Fragment, null,\r\n modalToggle,\r\n createReviewModal(reviewModal, moduleProps)))} */}\r\n {/* \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n */}\r\n
\r\n
e.stopPropagation()}>\r\n
\r\n {title}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal, moduleProps)}\r\n {createReportModal(reportReviewModal, state)}\r\n
\r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.name}\r\n {props.date}\r\n {props.rating}\r\n \r\n \r\n \r\n {/* {props.reviewTitle} */}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {/* {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike} */}\r\n {props.edit}\r\n {/* {props.report} */}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\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 { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\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 { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\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 { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\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 { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps {\n AccountAddressTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component.\n * @extends {React.PureComponent>}\n */\nclass AccountAddressTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountAddressTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n const { address } = data;\n const addressCount = (address && address.result && address.result.length) || 0;\n const accountAddressTileDescription =\n addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n const description = format(accountAddressTileDescription, addressCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountAddressTile: {\n moduleProps: this.props,\n className: classnames('ms-account-address-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountAddressTile;\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 { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC = props => {\n const { AccountAddressTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountAddressTileView;\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 IAccountAddressTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountAddressTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountAddressTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-address-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountAddressTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountInvoiceTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-invoice-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountInvoiceTileLinks;\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountInvoiceTile;\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 { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountLoyaltyTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountLoyaltyTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-loyalty-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountLoyaltyTileLinks;\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 { LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileData } from './account-loyalty-tile.data';\nimport { IAccountLoyaltyTileProps } from './account-loyalty-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-loyalty-tile-description';\nimport LinksComponent from './components/account-loyalty-tile-links';\n\nexport interface IAccountLoyaltyTileViewProps extends IAccountLoyaltyTileProps {\n AccountLoyaltyTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.PureComponent>}\n */\nclass AccountLoyaltyTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountLoyaltyTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, data, resources, context } = this.props;\n const { className, heading, signUpLinkText, signUpLinkAriaLabel, viewLinkText, viewLinkAriaLabel } = config;\n const { accountLoyaltySummary, accountLoyaltyMemberSummary } = resources;\n const { loyaltyCard } = data;\n\n let description = accountLoyaltySummary;\n let url = Msdyn365.getUrlSync('loyaltyJoin', context.actionContext) || '';\n const link = { linkText: signUpLinkText, linkUrl: { destinationUrl: url }, ariaLabel: signUpLinkAriaLabel };\n\n if (loyaltyCard && loyaltyCard.result && loyaltyCard.result.CardNumber) {\n const decimalPrecision = 2;\n let points = 0;\n\n if (loyaltyCard.result.RewardPoints && loyaltyCard.result.RewardPoints.length > 0) {\n loyaltyCard.result.RewardPoints.forEach((rewardPoint: LoyaltyRewardPoint) => {\n points += rewardPoint.ActivePoints!;\n });\n }\n link.ariaLabel = viewLinkAriaLabel;\n link.linkText = viewLinkText;\n url = Msdyn365.getUrlSync('loyalty', context.actionContext) || '';\n link.linkUrl.destinationUrl = url;\n description = format(accountLoyaltyMemberSummary, points.toFixed(decimalPrecision));\n }\n\n const viewProps = {\n ...this.props,\n className,\n AccountLoyaltyTile: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty-tile', config.className)\n },\n heading: heading && (\n \n ),\n links: (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.signUpLinkText && this.props.config.viewLinkText) {\n this.props.config.viewLinkText = event.target.value;\n }\n };\n}\n\nexport default AccountLoyaltyTile;\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 { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountLoyaltyTileView;\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 IAccountLoyaltyTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountLoyaltyTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountLoyaltyTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrderTemplatesTileDescription {\n description: string;\n}\n\nexport const AccountOrderTemplatesTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-order-templates-tile.props.autogenerated';\n\nexport interface IAccountOrderTemplatesTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrderTemplatesTileLinks: React.FC = ({\n links,\n onTextChange,\n telemetryContent,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-order-templates-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileData } from './account-order-templates-tile.data';\nimport { IAccountOrderTemplatesTileProps } from './account-order-templates-tile.props.autogenerated';\nimport { AccountOrderTemplatesTileDescription, AccountOrderTemplatesTileLinks } from './components';\n\nexport interface IAccountOrderTemplatesTileViewProps extends IAccountOrderTemplatesTileProps {\n AccountOrderTemplatesTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountOrderTemplatesTile component.\n * @extends {React.PureComponent>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountOrderTemplatesTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature'\n );\n if (\n !this.props.context.request.params.isEditor &&\n (!RetailB2BEcommerceFeatureState?.IsEnabled || !this.props.data.customerInformation.result?.IsB2b)\n ) {\n return <>;\n }\n\n const { className, heading, links } = config;\n const { accountOrderTemplatesTileDescription } = resources;\n const orderTemplates = data.orderTemplates;\n\n const orderTemplatesCount = (orderTemplates?.result || []).length;\n const description = format(accountOrderTemplatesTileDescription, orderTemplatesCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountOrderTemplatesTile: {\n moduleProps: this.props,\n className: classnames('ms-account-order-templates-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountOrderTemplatesTile;\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 { IAccountOrderTemplatesTileViewProps } from './account-order-templates-tile';\n\nconst AccountOrderTemplatesTileView: React.FC = props => {\n const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountOrderTemplatesTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from '../account-profile.data';\nimport { IAccountProfileProps } from '../account-profile.props.autogenerated';\nimport TextComponent from './account-profile-text';\n\ninterface IAttributePropertiesType {\n Name?: string;\n IsMandatory?: boolean;\n}\n\nexport interface IAccountProfileAttributesProps {\n accountProfileProps: IAccountProfileProps;\n}\n\nexport enum AccountAttributeDataTypeValue {\n Decimal = 3,\n Integer = 4,\n Text = 5,\n TrueFalse = 6\n}\n\nexport interface IAttributePayloadData {\n recordId?: number;\n name?: string;\n dataTypeValue?: number;\n isEnumeration?: boolean;\n lowerBoundValue?: number;\n upperBoundValue?: number;\n decimalValue?: number;\n integerValue?: number;\n textValue?: string;\n booleanValue?: boolean;\n isMandatory?: boolean;\n defaultValue?: string;\n}\n\nexport interface IAccountProfileAttributesState extends React.ComponentState {\n editAttributes: boolean;\n phone: string;\n vatNumber: string;\n attributes: IDictionary;\n attributeError: IDictionary;\n}\n\n/**\n *\n * AccountProfileAttributes class.\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\n */\n@observer\nclass AccountProfileAttributes extends React.Component {\n private readonly attributePayloadData: IAttributePayloadData[];\n\n @observable private isUpdatingAttributes: boolean = false;\n\n @observable private gotException: boolean = false;\n\n private hasError: boolean = false;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private initialAttributes: IDictionary;\n\n private initialCustomerAttributes?: CustomerAttribute[];\n\n private initialPhone: string;\n\n private initialVatNumber: string;\n\n private readonly payLoad: IPayLoad;\n\n private readonly editRef: React.RefObject;\n\n private readonly attributesContainerRef: React.RefObject;\n\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\n\n private readonly maxIntegerLimit: number = 2_100_000_000;\n\n private readonly minIntegerLimit: number = -2_100_000_000;\n\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\n\n private readonly minDecimalLimit: number = -7_900_000_000_000;\n\n private readonly maxStringLength: number = 1000;\n\n private readonly maxVATNumberLength: number = 20;\n\n private readonly maxPhoneLength: number = 25;\n\n constructor(props: IAccountProfileAttributesProps) {\n super(props);\n this.state = {\n editAttributes: false,\n phone: '',\n vatNumber: '',\n attributes: {},\n attributeError: {}\n };\n this.initialAttributes = {};\n this.initialCustomerAttributes = [];\n this.initialPhone = '';\n this.initialVatNumber = '';\n this.attributePayloadData = [];\n const telemetryPageName =\n (this.props.accountProfileProps &&\n this.props.accountProfileProps.context &&\n this.props.accountProfileProps.context.request &&\n this.props.accountProfileProps.context.request.telemetryPageName) ||\n '';\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.editRef = React.createRef();\n this.attributesContainerRef = React.createRef();\n }\n\n public componentDidMount(): void {\n this._buildPayloadData();\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n reaction(\n () => this.props.accountProfileProps.data.customerInformation.result,\n () => {\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n }\n );\n reaction(\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\n () => {\n this._buildPayloadData();\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileAttributesProps, nextState: IAccountProfileAttributesState): boolean {\n if (this.state === nextState && this.props.accountProfileProps.data === nextProps.accountProfileProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this._renderAttributes();\n }\n\n private readonly _renderAttributes = (): JSX.Element | null => {\n const { config, data, resources } = this.props.accountProfileProps;\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\n const additionalInformationSectionHeading =\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\n const showAttributes = config.showAttributes || '';\n const attributes = showAttributes.split(',');\n const elements = attributes.map(att => {\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\n ) || { RecordId: 0 };\n return this._renderAttribute(attributeDefinition);\n });\n const edit = (this.state && this.state.editAttributes) || false;\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n const customerInformation = data.customerInformation.result;\n\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\n const disableBtn: boolean =\n (this.props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n return (\n \n {config.additionalInformationSectionHeading && (\n \n )}\n {config.showPhone && this._renderPhone()}\n {config.showVatNumber && this._renderVatNumber()}\n {elements}\n {this.gotException && (\n
\n \n
\n )}\n {!edit && (\n \n {resources.attributesEditButtonText}\n \n )}\n {edit && (\n \n {resources.attributesSaveButtonText}\n \n )}\n {edit && (\n \n {resources.attributesCancelButtonText}\n \n )}\n
\n );\n };\n\n private readonly _renderPhone = (): JSX.Element | null => {\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {phoneSectionHeading && }\n \n {this._renderError('Phone')}\n
\n );\n };\n\n private readonly _renderVatNumber = (): JSX.Element | null => {\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {vatNumberSectionHeading && }\n \n {this._renderError('VATNumber')}\n
\n );\n };\n\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\n const editAttributes = (this.state && this.state.editAttributes) || false;\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\n case AccountAttributeDataTypeValue.Integer:\n case AccountAttributeDataTypeValue.Decimal:\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.Text:\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.TrueFalse:\n return this._renderBoolean(customAttribute, className, editAttributes);\n default:\n return null;\n }\n };\n\n private readonly _renderIntegerDecimalInput = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderTextInputOrSelect = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n if (isEnumeration && customAttribute.EnumerationDetails) {\n const value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n return (\n
\n \n \n {hasNoValue && (\n \n )}\n {customAttribute.EnumerationDetails.map(option => {\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\n return (\n \n {option.EnumerationValue}\n \n );\n })}\n \n
\n );\n }\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderBoolean = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n let value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n const render = !(hasNoValue && !editAttributes);\n value = value || 'false';\n const toggleState = (value === 'true' && 'enable') || 'disable';\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\n const ariaPressed = (value === 'true' && true) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n let toggleValue = 'false';\n if (value === 'true') {\n toggleValue = 'false';\n } else {\n toggleValue = 'true';\n }\n\n return (\n \n \n {render && (\n \n \n \n \n
\n )}\n \n );\n };\n\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\n const hasError = !StringExtensions.isNullOrWhitespace(error);\n if (hasError) {\n return (\n
\n \n
\n );\n }\n return null;\n };\n\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n return {\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\n IsMandatory: isMandatory\n };\n };\n\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ phone: value });\n };\n\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ vatNumber: value });\n };\n\n private readonly _enableAttributes = () => {\n this.hasError = false;\n\n // To clear exception messages\n this.gotException = false;\n this.setState({ editAttributes: true, attributeError: {} });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n if (this.attributesContainerRef.current) {\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\n this.attributeClassName\n );\n if (attributes && attributes.length > 0) {\n this._setFocus(attributes[0] as HTMLElement);\n }\n }\n }, 0);\n }\n };\n\n private readonly _disableAttributes = () => {\n this.setState({\n editAttributes: false,\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n };\n\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\n event: React.MouseEvent\n ) => {\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.currentTarget.selectedOptions[0].value;\n const index = event.currentTarget.selectedOptions[0].index;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n },\n selectedIndex: {\n ...this.state.selectedIndex,\n [name]: index\n }\n });\n };\n\n private readonly _getAttributes = () => {\n const { config, data } = this.props.accountProfileProps;\n const showAttributes = config.showAttributes || '';\n const showAttributesArray = showAttributes.split(',');\n const customer = data.customerInformation.result;\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attributes: IDictionary = {};\n\n showAttributesArray.forEach(showAttribute => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\n let value: string = '';\n if (attribute && attribute.AttributeValue) {\n const name = (attribute && attribute.Name) || '';\n switch (attribute.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n if (attribute.AttributeValue.IntegerValue) {\n value = String(attribute.AttributeValue.IntegerValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n if (attribute.AttributeValue.DecimalValue) {\n value = String(attribute.AttributeValue.DecimalValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n if (attribute.AttributeValue.StringValue) {\n value = attribute.AttributeValue.StringValue;\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n if (attribute.AttributeValue.BooleanValue !== null) {\n value = String(attribute.AttributeValue.BooleanValue);\n attributes[name] = value;\n }\n break;\n default:\n\n // Do nothing\n }\n }\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\n attributes[showAttribute] = '';\n }\n if (value.length === 0 && defaultValue) {\n attributes[showAttribute] = String(defaultValue);\n }\n });\n if (Object.keys(this.initialAttributes).length === 0) {\n this.initialAttributes = attributes;\n }\n this.setState({ attributes });\n };\n\n // eslint-disable-next-line\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\n const { resources } = this.props.accountProfileProps;\n const { phone, vatNumber } = this.state;\n const attributeError: IDictionary = {};\n let hasError: boolean = false;\n let hasValue: boolean = true;\n for (const [key, value] of Object.entries(this.state.attributes)) {\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\n if (payloadData) {\n switch (payloadData.dataTypeValue) {\n case AccountAttributeDataTypeValue.Decimal:\n const decimalValue = Number(value);\n if (isNaN(decimalValue)) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (decimalValue > this.maxDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxDecimalLimit\n );\n hasError = true;\n }\n\n if (decimalValue < this.minDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minDecimalLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.decimalValue = decimalValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Integer:\n const integerValue = Number(value);\n if (isNaN(integerValue) || value.includes('.')) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (integerValue > this.maxIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxIntegerLimit\n );\n hasError = true;\n }\n\n if (integerValue < this.minIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minIntegerLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.integerValue = integerValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n let trimValue = '';\n if (!StringExtensions.isNullOrWhitespace(value)) {\n trimValue = value.trim();\n }\n if (trimValue.length > this.maxStringLength) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputStringMaxLengthErrorText,\n payloadData.name,\n this.maxStringLength\n );\n hasError = true;\n }\n if (!hasError) {\n payloadData.textValue = trimValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n payloadData.booleanValue = value === 'true';\n break;\n default:\n\n // Do nothing\n }\n\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\n hasError = true;\n }\n\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attribute = custmerAttributes.find(att => att.Name === key);\n const index = custmerAttributes.findIndex(att => att.Name === key);\n\n if (index !== -1 && !hasValue) {\n custmerAttributes.splice(index, 1);\n }\n\n if (!hasError && hasValue) {\n if (attribute) {\n attribute.Attribute = undefined;\n attribute.DataTypeValue = payloadData.dataTypeValue;\n attribute.Name = payloadData.name;\n attribute.RecordId = payloadData.recordId;\n attribute.Units = undefined;\n attribute.AttributeValue = {\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n };\n attribute.ExtensionProperties = [];\n attribute.NameTranslations = [];\n } else {\n custmerAttributes.push({\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\n Attribute: undefined,\n DataTypeValue: payloadData.dataTypeValue,\n KeyName: payloadData.name,\n Name: payloadData.name,\n RecordId: payloadData.recordId,\n Units: undefined,\n AttributeValue: {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n },\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\n ExtensionProperties: [],\n 'NameTranslations@odata.type':\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\n NameTranslations: []\n });\n }\n }\n }\n }\n\n if (phone.trim().length > this.maxPhoneLength) {\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\n hasError = true;\n } else {\n customer.Phone = phone.trim();\n }\n\n if (vatNumber.trim().length > this.maxVATNumberLength) {\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\n hasError = true;\n } else {\n customer.VatNumber = vatNumber.trim();\n }\n\n this.hasError = hasError;\n this.setState({ attributeError });\n };\n\n private readonly _saveAttributes = async () => {\n const { context, data } = this.props.accountProfileProps;\n const customer = data.customerInformation.result;\n\n if (customer && context) {\n this._addOrUpdateAttribute(customer);\n const input = new updateCustomerAttributesInput(\n customer.AccountNumber,\n customer.Attributes || [],\n context.request.apiSettings,\n customer.Phone,\n customer.VatNumber\n );\n\n this.isUpdatingAttributes = true;\n this.gotException = false;\n\n if (!this.hasError) {\n this.setState({ editAttributes: false });\n try {\n await updateCustomerAttributes(input, context.actionContext);\n } catch (error) {\n this.gotException = true;\n customer.Attributes = this.initialCustomerAttributes;\n if (context.telemetry) {\n context.telemetry.exception(error);\n context.telemetry.debug('Unable to update customer attributes');\n }\n this.setState({\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n }\n this.setState({ editAttributes: false });\n if (!this.gotException) {\n this.initialAttributes = this.state.attributes;\n this.initialCustomerAttributes = customer.Attributes;\n this.initialPhone = this.state.phone;\n this.initialVatNumber = this.state.vatNumber;\n }\n }\n\n this.isUpdatingAttributes = false;\n\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n }\n };\n\n private readonly _setFocus = (element: HTMLElement | null) => {\n element?.focus();\n };\n\n private readonly _buildPayloadData = () => {\n const { data } = this.props.accountProfileProps;\n const attributeDefinitions = data.attributeDefinitions.result || [];\n const attributes: IDictionary = {};\n\n attributeDefinitions.forEach(attributeDefinition => {\n const attributePayloadData: IAttributePayloadData = {};\n attributePayloadData.recordId = attributeDefinition.RecordId;\n attributePayloadData.name = attributeDefinition.Name;\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\n switch (attributeDefinition.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\n if (attributePayloadData.name && defaultIntegerValue) {\n attributePayloadData.defaultValue = String(defaultIntegerValue);\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\n if (attributePayloadData.name && defaultDecimalValue) {\n attributePayloadData.defaultValue = String(defaultDecimalValue);\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\n if (attributePayloadData.name && defaultStringValue) {\n attributePayloadData.defaultValue = defaultStringValue;\n attributes[attributePayloadData.name] = defaultStringValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n const defaultBooleanValue =\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\n if (attributePayloadData.name) {\n attributePayloadData.defaultValue = String(defaultBooleanValue);\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\n }\n break;\n default:\n\n // Do nothing\n }\n this.attributePayloadData.push(attributePayloadData);\n });\n Object.keys(attributes).length > 0 && this.setState({ attributes });\n };\n\n private readonly _getCustomerPhoneAndVatNumber = () => {\n const customer = this.props.accountProfileProps.data.customerInformation.result;\n const phone = (customer && customer.Phone) || '';\n const vatNumber = (customer && customer.VatNumber) || '';\n this.setState({ phone, vatNumber });\n if (this.initialPhone.length === 0) {\n this.initialPhone = phone;\n }\n if (this.initialVatNumber.length === 0) {\n this.initialVatNumber = vatNumber;\n }\n };\n}\n\nexport default AccountProfileAttributes;\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 { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n isDisabled?: boolean;\n}\n\nexport interface IAccountProfileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: link.isDisabled ? 'ms-account-profile__section-link-disable' : 'ms-account-profile__section-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountProfileLinks;\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 { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { updateCustomerPersonalization, updateCustomerPersonalizationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from './account-profile.data';\nimport {\n IAccountProfileProps,\n IEmailAddressSectionHeadingData,\n IHeadingData,\n INameSectionHeadingData\n} from './account-profile.props.autogenerated';\nimport AccountProfileAttributes from './components/account-profile-attributes';\nimport DescriptionComponent from './components/account-profile-description';\nimport LinksComponent, { ILinksData } from './components/account-profile-links';\nimport TextComponent from './components/account-profile-text';\n\nexport interface IAccountPreference {\n accountPreference: INodeProps;\n heading: React.ReactNode;\n buttonWrapper: INodeProps;\n buttonYesText: React.ReactNode;\n buttonNoText: React.ReactNode;\n button: React.ReactNode;\n description: React.ReactNode;\n onUpdateAccountPreference(preferenceType?: string): void;\n}\n\nexport interface IAccountPreferences {\n accountPreferences: INodeProps;\n heading?: React.ReactNode;\n personalization: IAccountPreference;\n extraPreferences?: IAccountPreference[];\n}\n\nexport interface IAccountProfileItem {\n AccountProfileItem: INodeProps;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\nexport interface IAccountCustomerAttributes {\n customerAttributes?: React.ReactNode;\n}\n\nexport interface IAccountProfileViewProps extends IAccountProfileProps {\n AccountProfile: IModuleProps;\n accountProfileWrapper?: INodeProps;\n className: string;\n heading?: React.ReactNode;\n emailSection: IAccountProfileItem;\n nameSection: IAccountProfileItem;\n preferenceSection: IAccountPreferences;\n customerAttributesWrapper?: INodeProps;\n customerAttributesSection?: IAccountCustomerAttributes;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * AccountProfile component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfile extends React.Component> {\n @observable private isUpdatingPreference: boolean = false;\n private readonly telemetryContent?: ITelemetryContent;\n private readonly payLoad: IPayLoad;\n\n constructor(props: IAccountProfileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\n\n const { editButtonText, editButtonAriaLabel } = resources;\n const customerInformation = data.customerInformation.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n\n // As per the design, phone and vat numbers are part of the profile attributes section\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\n const editLink: ILinksData = {\n linkUrl: {\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\n },\n linkText: editButtonText,\n ariaLabel: editButtonAriaLabel,\n isDisabled: invalidAsyncCustomerState\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountProfile: {\n moduleProps: this.props,\n className: classnames('ms-account-profile', config.className)\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n accountProfileWrapper: {\n className: classnames('ms-account-profile-wrapper')\n },\n heading: heading && (\n \n ),\n emailSection: this._renderEmailSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\n customerInformation && customerInformation.Email\n ),\n nameSection: this._renderNameSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\n nameSectionHeading as INameSectionHeadingData,\n `${customerInformation && customerInformation.FirstName} ${customerInformation && customerInformation.LastName}`,\n [editLink]\n ),\n preferenceSection: this._renderPreferenceSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\n invalidAsyncCustomerState,\n customerInformation\n ),\n customerAttributesWrapper: {\n className: classnames('ms-account-profile__attributes-wrapper')\n },\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes()\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\n\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.nameSectionHeading!.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.resources.editButtonText) {\n this.props.resources.editButtonText = event.target.value;\n }\n };\n\n @computed get editProfileUrl(): string {\n return get(this.props, 'context.request.user.editProfileUrl', '');\n }\n\n private _renderEmailSection(\n className: string,\n heading?: IEmailAddressSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private _renderNameSection(\n className: string,\n heading?: INameSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private readonly onClickEventHandler = (className: string) => async () => {\n return this._updateAccountPersonalization(className);\n };\n\n private _renderPreferenceSection(\n className: string,\n invalidAsyncCustomerState: boolean,\n customerInformation?: Customer\n ): IAccountPreferences | null {\n const {\n personalizationDescription,\n personalizationEnableButtonAriaLabel,\n webTrackingDescription,\n webTrackingEnableButtonAriaLabel\n } = this.props.resources;\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\n const { enableDataAnalytics } = this.props.context.request.features;\n const extraPreferences: IAccountPreference[] = [];\n\n if (!customerInformation) {\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\n return null;\n }\n\n // Show browser activity login preference if switch is enabled AND a heading is provided\n enableDataAnalytics &&\n webTrackingSectionHeading &&\n extraPreferences.push(\n this._renderPreference(\n 'web-tracking',\n webTrackingSectionHeading as IHeadingData,\n webTrackingEnableButtonAriaLabel,\n webTrackingDescription,\n customerInformation.OptOutWebActivityTracking || false,\n invalidAsyncCustomerState\n )\n );\n\n return {\n accountPreferences: {\n className\n },\n heading: preferencesSectionHeading && (\n \n ),\n personalization: this._renderPreference(\n 'personalization',\n personalizationSectionHeading as IHeadingData,\n personalizationEnableButtonAriaLabel,\n personalizationDescription,\n customerInformation.OptOutPersonalization || false,\n invalidAsyncCustomerState\n ),\n extraPreferences: extraPreferences || undefined\n };\n }\n\n private readonly _renderPreference = (\n className: string,\n sectionHeading: IHeadingData,\n enableAriaLabel: string,\n description: string,\n isOptOut: boolean,\n disableBtn: boolean\n ) => {\n const { toggleDisableText, toggleEnableText } = this.props.resources;\n const toggleState = isOptOut ? 'disable' : 'enable';\n const onClickHandler = this.onClickEventHandler(className);\n this.payLoad.contentAction.etext = sectionHeading.text;\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n return {\n accountPreference: {\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\n })\n },\n heading: sectionHeading && (\n \n ),\n buttonWrapper: {\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\n // Disable the toggle completely if customer is async.\n 'ms-account-profile__toggle-disabled': disableBtn\n })\n },\n buttonYesText: ,\n buttonNoText: ,\n button: (\n \n ),\n description: ,\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\n };\n };\n\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\n const customerInformation = this.props.data.customerInformation.result;\n\n if (customerInformation) {\n const {\n telemetry,\n context: { request, actionContext }\n } = this.props;\n\n let isOptOutPersonalization = false;\n let input;\n\n switch (preferenceType) {\n case 'web-tracking':\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n break;\n case undefined:\n case 'personalization':\n default:\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n }\n\n this.isUpdatingPreference = true;\n\n try {\n await updateCustomerPersonalization(input, actionContext);\n } catch (error) {\n if (telemetry) {\n telemetry.exception(error);\n telemetry.debug('Unable to update customer personalization');\n }\n }\n\n this.isUpdatingPreference = false;\n }\n };\n\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\n return ;\n };\n}\n\nexport default AccountProfile;\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 { IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps } from './account-profile';\n\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\n return (\n \n {heading}\n \n {extraPreferences &&\n extraPreferences.map((preferenceSecton, index) => {\n return ;\n })}\n \n );\n};\n\nconst AccountPreferenceSection: React.FC = ({\n accountPreference,\n heading,\n description,\n buttonWrapper,\n buttonYesText,\n button,\n buttonNoText\n}) => {\n return (\n \n {heading}\n {description}\n \n {buttonNoText}\n {button}\n {buttonYesText}\n \n \n );\n};\n\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nconst AccountProfileView: React.FC = props => {\n const {\n AccountProfile,\n infoMessageBar,\n accountProfileWrapper,\n heading,\n emailSection,\n nameSection,\n preferenceSection,\n customerAttributesWrapper,\n customerAttributesSection\n } = props;\n\n return (\n \n {infoMessageBar}\n {accountProfileWrapper && (\n \n {heading}\n \n \n \n \n )}\n {customerAttributesWrapper && {customerAttributesSection}}\n \n );\n};\n\nexport default AccountProfileView;\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 IAccountProfileDescription {\n className: string;\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\n

{description}

\n);\n\nexport default IAccountProfileDescription;\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 IAccountProfileText {\n className: string;\n text: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\n\nexport default IAccountProfileText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component.\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text} ${accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''}`\n }\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n}\n\nexport default AccountWelcomeTile;\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 { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\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 IAccountWishlistTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-wishlist-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountWishlistTileLinks;\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component.\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = ((wishlists && wishlists.length && wishlists[0].CommerceListLines) || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountWishlistTile;\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 { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\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';\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, data } = this.props;\n\n if (!data.customerInformation.result?.IsB2b || !data.b2bUserInformation.result?.B2BUserId) {\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 { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default PasswordResetInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingIcon {\n className: string;\n}\n\nconst PasswordResetLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default PasswordResetLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetLoadingMessage;\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 { PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetButtonComponent from './components/password-reset-button';\nimport PasswordResetErrorComponent from './components/password-reset-error';\nimport PasswordResetInputComponent from './components/password-reset-input';\nimport PasswordResetLabelComponent from './components/password-reset-label';\nimport PasswordResetLoadingIconComponent from './components/password-reset-loading-icon';\nimport PasswordResetLoadingMessageComponent from './components/password-reset-loading-message';\nimport { IPasswordResetConfig, IPasswordResetProps } from './password-reset.props.autogenerated';\n\nexport interface IPasswordResetViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetLocalAccount {\n localAccount: INodeProps;\n items: IPasswordResetItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetViewProps {\n className: string;\n viewState: IPasswordResetViewState;\n loading: IPasswordResetLoading;\n passwordReset: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetLocalAccount: IPasswordResetLocalAccount;\n}\n\n/**\n *\n * PasswordReset component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordReset extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetProps) {\n super(props);\n\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPasswordResetProps, nextState: IPasswordResetViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordReset: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n \n ),\n passwordResetLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n switch (obj.ID.toLowerCase()) {\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n });\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IPasswordResetLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('newPassword', 'password', resources.newPasswordLabelText, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, this.reenterPasswordRegex)\n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(id: string, type: string, labelText: string, pattern?: string): IPasswordResetItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default PasswordReset;\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 { IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps } from './password-reset';\n\nconst PasswordResetItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IPasswordResetItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst PasswordResetLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetView: React.FC = props => {\n const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetView;\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\nexport interface ISignUpButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst SignUpButton: React.FC = ({ id, className, text, ariaLabel, disabled, onClick }) => (\n \n);\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignUpInputProps {\n id?: string;\n hasFocus?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignUpInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst SignUpInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default SignUpInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLoadingIcon {\n className: string;\n}\n\nconst SignUpLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignUpLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignUpLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignUpLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default SignUpSuccess;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex, PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport SignUpButtonComponent from './components/sign-up-button';\nimport SignUpErrorComponent from './components/sign-up-error';\nimport SignUpInputComponent from './components/sign-up-input';\nimport SignUpLabelComponent from './components/sign-up-label';\nimport SignUpLoadingIconComponent from './components/sign-up-loading-icon';\nimport SignUpLoadingMessageComponent from './components/sign-up-loading-message';\nimport SignUpSuccessComponent from './components/sign-up-success';\nimport { ISignUpConfig, ISignUpProps, ISignUpResources } from './sign-up.props.autogenerated';\n\nexport interface ISignUpViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignUpItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignUpEmailVerification {\n isRequired: boolean;\n email: ISignUpItem;\n buttonWrapper: INodeProps;\n buttons: React.ReactNode[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Given Name Verification Interface.\n */\nexport interface ISignUpGivenNameVerification {\n isRequired: boolean;\n givenName: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Surname Verification Interface.\n */\nexport interface ISignUpSurnameVerification {\n isRequired: boolean;\n surname: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\nexport interface ISignUpLocalAccount {\n localAccount: INodeProps;\n items: ISignUpItem[];\n emailVerification: ISignUpEmailVerification;\n givenNameVerification: ISignUpGivenNameVerification;\n surnameVerification: ISignUpSurnameVerification;\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface ISignUpLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignUpViewProps {\n className: string;\n viewState: ISignUpViewState;\n loading: ISignUpLoading;\n signUp: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n signUpLocalAccount: ISignUpLocalAccount;\n}\n\n/**\n *\n * SignUp component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass SignUp extends React.Component> {\n @observable private isGivenNameVerificationRequried: boolean;\n\n @observable private isSurnameVerificationRequried: boolean;\n\n private readonly moduleClassName: string = 'ms-sign-up';\n\n @observable private emailRegex: string;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isEmailVerificationRequried: boolean;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: ISignUpProps) {\n super(props);\n\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isEmailVerificationRequried = false;\n this.isGivenNameVerificationRequried = false;\n this.isSurnameVerificationRequried = false;\n this.isInitialized = false;\n this.templateVersion = '';\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: ISignUpProps, nextState: ISignUpViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n signUpLocalAccount: this._renderLocalAccount()\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 * @returns - Heading Text.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n * @returns - Paragraph Text.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.disclaimer = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const resources: ISignUpResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string; VERIFY: boolean }) => {\n switch (obj.ID.toLowerCase()) {\n case 'emailverificationcontrol': {\n this.isEmailVerificationRequried = true;\n this.templateVersion = 'v2';\n break;\n }\n case 'email': {\n this.emailRegex = obj.PAT;\n this.isEmailVerificationRequried = obj.VERIFY;\n this.templateVersion = 'v1';\n break;\n }\n case 'givennameverificationcontrol': {\n this.isGivenNameVerificationRequried = true;\n break;\n }\n case 'givenname': {\n this.isGivenNameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'surnameverificationcontrol': {\n this.isEmailVerificationRequried = true;\n break;\n }\n case 'surname': {\n this.isSurnameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n\n switch (obj.UX_INPUT_TYPE.toLowerCase()) {\n case 'password': {\n obj.PAT_DESC = resources.invalidPasswordError;\n break;\n }\n case 'emailbox': {\n obj.PAT_DESC = resources.invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignUpResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n required_field: resources.requiredFieldMissingError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n\n private _renderLocalAccount(): ISignUpLocalAccount {\n const { config, resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', resources.lastNameLabelText, resources.lastNameMaxLength),\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput('newPassword', 'password', resources.passwordLabelText, undefined, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, undefined, this.reenterPasswordRegex)\n ],\n emailVerification: {\n isRequired: this.isEmailVerificationRequried,\n email: this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n buttonWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n buttons: [\n ,\n ,\n ,\n \n ],\n successMessage: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n \n ]\n },\n givenNameVerification: {\n isRequired: this.isGivenNameVerificationRequried,\n givenName: this._renderInput(\n this.getValue('givenName_ver_input', 'givenNameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'givenNameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n surnameVerification: {\n isRequired: this.isSurnameVerificationRequried,\n surname: this._renderInput(\n this.getValue('surname_ver_input', 'surnameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'surnameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n buttons: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n }\n\n private _renderInput(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): ISignUpItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default SignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignUpEmailVerification,\n ISignUpGivenNameVerification,\n ISignUpItem,\n ISignUpLoading,\n ISignUpLocalAccount,\n ISignUpSurnameVerification,\n ISignUpViewProps\n} from './sign-up';\n\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\n return (\n <>\n {successMessage &&\n successMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {errorMessage &&\n errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode) => {\n return <>{button};\n })}\n \n \n );\n};\n\n/**\n * Handles validation of sign-up givenName.\n * @param event - Content editable event.\n * @param event.givenName - Event Given Name.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for Given Name.\n */\nconst SignUpGivenNameVerificationComponent: React.FC = ({ givenName, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\n/**\n * Handles validation of signUp surname.\n * @param event - Content editable event.\n * @param event.surname - Event surname.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for surname.\n */\nconst SignUpSurnameVerificationComponent: React.FC = ({ surname, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n emailVerification,\n givenNameVerification,\n surnameVerification,\n buttons,\n errorMessage,\n disclaimer\n}) => {\n return (\n \n {items &&\n items.map((item: ISignUpItem) => {\n if (item.key === 'email' && emailVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'givenName' && givenNameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'surname' && surnameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n );\n};\n\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignUpView: React.FC = props => {\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(signUpLocalAccount)}\n \n \n );\n};\n\nexport default SignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport {\n AccountStatementRequest,\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUser,\n BusinessPartnerUsersDataActions\n} from '@msdyn365-commerce/retail-proxy';\nimport { AdminRequestStatementButton, RequestStatementModal } from '@msdyn365-commerce-modules/account-management';\nimport {\n addOrganizationUser,\n AddOrganizationUserInput,\n ArrayExtensions,\n deleteOrganizationUser,\n DeleteOrganizationUserInput,\n editOrganizationUser,\n EditOrganizationUserInput,\n EmailRegex,\n Random,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n Heading,\n IDataTableProps,\n IHeadingsProperty,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITableItemProps,\n ITableRowProps,\n ITelemetryContent,\n Table,\n TableDataType,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IBusinessOrganizationListData } from './business-organization-list.data';\nimport { IBusinessOrganizationListProps, IBusinessOrganizationListResources } from './business-organization-list.props.autogenerated';\nimport { FormButton, FormFieldError, FormInput, FormLabel, IBusinessFormItem, IUserFormItem } from './components';\n\nexport interface IBusinessOrganizationListViewProps extends IBusinessOrganizationListProps {\n OrganizationUserList: IModuleProps;\n moduleContainer: INodeProps;\n heading: React.ReactNode;\n noUsersText?: string;\n addUserButton?: React.ReactNode;\n search?: React.ReactNode;\n organizationListTable: React.ReactNode;\n form?: IFormViewProps;\n formItems?: IUserFormItem[];\n formType: FormType;\n deleteUserForm?: React.ReactNode;\n viewUserDetails?: React.ReactNode;\n modalHeading?: React.ReactNode;\n modalState?: boolean;\n requestAccountStatementButton: React.ReactNode;\n requestStatementModal: React.ReactNode;\n toggleModal?(): void;\n}\n\nexport interface IBusinessOrganizationListState {\n isReady: boolean;\n formItems: IUserFormItem[];\n isFormActive: boolean;\n formType: FormType;\n selectedUserData?: BusinessPartnerUser;\n referenceBack?: HTMLButtonElement | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n displayedUserData?: any;\n refresh: boolean;\n isModalOpen: boolean;\n hasFormError: boolean;\n hasActionError: boolean;\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n isStatementRequestAdminDropdownOpen: boolean;\n statementRequestFullOrg: boolean;\n}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport enum FormType {\n None = 'NONE',\n Edit = 'EDIT',\n Remove = 'REMOVE',\n View = 'VIEW',\n Add = 'ADD'\n}\n\nexport enum InputType {\n Text = 'text',\n Email = 'email'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n B2BUserId = 'B2BUserId',\n Email = 'Email',\n SpendingLimit = 'SpendingLimit',\n Status = 'Status',\n FullName = 'Name'\n}\n\nexport interface IFormViewProps {\n modalClassName: string;\n FormWrapper: INodeProps;\n modalHeading?: string;\n modalDescription?: React.ReactNode;\n inputs?: IBusinessFormItem[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectedUser?: any;\n buttons?: React.ReactNode[];\n errorMessage?: React.ReactNode[];\n resources: IBusinessOrganizationListResources;\n toggle?(): void;\n}\n\nexport const renderInputSection = (\n inputs: IUserFormItem[],\n className: string,\n asteriskAfterLabel: string,\n onInputChange: (event: React.ChangeEvent) => void\n): IBusinessFormItem[] => {\n return inputs.map(element => {\n const { customClass, id, type, label, maxChars, isRequired, pattern, value, isDisabled, fieldReference } = element;\n return {\n wrapper: {\n className: classnames(className, id, customClass)\n },\n key: id,\n label: ,\n errorMessage: ,\n input: (\n \n )\n };\n });\n};\n\ninterface IUserTableItemProps extends ITableItemProps {\n user: BusinessPartnerUser;\n}\n\n/**\n *\n * BusinessOrganizationList component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass BusinessOrganizationList extends React.Component<\n IBusinessOrganizationListProps,\n IBusinessOrganizationListState\n> {\n public BusinessFormDefaultInputs: IUserFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.businessUserFirstNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.businessUserLastNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.businessUserEmailAddressLabelText,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-100'\n },\n {\n id: InputID.SpendingLimit,\n type: InputType.Text,\n label: this.props.resources.businessUserSpendingLimitLabelText,\n value: '',\n isRequired: false,\n customClass: 'width-50',\n maxChars: this.props.config?.maxLength\n }\n ];\n\n @observable\n private _viewport: GridSize;\n\n private readonly delayFocus: number = 110;\n\n private formChildReference: React.RefObject[] = [];\n\n private userFormEditReference: React.RefObject[] = [];\n\n private userFormDeleteReference: React.RefObject[] = [];\n\n private readonly submitButtonReference: React.RefObject;\n\n private readonly addUserButtonReference: React.RefObject;\n\n private readonly statementRequestButtonReference: React.RefObject;\n\n private readonly moduleClassName: string = 'ms-business-organization-list';\n\n private readonly mobileExcludedColumns: string[];\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n @computed get canSubmitStatementRequest(): boolean {\n return (\n !StringExtensions.isNullOrWhitespace(this.state.statementRequestFromDateString) &&\n !StringExtensions.isNullOrWhitespace(this.state.statementRequestToDateString)\n );\n }\n\n @computed get selectedUserName(): string {\n const { businessUserSelectedUserDisplayName } = this.props.resources;\n return this.state.selectedUserData\n ? businessUserSelectedUserDisplayName\n .replace('{firstName}', this.state.selectedUserData.FirstName || '')\n .replace('{lastName}', this.state.selectedUserData.LastName || '')\n : '';\n }\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IBusinessOrganizationListProps) {\n super(props);\n this._toggleModal = this._toggleModal.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._handleRemoveUserButton = this._handleRemoveUserButton.bind(this);\n\n this.mobileExcludedColumns = [InputID.Email, InputID.Status, InputID.SpendingLimit];\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n this.submitButtonReference = React.createRef();\n this.addUserButtonReference = React.createRef();\n this.statementRequestButtonReference = React.createRef();\n this.state = {\n isReady: false,\n formItems: this.addedReference(),\n isFormActive: false,\n formType: FormType.None,\n refresh: true,\n isModalOpen: false,\n hasFormError: false,\n hasActionError: false,\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: '',\n isStatementRequestAdminDropdownOpen: false,\n statementRequestFullOrg: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public addedReference(): IUserFormItem[] {\n const newFormFields = this.BusinessFormDefaultInputs;\n return newFormFields.map((input, index) => {\n this.formChildReference[Number(index)] = React.createRef();\n input.fieldReference = this.formChildReference[Number(index)];\n return input;\n });\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser && window.addEventListener) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser && window.removeEventListener) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IBusinessOrganizationListProps,\n nextState: IBusinessOrganizationListState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n\n if (!this.state.isModalOpen && this.state.isModalOpen !== nextState.isModalOpen) {\n setTimeout(() => {\n this.formChildReference[0].current?.focus();\n this.submitButtonReference.current?.focus();\n }, this.delayFocus);\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config,\n resources,\n data: { users }\n } = this.props;\n const { className, heading } = config;\n const {\n businessUserAddUserButtonText,\n businessUserLoadingMessage,\n businessUserEmptyListMessage,\n businessUserErrorGettingUsersMessage,\n userAccountStatementLabel,\n fullOrganizationLabel,\n requestStatementButtonLabel,\n statementRequestModalHeaderLabel,\n cancelLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n sendToEmailLabel,\n selectedUserLabel\n } = resources;\n const {\n formItems,\n isFormActive,\n formType,\n isModalOpen,\n statementRequestFromDateString,\n statementRequestToDateString,\n isStatementRequestModalOpen\n } = this.state;\n\n const hasUsers = users && users.result && users.result.length > 0;\n this.payLoad.contentAction.etext = TelemetryConstant.AddUser;\n const addUserAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n const customer = this.props.data.customerInformation?.result;\n\n if (!hasUsers) {\n let errorMessage = '';\n if (users.status === 'LOADING') {\n errorMessage = businessUserLoadingMessage;\n } else if (users.status === 'FAILED') {\n errorMessage = businessUserErrorGettingUsersMessage;\n } else if (users.result && users.result.length === 0) {\n errorMessage = businessUserEmptyListMessage;\n }\n\n const errorProps = {\n ...this.props,\n className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n addUserButton: (\n \n {businessUserAddUserButtonText}\n \n ),\n noUsersText:

{errorMessage}

\n };\n\n return this.props.renderView(errorProps) as React.ReactElement;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n modalState: isModalOpen,\n addUserButton: (\n \n {businessUserAddUserButtonText}\n \n ),\n organizationListTable:
,\n toggleModal: this._toggleModal,\n formType,\n form:\n isFormActive && isModalOpen && (formType === FormType.Add || formType === FormType.Edit)\n ? this._renderUserForm()\n : this._renderUserDetails(),\n formItems,\n requestAccountStatementButton: (\n \n ),\n requestStatementModal: (\n \n )\n } as IBusinessOrganizationListViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n // _createTableProps: creates the props for the organization list table\n private _createTableProps(): IDataTableProps {\n const { config, resources, context } = this.props;\n const { tableSort, showPagination, paginationItemPerPage } = config;\n const {\n businessUserPaginationNextButtonText,\n businessUserPaginationPreviousButtonText,\n businessUserEditButtonText,\n businessUserViewUserButtonText,\n businessUserDeleteButtonText,\n businessUserActionButtonText,\n businessUserPaginationAriaLabel,\n columnSortAriaLabel\n } = resources;\n\n const tableData = this._createTableItems();\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row.map(item => {\n if (this.isMobile && this.mobileExcludedColumns.includes(item.id)) {\n return undefined;\n }\n return {\n name: item.id,\n sortable: (tableSort && tableSort) || false,\n ariaLabel: columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources,\n headings: tableHeading,\n rows: tableData,\n className: `${this.moduleClassName}__table`,\n editLinkText: this.isMobile ? businessUserEditButtonText : '', // '' === showing just icon\n deleteLinkText: this.isMobile ? businessUserDeleteButtonText : '', // '' === showing just icon\n viewLinkText: businessUserViewUserButtonText,\n editLinkTooltip: businessUserEditButtonText,\n deleteLinkTooltip: businessUserDeleteButtonText,\n viewLinkTooltip: businessUserViewUserButtonText,\n enableToModify: true,\n actionLinkText: businessUserActionButtonText,\n showCheckBoxes: true,\n isSortable: tableSort,\n resourcePrefix: 'businessUser',\n showPagination,\n minifyActions: this.isMobile,\n excludedColumns: this.isMobile ? this.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context &&\n context.request &&\n context.request.query &&\n context.request.query.skip &&\n !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: paginationItemPerPage || 10,\n prevText: businessUserPaginationPreviousButtonText,\n nextText: businessUserPaginationNextButtonText,\n paginationText: businessUserPaginationAriaLabel,\n url: (context && this._getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n tableAriaLabel: resources.tableAriaLabel,\n tableTabIndex: 0,\n businessUserSelectCheckBoxAriaLabelText: resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: resources.sortByAscending,\n sortByDescending: resources.sortByDescending,\n actions: {\n onDelete: this._handleDeleteIcon,\n onEdit: this._handleEditIcon,\n onView: (this.isMobile && this._handleViewDetails) || undefined\n },\n formatPrice: this._formatPrice,\n checkBoxCallback: this._onSelectRow\n };\n }\n\n // _createTableItems: converts users recieved from the data-action(IBusinessParterUser[]) to tableRows(ITableItemProps[])\n private _createTableItems(): ITableRowProps[] {\n const {\n resources,\n data: { users }\n } = this.props;\n const { businessUserActiveStatusText, businessUserPendingStatusText, businessUserRemovedStatusText } = resources;\n const usersList = users && users.result;\n\n if (!ArrayExtensions.hasElements(usersList)) {\n return [];\n }\n\n return usersList.map((user, index) => {\n let statusString = '';\n this.userFormEditReference[index] = React.createRef();\n this.userFormDeleteReference[index] = React.createRef();\n\n switch (user.StatusValue) {\n case 0:\n statusString = businessUserPendingStatusText;\n break;\n case 1:\n statusString = businessUserActiveStatusText;\n break;\n case 2:\n default:\n statusString = businessUserRemovedStatusText;\n }\n\n return {\n row: [\n {\n id: InputID.FullName,\n type: TableDataType.Text,\n value: `${user.FirstName} ${user.LastName}`,\n user\n } as IUserTableItemProps,\n {\n id: InputID.Email,\n type: TableDataType.Text,\n value: user.Email || '',\n className: `${this.moduleClassName}__padRight`\n } as IUserTableItemProps,\n {\n id: InputID.Status,\n type: TableDataType.Text,\n value: statusString\n } as IUserTableItemProps,\n {\n id: InputID.SpendingLimit,\n type: TableDataType.Price,\n value: user.SpendingLimit || 0\n } as IUserTableItemProps\n ],\n isSelected: false,\n buttonReferences: {\n edit: this.userFormEditReference[index],\n delete: this.userFormDeleteReference[index]\n }\n };\n });\n }\n\n // _toggleModal: closes the modal and resets the form states\n private _toggleModal(): void {\n this.state.referenceBack?.focus();\n this.setState({\n isModalOpen: false,\n isFormActive: false,\n referenceBack: undefined,\n formType: FormType.None\n });\n }\n\n // _handleAddUserButtonClicked: resets input fields, opens the modal, and sets the form states\n private readonly _handleAddUserButtonClicked = () => {\n // Reset form\n const newForm = this.state.formItems;\n newForm.forEach(input => {\n if (input.id === InputID.Email) {\n // Make sure email input is re enabled (it gets disabled when admin is editing user)\n input.isDisabled = false;\n }\n\n input.value = '';\n });\n\n const newUser = { B2BUserId: Random.Guid.generateGuid() } as BusinessPartnerUser;\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n formType: FormType.Add,\n referenceBack: this.addUserButtonReference.current,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: newUser\n });\n };\n\n // _handleAddEditFormSaveButton: triggered on the save button for both add/edit forms. Calls the appropriate data-action and reloads the page when successful\n private readonly _handleAddEditFormSaveButton = async () => {\n const { context } = this.props;\n const { formType, formItems } = this.state;\n\n const updatedUser = this._createBusinessPartner(formItems);\n\n if (formType === FormType.Edit) {\n editOrganizationUser(new EditOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n } else {\n addOrganizationUser(new AddOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n }\n };\n\n // _createBusinessPartner: attempts to convert input values(IUserFormItem) to a new user(BusinessPartnerUser)\n private readonly _createBusinessPartner = (inputs: IUserFormItem[]): BusinessPartnerUser => {\n const newUser: BusinessPartnerUser = { ...this.state.selectedUserData! };\n\n inputs.forEach(input => {\n // Deals with input values need need to be converted into numbers\n if (input.id === InputID.SpendingLimit) {\n newUser[input.id] = Number.parseFloat(input.value) || 0;\n } else {\n newUser[input.id] = input.value;\n }\n });\n\n return newUser;\n };\n\n // _handleEditIcon: converts the table row data(ITableItemProps[]) to input fields(IUserFormItem) and opens the edit form\n private readonly _handleEditIcon = (userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null) => {\n // Split full name into first and last\n const possibleName = userData.find(cell => {\n return cell.id === 'Name';\n });\n const fullName = (possibleName && (possibleName.value as string)) || '';\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n const firstName = fullName.substring(0, lastSpaceIndex);\n\n const lastName = fullName.substring(lastSpaceIndex + 1);\n\n // Create clone of formItems, map users information, update state\n const { formItems } = this.state;\n const newForm = formItems;\n\n newForm.forEach(input => {\n switch (input.id) {\n case InputID.FirstName:\n input.value = firstName;\n break;\n case InputID.LastName:\n input.value = lastName;\n break;\n case InputID.Email: // Email can never be null/undefined as it is a required field\n input.isDisabled = true;\n const possibleCell = userData.find(cell => {\n return input.id === cell.id;\n });\n input.value = (possibleCell && (possibleCell.value as string)) || '';\n break;\n default:\n const dataCell = userData.find(cell => {\n return input.id === cell.id;\n });\n input.value = (dataCell && (dataCell.value as string)) || '';\n }\n });\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n referenceBack,\n formType: FormType.Edit,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: (userData[0] as IUserTableItemProps).user\n });\n };\n\n // _handleDeleteIcon: opens removeUser confirmation window\n private readonly _handleDeleteIcon = (userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null) => {\n const newUser: BusinessPartnerUser = { ...(userData[0] as IUserTableItemProps).user };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // Split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData,\n referenceBack,\n selectedUserData: newUser,\n formType: FormType.Remove,\n isModalOpen: true,\n isFormActive: false\n });\n };\n\n // _handleViewDetails: opens user details window\n private readonly _handleViewDetails = (userData: ITableItemProps[]) => {\n const newUser: BusinessPartnerUser = { ...(userData[0] as IUserTableItemProps).user };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // Split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData,\n selectedUserData: newUser,\n formType: FormType.View,\n isModalOpen: true,\n isFormActive: false\n });\n };\n\n // _handleRemoveUserButton: triggered on confirmation of removing a user.\n private readonly _handleRemoveUserButton = () => {\n // TODO\n const { context } = this.props;\n const { selectedUserData: deleteUserData } = this.state;\n\n if (deleteUserData) {\n deleteOrganizationUser(new DeleteOrganizationUserInput(deleteUserData), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n });\n }\n this.setState({\n formType: FormType.None,\n isModalOpen: false\n });\n };\n\n private readonly callbackRemoveButton = () => {\n this._handleRemoveUserButton();\n };\n\n // _renderUserDetails: creates the remove/view form props\n private _renderUserDetails(): IFormViewProps {\n const { resources } = this.props;\n const { formType, displayedUserData } = this.state;\n const {\n businessUserRemoveModalHeaderText,\n businessUserRemoveModalDescription,\n businessUserViewModalHeaderText,\n businessUserCancelButtonText,\n businessUserCancelRemoveUserButtonText,\n businessUserRemoveUserButtonText,\n businessUserErrorUpdatingUsersMessage\n } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Remove ? 'type-remove' : 'type-view';\n const handleRemoveButton = this.callbackRemoveButton;\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Remove ? businessUserRemoveModalHeaderText : businessUserViewModalHeaderText,\n modalDescription: formType === FormType.Remove && (\n

{businessUserRemoveModalDescription}

\n ),\n selectedUser: displayedUserData,\n buttons: [\n formType === FormType.Remove && (\n \n {businessUserRemoveUserButtonText}\n \n ),\n \n ],\n errorMessage: [\n \n ],\n resources\n };\n }\n\n // _renderUserForm: creates the add/edit form props\n private _renderUserForm(): IFormViewProps {\n const { resources } = this.props;\n const { formType, formItems, hasFormError, hasActionError, isReady } = this.state;\n const {\n businessUserEditUserFormHeadingText,\n businessUserAddUserFormHeadingText,\n businessUserSaveButtonArialabel,\n businessUserSaveButtonText,\n businessUserCancelButtonArialabel,\n businessUserCancelButtonText,\n businessUserFieldIncorrectErrorText,\n businessUserActionErrorText,\n businessUserAllFieldsRequiredMessage,\n asteriskAfterLabel\n } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Add ? 'type-add' : 'type-edit';\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Add ? businessUserAddUserFormHeadingText : businessUserEditUserFormHeadingText,\n modalDescription: formType === FormType.Add && (\n

{businessUserAllFieldsRequiredMessage}

\n ),\n inputs: renderInputSection(formItems, `${formClassName}-item`, asteriskAfterLabel, this._onInputChange),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasFormError && (\n \n ),\n hasActionError && (\n \n )\n ],\n resources\n };\n }\n\n // _onInputChange: updates the fomrItems state on every input change\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Update state object with latest values and check if form is ready\n // TODO: remove !refresh\n this.setState(prev => ({\n refresh: !prev.refresh,\n isReady: this._isFormReady(),\n formItems: newForm,\n hasFormError: false,\n hasActionError: false\n }));\n };\n\n // _isFormReady: checks whether the current values in the input fields are valid for submission, this will also disable/enable the submit button.\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const formItem of formItems) {\n // Will return TRUE if:\n // - input field is required and EMPTY\n // OR\n // - pattern provided and value does not match pattern\n // OR\n // - if spendingLimit input --> make sure value can be parsed into an NUMBER\n if (formItem.isRequired && formItem.value.length === 0) {\n return false;\n } else if (formItem.pattern !== undefined && formItem.value.match(formItem.pattern) === null) {\n return false;\n } else if (formItem.id === InputID.SpendingLimit && formItem.value !== '' && isNaN(Number.parseFloat(formItem.value))) {\n this.setState({\n hasFormError: true\n });\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _formatPrice = (price: number): string => {\n return this.props.context.cultureFormatter ? this.props.context.cultureFormatter.formatCurrency(price) : price.toString();\n };\n\n private readonly _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\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n private readonly _toggleStatementRequestDropdown = (): void => {\n this.setState({\n isStatementRequestAdminDropdownOpen: !this.state.isStatementRequestAdminDropdownOpen\n });\n };\n\n private readonly _updateFromDate = (newFromDate: string) => {\n this.setState({\n statementRequestFromDateString: newFromDate\n });\n };\n\n private readonly _updateToDate = (newToDate: string) => {\n this.setState({\n statementRequestToDateString: newToDate\n });\n };\n\n private readonly _showRequestStatementModal = (isFullOrg: boolean) => {\n this.setState({\n statementRequestFullOrg: isFullOrg,\n isStatementRequestModalOpen: true\n });\n };\n\n private readonly _requestStatement = () => {\n const customer = this.props.data.customerInformation.result!;\n const businessPartnerUsers = this.props.data.users.result!;\n\n const currentUser = businessPartnerUsers.find(element => element.Email === customer.Email);\n const B2BUserId = this._getB2BUserId(currentUser);\n\n const statementRequest: AccountStatementRequest = {\n FromDate: new Date(this.state.statementRequestFromDateString),\n ToDate: new Date(this.state.statementRequestToDateString),\n IsForFullOrganization: this.state.statementRequestFullOrg,\n RequestedUserId: B2BUserId,\n RequestingUserEmail: customer.Email,\n DeliveryTypeValue: BusinessPartnerOperationDeliveryType?.Email || 1\n };\n\n const context = { callerContext: this.props.context.actionContext };\n\n BusinessPartnerUsersDataActions.requestAccountStatementAsync(context, B2BUserId, statementRequest);\n\n this._closeStatementRequestModal();\n };\n\n private readonly _getB2BUserId = (currentUser: BusinessPartnerUser | undefined) => {\n if (this.state.statementRequestFullOrg || !this.state.selectedUserData) {\n return currentUser ? currentUser.B2BUserId : '';\n }\n return this.state.selectedUserData.B2BUserId;\n };\n\n private readonly _closeStatementRequestModal = () => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n this.statementRequestButtonReference.current?.focus();\n };\n\n private readonly _onSelectRow = (records: ITableRowProps[]) => {\n const selectedRow = records.find(rowProps => rowProps.isSelected);\n\n this.setState({\n selectedUserData: selectedRow ? (selectedRow.row[0] as IUserTableItemProps).user : undefined\n });\n };\n}\n\nexport default BusinessOrganizationList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessOrganizationListViewProps, IFormViewProps, InputID } from './business-organization-list';\nimport { IBusinessFormItem } from './components/small-components';\n\nconst BusinessFormItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst BusinessUserForm: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\n\n const modalBody = (\n <>\n {modalDescription}\n \n {inputs &&\n inputs.map((item: IBusinessFormItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n \n );\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst BusinessUserDetails: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, selectedUser, buttons, errorMessage, resources, toggle } = props;\n let modalBody = null;\n\n if (!selectedUser) {\n modalBody = errorMessage;\n } else {\n const { FirstName, LastName } = selectedUser;\n const userFullName = `${FirstName} ${LastName}`;\n\n modalBody = (\n <>\n {modalDescription}\n \n \n {userFullName}\n \n {Object.keys(selectedUser).map((data, index) => {\n if (data === InputID.FirstName || data === InputID.LastName) {\n return null;\n }\n const label = resources[`table${data}HeadingText`] || data;\n return (\n \n {label}\n {': '}\n {selectedUser[data]}\n \n );\n })}\n \n \n );\n }\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst _getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\n switch (type) {\n case 'ADD':\n case 'EDIT':\n return ;\n case 'VIEW':\n case 'REMOVE':\n return ;\n default:\n return null;\n }\n};\n\nconst _renderModal = (\n className: string,\n isModalOpen: boolean,\n headingSection: React.ReactNode,\n bodySection: React.ReactNode,\n footerSection: React.ReactNode,\n toggleModal?: () => void\n) => {\n return (\n \n {headingSection}\n {bodySection}\n {footerSection}\n \n );\n};\n\nconst BusinessOrganizationList: React.FC = props => {\n const {\n OrganizationUserList,\n moduleContainer,\n heading,\n noUsersText,\n addUserButton,\n organizationListTable,\n form,\n formType,\n toggleModal,\n requestAccountStatementButton,\n requestStatementModal\n } = props;\n\n const ButtonList: React.ReactNode = (\n \n {addUserButton}\n {requestAccountStatementButton}\n \n );\n\n if (noUsersText) {\n return (\n \n \n {heading}\n {ButtonList}\n {requestStatementModal}\n {noUsersText}\n \n \n );\n }\n\n return (\n \n \n {heading}\n {ButtonList}\n {requestStatementModal}\n {organizationListTable}\n \n {form && _getForm(formType, form, toggleModal)}\n \n );\n};\n\nexport default BusinessOrganizationList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InputType } from '../business-organization-list';\n\nexport interface IBusinessForm {\n FormWrapper: INodeProps;\n message?: React.ReactNode;\n items: IBusinessFormItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n}\n\nexport interface IBusinessFormItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IBusinessFormInput {\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IUserFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n isDisabled?: boolean;\n customClass?: string;\n fieldReference?: React.RefObject;\n}\n\nexport interface IBusinessFormInputProps {\n id?: string;\n type: string;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n isDisabled?: boolean;\n placeholder?: string;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport const FormInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n isDisabled,\n onChange,\n fieldReference,\n placeholder\n}) => (\n \n);\n\nexport interface IBusinessFormLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n asteriskText: string;\n}\n\nexport const FormLabel: React.FC = ({ id, forId, className, text, asteriskText }) => (\n \n);\n\nexport interface IBusinessFormButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const FormButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport interface IBusinessFormErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const FormFieldError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

\n ({count}\n {` `}\n {suffix})\n

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\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 { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\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 { 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.PureComponent> {\n @observable public map: Microsoft.Maps.Map | undefined;\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 if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n this._initMap();\n this._updateMap();\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.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\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\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 storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\n });\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 });\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 // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\n }, 500);\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): 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 let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n\n productSpecificationResult: isAccrodion\n ? productSpecificationData && this._createDrawerBody(data)\n : productSpecificationData && this._createTableBody(data)\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n return content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n \n );\n });\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n return content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBusinessFormItem,\n IBusinessOrganizationListViewProps,\n IFormViewProps,\n InputID\n} from '@msdyn365-commerce-modules/business-organization-list';\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBusinessOrganizationListProps,\n IBusinessOrganizationListResources\n} from '../definition-extensions/business-organization-list.ext.props.autogenerated';\n\n/**\n * Business Form Item component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessFormItemComponent: React.FC = (props: IBusinessFormItem) => {\n const { wrapper, label, errorMessage, input } = props;\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\n/**\n * To render modal.\n * @param className - The modal classname.\n * @param isModalOpen - The boolean for modal open status.\n * @param headingSection - The heading section of modal.\n * @param bodySection - The body section of modal.\n * @param footerSection - The footer section of modal.\n * @param toggleModal - The toggle modal callback function.\n * @returns The JSX Element.\n */\nconst renderModal = (\n className: string,\n isModalOpen: boolean,\n headingSection: React.ReactNode,\n bodySection: React.ReactNode,\n footerSection: React.ReactNode,\n toggleModal?: () => void\n) => {\n return (\n \n {headingSection}\n {bodySection}\n {footerSection}\n \n );\n};\n\n/**\n * Business User Form component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessUserFormComponent: React.FC = (props: IFormViewProps) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\n\n const modalBody = (\n <>\n {modalDescription}\n \n {inputs &&\n inputs.map((item: IBusinessFormItem) => {\n return ;\n })}\n {errorMessage?.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n \n );\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\n/**\n * Selected user interface.\n */\ninterface ISelectedUser {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n FirstName?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n LastName?: string;\n}\n\n/**\n * Business User Details component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessUserDetailsComponent: React.FC = (props: IFormViewProps) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n const { modalClassName, FormWrapper, modalHeading, modalDescription, buttons, errorMessage, resources, toggle } = props;\n let modalBody = null;\n const selectedUser = props.selectedUser as ISelectedUser | string;\n\n if (!selectedUser) {\n modalBody = errorMessage;\n } else {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n const { FirstName, LastName } = selectedUser as ISelectedUser;\n const userFullName = `${FirstName as string} ${LastName as string}`;\n\n modalBody = (\n <>\n {modalDescription}\n \n \n {userFullName}\n \n {Object.keys(selectedUser).map((data, index) => {\n if (data === InputID.FirstName || data === InputID.LastName) {\n return null;\n }\n const label = (resources[`table${data}HeadingText`] as string) || data;\n return (\n \n {label}\n {': '}\n {selectedUser[data]}\n \n );\n })}\n \n \n );\n }\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\n/**\n * To get form.\n * @param type - The type of form.\n * @param formProps - The form props.\n * @param toggleModal - The toggle modal callback function.\n * @returns The JSX Element.\n */\nconst getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\n switch (type) {\n case 'ADD':\n case 'EDIT':\n return ;\n case 'VIEW':\n case 'REMOVE':\n return ;\n default:\n return null;\n }\n};\n\n/**\n * Business Organization List component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessOrganizationListComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n const {\n OrganizationUserList,\n moduleContainer,\n heading,\n noUsersText,\n addUserButton,\n organizationListTable,\n form,\n formType,\n toggleModal,\n requestAccountStatementButton,\n requestStatementModal\n } = props;\n\n const buttonList: React.ReactNode = (\n \n {addUserButton}\n {requestAccountStatementButton}\n \n );\n\n if (noUsersText) {\n return (\n \n \n {heading}\n \n \n {props.resources.headingForEmptyUserOrganizationList}\n \n \n {props.resources.textForEmptyUserOrganizationList}\n \n {buttonList}\n \n {requestStatementModal}\n {noUsersText}\n \n \n );\n }\n\n return (\n \n \n {heading}\n {buttonList}\n {requestStatementModal}\n {organizationListTable}\n \n {form && getForm(formType, form, toggleModal)}\n \n );\n};\n\nexport default BusinessOrganizationListComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IMediaGalleryThumbnailItemViewProps,\n IMediaGalleryThumbnailsViewProps,\n IMediaGalleryViewProps\n} from '@msdyn365-commerce-modules/media-gallery';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Render the thumbnail item images.\n * @param thumbnail - The carousel thumbnail line props.\n * @returns Return HTML having thumnailcontainer props with image.\n */\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\n\n return {Picture};\n};\n\n/**\n * Gets the thumbnail item to display media gallery images.\n * @param image - The media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param imageId - Image id.\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render images.\n */\nconst GetThumbnailItemComponent = (\n image: IImageData,\n imageSettings: IImageSettings,\n imageId: number,\n modifiedActiveIndex: number,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(props.data.product.result.ItemId, props.context.request.apiSettings);\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n\n /**\n * OnClick method of media gallery item.\n */\n const onClick = () => {\n props.callbackToggle?.();\n props.callbackThumbnailClick?.(imageId);\n props.state.activeIndex = imageId;\n };\n\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n /**\n * Keydown event of media gallery item.\n * @param event - React.KeyboardEvent.\n */\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCodes.Enter) {\n event.preventDefault();\n onClick();\n }\n };\n const defaultIndex = 0;\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'presentation',\n key: imageId\n },\n Picture: (\n \n \n \n \n \n \n \n \n )\n };\n};\n\n/**\n * Gets the empty thumbnail item to display media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render empty images.\n */\nconst GetEmptyThumbnailItemComponent = (\n imageSettings: IImageSettings,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(props.data.product.result.ItemId, props.context.request.apiSettings);\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: 'ms-media-gallery__thumbnail-item',\n role: 'tab',\n tabIndex: 0,\n key: 0,\n 'aria-label': '',\n 'aria-selected': true\n },\n Picture: (\n \n )\n };\n};\n\n/**\n * Update media gallery items method.\n * @param items - The media gallery thumbnail item view props.\n * @returns The IImageData array.\n */\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\n return items?.map(item => {\n return {\n altText: item.Picture.props.altText,\n src: item.Picture.props.src\n };\n });\n};\n\nconst defaultThumbnailImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\n/**\n * Render the Media gallery thumbnails to represent images in grid view.\n * @param thumbnails - The thumbnail view props.\n * @param props - The media gallery view props.\n * @returns - The single slide carousel component to render as media gallery image.\n */\nconst renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps, props: IMediaGalleryViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\n const { state, Thumbnails } = props;\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\n\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty'\n ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)]\n : // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\n mediaGalleryItems?.map((item: IImageData, id: number) =>\n GetThumbnailItemComponent(item, defaultThumbnailImageSettings, id, state.activeIndex, props)\n );\n\n return (\n \n {items?.map(renderThumbnailItem)}\n \n );\n};\n\n/**\n * Render the Media gallery items using viewprops.\n * @param props - The media gallery view props.\n * @returns The media gallery module wrapping up images node.\n */\nconst mediaGalleryView: React.FC = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\n return (\n \n \n {Modal}\n {renderThumbnails(Thumbnails, props)}\n \n );\n};\n\nexport default mediaGalleryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListData,\n IReviewsListResources,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\n\n/**\n * Build Review Card.\n * @param props - Review Card ViewProps.\n * @param resources - Resource Strings.\n * @param isUserReview - User review flag.\n * @returns JSX Element.\n */\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\n return (\n \n \n
\n {props.rating}\n {props.date}\n
\n {props.name}\n
\n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {isUserReview ? undefined :

{resources.wasReviewHelpfulText}

}\n {props.like}\n {props.dislike}\n {props.edit}\n
\n
\n
\n );\n};\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Build Review modal.\n * @param props - Review list ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * Build Review modal.\n * @param props - Review modal ViewProps.\n * @param state - Review List State.\n * @returns JSX Element.\n */\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\n/**\n * ReviewsList view.\n * @param props - Ratings ReviewsList ViewProps.\n * @returns ReviewsList view module.\n */\nconst ReviewsListview: React.FC> = props => {\n const {\n filterByDropdown,\n heading,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n sortByDropdown,\n state,\n userReview,\n resources\n } = props;\n\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {heading}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview, resources, true)}\n {reviewCards.map(review => {\n return buildReviewCard(review, resources, false);\n })}\n \n {!ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(props)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nexport default ReviewsListview;\n"],"names":["_renderCollapseMenu","props","mobileMenuCollapsed","Divider","MobileMenuLinksContainer","window","document","body","classList","remove","add","undefined","config","layout2022","React","Collapse","className","isOpen","Node","_renderReactFragment","search","menuBar","_renderMobileAccountBlock","slots","countrySelector","renderCustomerName","accountInformation","customer","result","FirstName","Name","renderForMobile","AccountInfoDropdownParentContainer","signOutLink","signInLink","data","accountLinks","accountClassName","classnames","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","map","link","_renderAccountBlock","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","items","length","slot","index","key","_renderStoreLocatorButton","storeLocatorPageLink","destinationUrl","storeLocatorLabel","Button","href","scrolled","setScrolled","handleScroll","offset","scrollY","addEventListener","menuTopDesktop","getElementsByClassName","desktopMenuTop","menuTopMobile","appendChild","HeaderTag","HeaderContainer","HeaderTopBarContainer","Module","preferredStore","logo","wishListIconDesktop","cartIcon","navIcon","siteOptions","buildReviewCard","cardProps","headerProps","name","date","rating","cardBodyProps","reviewProps","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","edit","createReviewModal","moduleProps","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReportModal","state","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","noReviewsWithFilterMessage","pageControls","reportReviewModal","reviewCards","reviewModal","userReview","modalOpen","setModalOpen","_toggleReviewModal","style","overflowY","buttonLabel","ratingsSummary","averageRating","resources","product_review_list_button_label","title","reviewListLabel","page_summary","modal_summary","innerHTML","isFilterApplied","onClick","display","e","stopPropagation","review","AccordionItem","constructor","super","moduleClassName","handleHeadingChange","event","this","accordionItemTitle","target","value","_onToggle","bind","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","shouldComponentUpdate","nextProps","render","renderView","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","tag","ControlledDrawer","collapseProps","onToggle","onTextChange","requestContext","accordionSlots","interactionStyle","accordionState","actionContext","update","createAccordionStateInput","observer","_renderAccordionItemContent","item","accordionItemContent","Accordion","expandAllButtonRef","collapseAllButtonRef","heading","text","_onExpandAll","_onCollapseAll","payLoad","getPayloadObject","isDisabled","headingComponent","Msdyn365","editProps","onEdit","accordionViewProps","AccordionContainer","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","_getAccordionItem","contentAction","etext","TelemetryConstant","attributeExpandAll","getTelemetryAttributes","attributeCollapseAll","showToggleAll","disabled","expandAllText","ref","toggleAllSeparator","collapseAllText","setState","setTimeout","current","focus","AadGeneric","componentDidMount","$i2e","$element","insertServiceContent","getElementContent","initialize","viewProps","aadGeneric","aadConainer","aadAPIConainer","id","AccountAddressTile","handleLinkTextChange","linkIndex","links","linkText","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","description","format","LinksComponent","DescriptionComponent","_mapEditableLinks","linkdata","editableLinks","forEach","attributes","editableLink","ariaLabel","linkUrl","openInNewTab","role","additionalProperties","push","AccountInvoiceTileDescription","AccountInvoiceTile","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","toFixed","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","url","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","RetailB2BEcommerceFeatureState","featureState","find","params","isEditor","IsEnabled","customerInformation","IsB2b","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountProfileEdit","onTextBoxChange","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","Object","assign","EmailRegex","componentDidUpdate","nextState","viewState","isShowLoading","accountProfileEdit","loading","Modal","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","createElement","childNodes","nodeValue","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","__decorate","observable","AccountProfileEditItem","AccountProfileEditLoading","button","LocalAccount","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","htmlFor","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","_renderAttributes","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","attribute","IsHidden","toLocaleLowerCase","RecordId","_renderAttribute","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","disableBtn","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","attributesContainerRef","Text","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","innerRef","editRef","_saveAttributes","_disableAttributes","phoneSectionHeading","replace","_onPhoneChange","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","IsMandatory","isEnumeration","IsEnumeration","EnumerationDetails","hasNoValue","_onAttributeSelect","selected","option","EnumerationValue","toggleState","arialabel","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","attributeError","StringExtensions","attributePayloadData","isMandatory","MsDyn365","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VATNumber","VatNumber","async","updateCustomerAttributesInput","AccountNumber","apiSettings","updateCustomerAttributes","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","reaction","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","buttonWrapper","buttonYesText","buttonNoText","toString","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","get","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","LastName","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","AccountProfileItem","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","computed","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountWelcomeTile","accountInfo","AccountWishlistTile","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","RequestsTableColumnHeader","getUserName","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","year","month","day","getDetails","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","tableData","operationRequests","ArrayExtensions","row","b2bRequestsTypeColumn","TableDataType","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","headings","filter","isMobile","mobileExcludedColumns","sortable","columnSortAriaLabel","rows","editLinkText","deleteLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","reqContext","URL","location","requestUrl","isSingleSelectOnly","actions","onDelete","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","itemCount","Heading","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","b2bUserInformation","B2BUserId","b2bRequestsStatus","table","PasswordReset","newPasswordRegex","reenterPasswordRegex","PasswordRegex","passwordReset","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","passwordResetLocalAccount","newPasswordLabelText","confirmPasswordLabelText","PasswordResetErrorComponent","passwordEntryMismatchError","PasswordResetButtonComponent","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","successClassName","SignUp","handleParagraphChange","disclaimer","isEmailVerificationRequried","templateVersion","VERIFY","isGivenNameVerificationRequried","isSurnameVerificationRequried","UX_INPUT_TYPE","invalidPasswordError","errorMessages","getValue","v1Value","v2Value","signUp","SignUpLoadingIconComponent","SignUpLoadingMessageComponent","signUpLocalAccount","passwordLabelText","emailVerification","isRequired","verificationCodeLabelText","verificationControlWrapper","SignUpButtonComponent","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","successMessage","SignUpSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","SignUpErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","givenNameVerification","surnameVerification","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cssClassName","SignUpLabelComponent","SignUpInputComponent","SignUpItem","SignUpEmailVerification","SignUpGivenNameVerificationComponent","SignUpSurnameVerificationComponent","SignUpLoading","FormType","InputType","InputID","renderInputSection","inputs","asteriskAfterLabel","onInputChange","customClass","maxChars","fieldReference","FormLabel","asteriskText","FormFieldError","FormInput","placeholder","BusinessOrganizationList","BusinessFormDefaultInputs","businessUserFirstNameLabelText","businessUserLastNameLabelText","businessUserEmailAddressLabelText","SpendingLimit","businessUserSpendingLimitLabelText","delayFocus","formChildReference","userFormEditReference","userFormDeleteReference","_handleAddUserButtonClicked","newForm","formItems","newUser","Random","isFormActive","formType","Add","referenceBack","addUserButtonReference","isModalOpen","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","then","reload","catch","trace","addOrganizationUser","AddOrganizationUserInput","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","substring","lastName","possibleCell","dataCell","user","_handleDeleteIcon","displayedUserData","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","isReady","_isFormReady","formItem","match","_formatPrice","price","_getCurrentUrl","_getViewport","device","Type","innerWidth","gridSettings","xs","w","sm","md","lg","_toggleStatementRequestDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_showRequestStatementModal","isFullOrg","statementRequestFullOrg","isStatementRequestModalOpen","_requestStatement","currentUser","users","_getB2BUserId","statementRequest","FromDate","Date","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","callerContext","BusinessPartnerUsersDataActions","_closeStatementRequestModal","statementRequestButtonReference","_onSelectRow","records","selectedRow","rowProps","_toggleModal","Status","_viewport","_updateViewport","submitButtonReference","addedReference","businessUserSelectedUserDisplayName","componentWillUnmount","removeEventListener","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","userAccountStatementLabel","fullOrganizationLabel","requestStatementButtonLabel","statementRequestModalHeaderLabel","cancelLabel","fromDateLabel","toDateLabel","submitRequestLabel","sendToEmailLabel","selectedUserLabel","hasUsers","addUserAttributes","status","errorProps","OrganizationUserList","moduleContainer","headingTag","addUserButton","noUsersText","modalState","organizationListTable","_createTableProps","toggleModal","_renderUserForm","_renderUserDetails","requestAccountStatementButton","AdminRequestStatementButton","buttonReference","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","requestStatementModal","RequestStatementModal","toggle","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","modalHeaderLabel","onSubmitRequest","selectedUser","selectedUserName","modalAriaLabel","tableSort","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserActionButtonText","businessUserPaginationAriaLabel","_createTableItems","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","resourcePrefix","tableAriaLabel","tableTabIndex","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","FullName","buttonReferences","delete","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","modalClassName","FormWrapper","modalHeading","modalDescription","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","FormButton","BusinessFormItem","BusinessUserForm","_renderModal","BusinessUserDetails","userFullName","headingSection","bodySection","footerSection","wrapClassName","autoFocus","fade","applicationNode","ModalHeader","ModalFooter","ButtonList","formProps","_getForm","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","pickUpText","shippingText","emailshippingText","groupTitle","_renderCartLinesGroupTitle","countItem","reduce","Quantity","itemLabel","itemsLabel","suffix","deliveryOption","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","cart","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","FooterItem","handleTextChange","image","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","Link","onTelemetryClick","ariaHiddenAttr","src","imageSettings","viewports","q","h","lazyload","loadFailureBehavior","shouldSkipToMainImage","FooterItemView","_renderElement","Map","mapRef","_initMap","storeSelectorStateManager","isMapApiLoaded","Microsoft","Maps","credentials","BingMapsApiKey","pushpinAccessible","Events","addHandler","setSelectedStoreLocationId","_updateMap","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","storeLocation","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","options","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","currentLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","orgUnitNumber","showIndex","size","color","selectionColor","_getSvgIcon","BingMapsEnabled","when","setMapModuleLoaded","loadMapApi","lang","locale","market","ChannelCountryRegionISOCode","shouldDisplayMap","listMapViewState","displayMap","ModuleProps","classname","show","Header","MapProps","MapHeader","ProductSpecificationTableRow","productName","cellData","scope","dangerouslySetInnerHTML","getRichTextHtml","ProductSpecification","_toggle","drawerListId","isDrawerOpen","catalogId","product","actionInput","AttributesForSelectedVariantInput","channelId","getAttributesForSelectedVariant","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","_createDrawerBody","_createTableBody","content","_renderProductCell","timeout","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","DateTimeOffsetValue","toUTCString","FloatValue","TextValue","trueValueText","falseValueText","rowdata","ObjectExtensions","BusinessFormItemComponent","renderModal","BusinessUserFormComponent","BusinessUserDetailsComponent","buttonList","headingForEmptyUserOrganizationList","textForEmptyUserOrganizationList","getForm","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","fallbackImage","emptyPlaceHolderImage","placeholderImageName","getFallbackImageUrl","ItemId","tabIndex","Image","thumbnailImageSettings","imageFallbackOptimize","skipImageValidation","fallBackSrc","defaultThumbnailImageSettings","xl","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","altText","getMediaGalleryItems","lastUpdate","imageId","modifiedActiveIndex","callbackToggle","callbackThumbnailClick","activeIndex","handleKeyDown","keyCode","KeyCodes","preventDefault","onKeyDown","shouldUseOptimizedImage","bypassHideOnFailure","fullScreenTitleText","GetThumbnailItemComponent","CarouselProps","MediaGallery","isUserReview","reviewTitle","wasReviewHelpfulText","like","dislike","renderProductDescription","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","renderProductImage","filterByDropdown","noReviewsMessage","refineReviewsProps","reviewsListProps","sortByDropdown","selectRatingLabel","reviewTitleLabel","reviewTextLabel"],"sourceRoot":""}
\n {/* eslint-disable-next-line react/no-danger */}\n \n {cellData}