{"version":3,"file":"static/js/24.0c86bc864e88443dd567.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/b2b/views/business-organization-list.view.tsx?60a2","webpack://Msdyn365.Commerce.Online/./src/themes/b2b/views/components/carticon.component.tsx?4710","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/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-customer-balance/account-customer-balance.tsx?8d5a","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/components/account-actions.tsx?e021","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/components/account-statement-request-modal.tsx?18c0","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/components/index.tsx?fba9","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/b2b-requests-tile/components/account-b2b-requests-tile-links.tsx?d6f5","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-tile/b2b-requests-tile.tsx?9498","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-tile/b2b-requests-tile.view.tsx?3f4e","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?3b33","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?f1c7","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/organization-users-tile.tsx?f5de","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/organization-users-tile.view.tsx?bac2","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/catalog-picker/catalog-picker.tsx?02aa","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.view.tsx?1e13","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/links.tsx?abbf","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.tsx?3084","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.view.tsx?1773","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/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/site-picker/site-picker.tsx?b9ec","webpack://Msdyn365.Commerce.Online/./src/modules/site-picker/site-picker.view.tsx?5319","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.tsx?899b","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.view.tsx?dcdf","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 * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { Modal, ModalBody, ModalFooter } from 'reactstrap';\r\nimport * as React from 'react';\r\n\r\nimport { IBusinessOrganizationListViewProps, IFormViewProps, InputID } from '@msdyn365-commerce-modules/business-organization-list';\r\nimport { IBusinessFormItem } from '@msdyn365-commerce-modules/business-organization-list';\r\n\r\nconst BusinessFormItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst BusinessUserForm: React.FC = (props: IFormViewProps) => {\r\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\r\n\r\n const modalBody = (\r\n <>\r\n {modalDescription}\r\n \r\n {inputs &&\r\n inputs.map((item: IBusinessFormItem) => {\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n \r\n \r\n );\r\n\r\n const modalFooter =\r\n buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n });\r\n\r\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\r\n};\r\n\r\nconst BusinessUserDetails: React.FC = (props: IFormViewProps) => {\r\n const { modalClassName, FormWrapper, modalHeading, modalDescription, selectedUser, buttons, errorMessage, resources, toggle } = props;\r\n let modalBody = null;\r\n\r\n if (!selectedUser) {\r\n modalBody = errorMessage;\r\n } else {\r\n const { FirstName, LastName } = selectedUser;\r\n const userFullName = `${FirstName} ${LastName}`;\r\n\r\n modalBody = (\r\n <>\r\n {modalDescription}\r\n \r\n \r\n {userFullName}\r\n \r\n {Object.keys(selectedUser).map(data => {\r\n if (data === InputID.FirstName || data === InputID.LastName) {\r\n return null;\r\n }\r\n const label = resources[`table${data}HeadingText`] || data;\r\n return (\r\n \r\n {label}\r\n {': '}\r\n {selectedUser[data]}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n }\r\n\r\n const modalFooter =\r\n buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n });\r\n\r\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\r\n};\r\n\r\nconst _getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\r\n switch (type) {\r\n case 'ADD':\r\n case 'EDIT':\r\n return ;\r\n case 'VIEW':\r\n case 'REMOVE':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst _renderModal = (\r\n className: string,\r\n isModalOpen: boolean,\r\n headingSection: React.ReactNode,\r\n bodySection: React.ReactNode,\r\n footerSection: React.ReactNode,\r\n toggleModal?: () => void\r\n) => {\r\n return (\r\n \r\n
\r\n

\r\n {headingSection}\r\n

\r\n \r\n
\r\n {bodySection}\r\n {footerSection}\r\n \r\n );\r\n};\r\n\r\nconst BusinessOrganizationList: React.FC = props => {\r\n const {\r\n OrganizationUserList,\r\n moduleContainer,\r\n heading,\r\n noUsersText,\r\n addUserButton,\r\n organizationListTable,\r\n form,\r\n formType,\r\n toggleModal,\r\n requestAccountStatementButton,\r\n requestStatementModal\r\n } = props;\r\n\r\n const ButtonList: React.ReactNode = (\r\n \r\n {addUserButton}\r\n {requestAccountStatementButton}\r\n \r\n );\r\n\r\n if (noUsersText) {\r\n return (\r\n \r\n \r\n {heading}\r\n {ButtonList}\r\n {requestStatementModal}\r\n {noUsersText}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {ButtonList}\r\n {requestStatementModal}\r\n {organizationListTable}\r\n \r\n {form && _getForm(formType, form, toggleModal)}\r\n \r\n );\r\n};\r\n\r\nexport default BusinessOrganizationList;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { getUrlSync, IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport {\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const {\r\n cartLabel,\r\n cartQtyLabel,\r\n data: { cart }\r\n } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n const cartItem = cart ? cart.totalItemsInCart : 0;\r\n const qtyLabel = format(cartQtyLabel, cartItem);\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {_displayLabel(qtyLabel, cartItem)}\r\n
\r\n \r\n );\r\n});\r\n\r\nfunction _displayLabel(qtyLabel: string, cartItem: number) {\r\n return cartItem <= 0 ? qtyLabel.split(' ')[0]: qtyLabel;\r\n}\r\n\r\n// @ts-expect-error\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon', { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\nexport default CartIconComponent;\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 { 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 Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUsersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport {\n AccountStatementRequest,\n BusinessPartnerOperationDeliveryType,\n CustomerBalances\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getTelemetryObject, Heading, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceData } from './account-customer-balance.data';\nimport { HeadingTag, IAccountCustomerBalanceProps } from './account-customer-balance.props.autogenerated';\nimport {\n AccountLabels,\n AccountValues,\n ActionBar,\n AdminRequestStatementButton,\n AvailableCreditComponent,\n BackButton,\n BalanceOwedComponent,\n CreditExcessComponent,\n RequestStatementModal\n} from './components';\n\nexport interface IAccountCustomerBalanceViewProps extends IAccountCustomerBalanceProps {\n heading: string;\n homeButton: React.ReactNode;\n accountSectionHeading: React.ReactNode;\n accountLabels: React.ReactNode;\n accountValues: React.ReactNode;\n creditSummarySectionHeading: React.ReactNode;\n creditSummaryLabels?: React.ReactNode;\n creditSummaryValues?: React.ReactNode;\n actions: React.ReactNode;\n requestStatementModal: React.ReactNode;\n availableCredit?: React.ReactNode;\n balanceOwed?: React.ReactNode;\n creditExcess?: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceState {\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n isStatementRequestAdminDropdownOpen: boolean;\n statementRequestFullOrg: boolean;\n statementRequestMaxDateString?: string;\n}\n\n/**\n *\n * AccountCustomerBalance component.\n * @extends {React.PureComponent>}\n */\nclass AccountCustomerBalance extends React.PureComponent<\n IAccountCustomerBalanceProps,\n IAccountCustomerBalanceState\n> {\n private readonly telemetryContent?: ITelemetryContent;\n\n @computed get canSubmitStatementRequest(): boolean {\n return this.state.statementRequestFromDateString !== '' && this.state.statementRequestToDateString !== '';\n }\n\n constructor(props: IAccountCustomerBalanceProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: '',\n isStatementRequestAdminDropdownOpen: false,\n statementRequestFullOrg: false,\n statementRequestMaxDateString: new Date().toISOString().split('T')[0]\n };\n }\n\n public render(): JSX.Element | null {\n const customer = get(this.props, 'data.customerInformation.result');\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n if ([customer, account].includes(undefined)) {\n this.props.context.telemetry.error('Customer data is unavailable, module will not render');\n return null;\n }\n\n const { config, resources, context } = this.props;\n const { heading } = config;\n const {\n creditSummarySectionHeading,\n accountSectionHeading,\n backToShoppingText,\n customerSincePrefix,\n availableCreditLabel,\n balanceOwedLabel,\n creditExcessLabel,\n requestStatementButtonLabel,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel,\n myAccountStatementLabel,\n fullOrganizationLabel,\n modalAriaLabel\n } = resources;\n\n const {\n isStatementRequestModalOpen,\n statementRequestFromDateString,\n statementRequestToDateString,\n statementRequestMaxDateString\n } = this.state;\n\n const accountNumber = customer.AccountNumber;\n const createdOn = this._formatJoinDate(new Date(customer.CreatedDateTime));\n const name = `${customer.FirstName} ${customer.LastName}`;\n let customerCredit = 0;\n let customerAccountBalance = 0;\n let excess = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n customerAccountBalance = account.Balance;\n excess = account.Balance - account.CreditLimit;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n customerAccountBalance = account.InvoiceAccountBalance;\n excess = account.InvoiceAccountBalance - account.InvoiceAccountCreditLimit;\n }\n\n const creditExcess = excess > 0 ? this._formatCurrency(excess) : null;\n const availableCredit = this._formatCurrency(customerCredit);\n const balanceOwed = this._formatCurrency(customerAccountBalance);\n const backLink = Msdyn365.getUrlSync('home', context.actionContext) || '';\n const emailAddress = customer.Email;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const isB2BAdmin = isB2BSite && customer.IsB2bAdmin;\n\n const actionBar = isB2BAdmin ? (\n \n ) : (\n isB2BSite && (\n \n )\n );\n\n const viewProps = {\n ...this.props,\n heading: ,\n accountSectionHeading: (\n \n ),\n accountLabels: (\n \n ),\n accountValues: ,\n creditSummarySectionHeading: (\n \n ),\n availableCredit: ,\n balanceOwed: ,\n creditExcess: ,\n homeButton: ,\n actions: actionBar,\n requestStatementModal: isB2BSite && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private _formatCurrency(currency: number): string {\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n\n return `${formatCurrency(currency.toFixed(2), currencyCode)}`;\n }\n\n private _formatJoinDate(date: Date): string {\n const i14nDate = new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n });\n\n return i14nDate.format(date);\n }\n\n private readonly _showRequestStatementModal = (): void => {\n if (!this.state.isStatementRequestModalOpen) {\n this.setState({\n isStatementRequestModalOpen: true\n });\n }\n };\n\n private readonly _toggleModal = (): void => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n };\n\n private readonly _toggleDropdown = (): 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 _adminShowRequestStatementModal = (isFullOrg: boolean) => {\n this.setState({\n statementRequestFullOrg: isFullOrg,\n isStatementRequestAdminDropdownOpen: false\n });\n\n this._showRequestStatementModal();\n };\n\n private readonly _requestStatement = () => {\n const customer = this.props.data.customerInformation.result!;\n const B2BUserId = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\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\n };\n\n const context = { callerContext: this.props.context.actionContext };\n\n BusinessPartnerUsersDataActions.requestAccountStatementAsync(context, B2BUserId, statementRequest);\n\n this.setState({\n isStatementRequestModalOpen: false\n });\n };\n}\n\nexport default AccountCustomerBalance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceActions {\n className?: string;\n requestStatementButtonLabel: string;\n onRequestStatement(): void;\n}\n\ninterface IAdminRequestStatementProps {\n className?: string;\n requestStatementButtonLabel: string;\n myUserAccountLabel: string;\n fullOrganizationLabel: string;\n isDropdownShowing: boolean;\n buttonReference?: React.RefObject;\n onToggleDropdown(): void;\n onRequestStatement(isFullOrg: boolean): void;\n}\n\nexport const ActionBar: React.FC = ({ className, onRequestStatement, requestStatementButtonLabel }) => {\n return (\n
\n \n
\n );\n};\n\nexport const AdminRequestStatementButton: React.FC = ({\n className,\n onRequestStatement,\n requestStatementButtonLabel,\n onToggleDropdown,\n myUserAccountLabel,\n fullOrganizationLabel,\n isDropdownShowing,\n buttonReference\n}) => {\n const onSelectCustomerAccount = React.useCallback(() => {\n onRequestStatement(false);\n }, [onRequestStatement]);\n\n const onSelectFullOrg = React.useCallback(() => {\n onRequestStatement(true);\n }, [onRequestStatement]);\n\n const popoverReference = buttonReference !== undefined ? buttonReference : React.createRef();\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\n return (\n
\n \n {requestStatementButtonLabel}\n \n \n \n {myUserAccountLabel}\n \n \n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * The interface for the props for the account statement request modal.\n */\ninterface IAccountStatementRequestModalProps {\n email: string;\n isModalOpen: boolean;\n fromDateString: string;\n toDateString: string;\n canSubmitRequest: boolean;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n fromDateLabel: string;\n toDateLabel: string;\n submitRequestLabel: string;\n cancelLabel: string;\n className: string;\n selectedUser: string;\n selectedUserLabel: string;\n toggle(): void;\n onChangeFromDate(newFromDate: string): void;\n onChangeToDate(newToDate: string): void;\n onSubmitRequest(): void;\n modalAriaLabel?: string;\n maxDateString?: string;\n}\n\nexport const RequestStatementModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n fromDateString,\n toDateString,\n onChangeFromDate,\n onChangeToDate,\n canSubmitRequest,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n selectedUser,\n selectedUserLabel,\n modalAriaLabel,\n maxDateString\n}) => {\n const onChangeFromDateEvent = React.useCallback(\n (event: React.ChangeEvent) => {\n const value = event.target.value;\n\n onChangeFromDate(value);\n },\n [onChangeFromDate]\n );\n\n const onChangeToDateEvent = React.useCallback(\n (event: React.ChangeEvent) => {\n const value = event.target.value;\n\n onChangeToDate(value);\n },\n [onChangeToDate]\n );\n\n /**\n * If the onBlur is called on the fromDate and the date has been changed, reset focus on it.\n * @param event - The event that is triggering onBlur.\n */\n const onBlurFromDate = React.useCallback(\n (event: React.ChangeEvent) => {\n if (ObjectExtensions.isFunction(event.target.focus) && event.target.value !== fromDateString) {\n event.target.focus();\n }\n },\n [fromDateString]\n );\n\n /**\n * If the onBlur is called on the toDate and the date has been changed, reset focus on it.\n * @param event - The event that is triggering onBlur.\n */\n const onBlurToDate = React.useCallback(\n (event: React.ChangeEvent) => {\n if (ObjectExtensions.isFunction(event.target.focus) && event.target.value !== toDateString) {\n event.target.focus();\n }\n },\n [toDateString]\n );\n\n return (\n \n {modalHeaderLabel}\n \n {selectedUser && (\n
\n \n
\n
{selectedUser}
\n
\n )}\n \n
\n {email}\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n {submitRequestLabel}\n \n {` `}\n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { AdminRequestStatementButton } from './account-actions';\nimport { RequestStatementModal } from './account-statement-request-modal';\n\nexport * from './account-actions';\nexport * from './account-statement-request-modal';\n\ninterface IAccountLabel {\n name: string;\n accountNumber: string;\n createdOn: string;\n customerSincePrefix: string;\n}\n\ninterface IAccountValues {\n availableCredit: string;\n availableCreditLabel: string;\n}\n\n/**\n * Prop for Available credit component.\n */\ninterface ICreditSummaryAvailableCredit {\n availableCreditLabel: string;\n availableCredit: string;\n}\n\n/**\n * Prop for Balanced owed component.\n */\ninterface ICreditSummaryBalanceOwed {\n balanceOwedLabel: string;\n balanceOwed: string;\n}\n\n/**\n * Prop for credit excess component.\n */\ninterface ICreditSummaryCreditExcess {\n creditExcessLabel: string | null;\n creditExcess: string | null;\n}\n\ninterface ICreditSummaryLabel {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface ICreditSummaryValues {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface IBackButton {\n link: string;\n label: string;\n telemetryContent?: ITelemetryContent;\n}\n\nexport const AccountLabels: React.FC = ({ name, accountNumber, customerSincePrefix, createdOn }) => (\n
\n

{name}

\n
#{accountNumber}
\n
\n {customerSincePrefix} {createdOn}\n
\n
\n);\n\nexport const AccountValues: React.FC = ({ availableCredit, availableCreditLabel }) => (\n
\n
{availableCreditLabel}
\n
{availableCredit}
\n
\n);\n\nexport const CreditSummaryLabels: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n
{creditExcess}
\n
\n);\n\nexport const CreditSummaryValues: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n {creditExcess &&
{creditExcess}
}\n
\n);\n\n/**\n * Available credit component.\n * @param props - ICreditSummaryAvailableCredit.\n * @param props.availableCreditLabel - Available credit label.\n * @param props.availableCredit - Available credit value.\n * @returns - React Node for available credit component.\n */\nexport const AvailableCreditComponent: React.FC = ({ availableCreditLabel, availableCredit }) => (\n
\n
\n
{availableCreditLabel}
\n
\n
\n
{availableCredit}
\n
\n
\n);\n\n/**\n * Balance Owed Component.\n * @param props - ICreditSummaryBalanceOwed.\n * @param props.balanceOwedLabel - Balance Owed label.\n * @param props.balanceOwed - Balance Owed value.\n * @returns - React Node for balance owed component.\n */\nexport const BalanceOwedComponent: React.FC = ({ balanceOwedLabel, balanceOwed }) => (\n
\n
\n
{balanceOwedLabel}
\n
\n
\n
{balanceOwed}
\n
\n
\n);\n\n/**\n * Credit Excess Component.\n * @param props - ICreditSummaryCreditExcess.\n * @param props.creditExcessLabel - Credit excess label.\n * @param props.creditExcess - Credit excess value.\n * @returns - React Node for credit excess component.\n */\nexport const CreditExcessComponent: React.FC = ({ creditExcessLabel, creditExcess }) => (\n
\n {creditExcess && (\n
\n
{creditExcessLabel}
\n
\n )}\n
\n {creditExcess &&
{creditExcess}
}\n
\n
\n);\nexport const BackButton: React.FC = ({ link, label, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.BackToShopping);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {label}\n \n );\n};\n\nexport { AdminRequestStatementButton, RequestStatementModal };\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 { isChannelTypeB2B } 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\n if (!this.props.context.request.params.isEditor && !isChannelTypeB2B(this.props.context.request)) {\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 private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\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 this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\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 !this.isEditAsyncCustomerFeatureEnabled;\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 {\n ArrayExtensions,\n updateCustomerPersonalization,\n updateCustomerPersonalizationInput\n} 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\n private readonly telemetryContent?: ITelemetryContent;\n private readonly payLoad: IPayLoad;\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\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 this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false) &&\n !this.isEditAsyncCustomerFeatureEnabled;\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 this.getDescription(customerInformation),\n Msdyn365.isOboRequest(this.props.context.request) ? undefined : [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 getDescription(customerInformation: Customer | undefined): string {\n let description = '';\n if (customerInformation !== undefined) {\n if (customerInformation.FirstName) {\n description += customerInformation.FirstName;\n }\n if (customerInformation.LastName) {\n description += customerInformation.FirstName ? ` ${customerInformation.LastName}` : customerInformation.LastName;\n }\n }\n return description;\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 && heading.text && (\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 if (!ArrayExtensions.hasElements(links)) {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n description: description && (\n \n )\n };\n }\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: (\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 ? config.heading.text : ''} ${\n accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''\n }`\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';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../../..';\n\nexport interface IB2bRequestsTileLinksProps {\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 defaultClassName = 'ms-account-b2b-requests-tile';\n\nexport const B2bRequestsTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (!ArrayExtensions.hasElements(links)) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n return linkdata.map(link => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return {\n ariaLabel: link.ariaLabel,\n className: `${defaultClassName}__link`,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n } as Msdyn365.ILinksData;\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileData } from './b2b-requests-tile.data';\nimport { IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nimport { B2bRequestsTileLinks } from './components/account-b2b-requests-tile-links';\n\nexport interface IB2bRequestsTileViewProps extends IB2bRequestsTileProps {\n b2bRequestsTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsTile component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IB2bRequestsTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n const { className, heading, links } = config;\n\n const defaultClassName = 'ms-account-b2b-requests-tile';\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n b2bRequestsTile: {\n moduleProps: this.props,\n className: classnames(defaultClassName, config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: ArrayExtensions.hasElements(links) && (\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 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 B2bRequestsTile;\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 { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\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 IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: 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 '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\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 AccountOrganizationUsersTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\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-organization-users-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 { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription =\n numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n const customerInformation = data.customerInformation.result;\n\n // Organization-users tile will not be render for non-admin users.\n if (!customerInformation?.IsB2bAdmin) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: (\n \n )\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 OrganizationUsersTile;\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 { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\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 statementRequestMaxDateString?: string;\n businessUserActionRetailErrorMsg: string;\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 statementRequestMaxDateString: new Date().toISOString().split('T')[0],\n businessUserActionRetailErrorMsg: ''\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 statementRequestMaxDateString\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 businessUserActionRetailErrorMsg: error.message\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, businessUserActionRetailErrorMsg } = 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, {\n ContentEditableEvent,\n generateImageUrl,\n getCatalogId,\n getUrlSync,\n Image,\n RichTextComponent,\n Text\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ICatalogPickerData } from './catalog-picker.data';\nimport { ICatalogPickerProps } from './catalog-picker.props.autogenerated';\n\n/**\n * ICatalogPickerViewProps.\n */\nexport interface ICatalogPickerViewProps extends ICatalogPickerProps {\n catalogPicker: IModuleProps;\n heading: React.ReactNode;\n paragraph: React.ReactNode;\n catalogs: ReactNode;\n}\n\n/**\n * CatalogPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CatalogPicker extends React.PureComponent> {\n private static readonly _moduleClassName = 'ms-catalog-picker';\n\n public constructor(props: ICatalogPickerViewProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const catalogPickerHeading = heading && (\n \n );\n\n const isCatalogsAvailable: boolean = ArrayExtensions.hasElements(this.props.data.catalogs?.result);\n const catalogPickerParagraph = paragraph && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n catalogPicker: {\n moduleProps: this.props,\n className: CatalogPicker._moduleClassName\n },\n heading: catalogPickerHeading,\n paragraph: catalogPickerParagraph,\n catalogs: isCatalogsAvailable ? this._renderCatalogPicker() : ''\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n private _renderCatalogPickerButton(item: ProductCatalog): React.ReactNode {\n const catalogId = item.RecordId;\n const currentCatalogId = getCatalogId(this.props.context.request);\n if (currentCatalogId === catalogId) {\n return
{this.props.resources.currentCatalogText}
;\n }\n let linkToCatalog = '';\n if (Msdyn365.isBrowser) {\n const catalogUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\n const fullUrl = new URL(catalogUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n linkToCatalog = fullUrl.href;\n }\n return (\n \n {this.props.resources.changeCatalogButtonText}\n \n );\n }\n\n private _renderCatalogPicker(): React.ReactNode {\n const catalogs = this.props.data.catalogs?.result;\n\n const isBrowser = Msdyn365.isBrowser;\n\n return (\n
\n {catalogs?.map(item => {\n const reactKey = `${JSON.stringify(item)}-${String(isBrowser)}`;\n const image: MediaLocation | undefined = ArrayExtensions.firstOrDefault(item.Images);\n return (\n \n

{item.Name}

\n
\n \n
\n {this._renderCatalogPickerButton(item)}\n
\n
\n
\n );\n })}\n \n );\n }\n}\n\nexport default CatalogPicker;\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 { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\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 { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport 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, StringExtensions } 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.cart?.hasInvoiceLine || 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, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\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\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 { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\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 isAdditionalMediaDrawerOpen: 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\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 isAdditionalMediaDrawerOpen: 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 validateCatalogId(catalogId);\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 productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : 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 {this.props.context.request.app?.config?.OmniChannelMedia && this._createAdditionalMediaDrawer()}\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\n const drawers = 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 if (this.props.context.request.app?.config?.OmniChannelMedia) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \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 MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && 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 return 'xs';\n }\n}\n\nexport default SitePicker;\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 { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\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 React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\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":["BusinessFormItem","_ref","wrapper","label","errorMessage","input","React","Node","Object","assign","BusinessUserForm","props","modalClassName","FormWrapper","modalHeading","modalDescription","inputs","buttons","toggle","modalBody","map","item","error","index","key","modalFooter","button","_renderModal","BusinessUserDetails","selectedUser","resources","FirstName","LastName","userFullName","tag","className","keys","data","InputID","isModalOpen","headingSection","bodySection","footerSection","toggleModal","Modal","role","wrapClassName","autoFocus","fade","applicationNode","isOpen","id","tabIndex","onClick","ModalBody","ModalFooter","OrganizationUserList","moduleContainer","heading","noUsersText","addUserButton","organizationListTable","form","formType","requestAccountStatementButton","requestStatementModal","ButtonList","Module","_getForm","type","formProps","CartIcon","observer","cartLabel","cartQtyLabel","cart","cartLink","getUrlSync","context","actionContext","cartItem","totalItemsInCart","qtyLabel","format","payLoad","getPayloadObject","telemetryContent","attributes","getTelemetryAttributes","style","visibility","title","href","onTelemetryClick","split","_displayLabel","CartIconComponent","msdyn365Commerce","createComponentOverride","_objectSpread","component","AccordionItem","constructor","super","moduleClassName","handleHeadingChange","event","this","config","accordionItemTitle","target","value","_onToggle","bind","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","shouldComponentUpdate","nextProps","render","slots","renderView","accordionExpandedStateResult","accordionExpandedState","result","expanded","undefined","isAllExpanded","isExpandedOnInitialLoad","AccordionItemContainer","moduleProps","classnames","AccordionItemContent","drawer","ControlledDrawer","toggleButtonText","collapseProps","onToggle","onTextChange","requestContext","accordionSlots","state","interactionStyle","accordionState","update","createAccordionStateInput","__decorate","_renderAccordionItemContent","items","length","accordionItemContent","Accordion","expandAllButtonRef","collapseAllButtonRef","text","_onExpandAll","_onCollapseAll","isDisabled","headingComponent","Msdyn365","editProps","onEdit","accordionViewProps","AccordionContainer","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","_getAccordionItem","contentAction","etext","TelemetryConstant","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","disabled","expandAllText","ref","toggleAllSeparator","collapseAllText","setState","setTimeout","_this$collapseAllButt","current","focus","_this$expandAllButton","AccountAddressTile","handleLinkTextChange","linkIndex","links","linkText","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","description","viewProps","LinksComponent","DescriptionComponent","_mapEditableLinks","linkdata","editableLinks","forEach","link","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","push","AccountCustomerBalance","_showRequestStatementModal","isStatementRequestModalOpen","_toggleModal","_toggleDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_adminShowRequestStatementModal","isFullOrg","statementRequestFullOrg","_requestStatement","_this$props$data$b2bU","customer","customerInformation","B2BUserId","b2bUserInformation","statementRequest","FromDate","Date","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","Email","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","callerContext","BusinessPartnerUsersDataActions","statementRequestMaxDateString","toISOString","_get","account","includes","creditSummarySectionHeading","accountSectionHeading","backToShoppingText","customerSincePrefix","availableCreditLabel","balanceOwedLabel","creditExcessLabel","requestStatementButtonLabel","modalHeaderLabel","sendToEmailLabel","fromDateLabel","toDateLabel","submitRequestLabel","cancelLabel","myAccountStatementLabel","fullOrganizationLabel","modalAriaLabel","accountNumber","AccountNumber","createdOn","_formatJoinDate","CreatedDateTime","name","customerCredit","customerAccountBalance","excess","InvoiceAccountCreditLimit","CreditLimit","Balance","InvoiceAccountBalance","creditExcess","_formatCurrency","availableCredit","balanceOwed","backLink","emailAddress","isB2BSite","isChannelTypeB2B","actionBar","IsB2bAdmin","AdminRequestStatementButton","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","ActionBar","Heading","accountLabels","AccountLabels","accountValues","AccountValues","AvailableCreditComponent","BalanceOwedComponent","CreditExcessComponent","homeButton","BackButton","actions","RequestStatementModal","email","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","onSubmitRequest","selectedUserLabel","maxDateString","currency","currencyCode","formatCurrency","toFixed","date","Intl","DateTimeFormat","locale","month","day","year","computed","Button","_ref2","buttonReference","onSelectCustomerAccount","onSelectFullOrg","popoverReference","requestStatementDropdownString","Random","Guid","generateGuid","innerRef","Popover","placement","onChangeFromDateEvent","onChangeToDateEvent","onBlurFromDate","ObjectExtensions","isFunction","onBlurToDate","horizontalPosition","verticalPosition","ModalHeader","htmlFor","onBlur","onChange","max","min","_ref5","_ref6","_ref7","_ref8","BackToShopping","AccountInvoiceTileDescription","AccountInvoiceTile","_data$customerBalance","cultureFormatter","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","url","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","params","isEditor","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountProfileEdit","onTextBoxChange","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","window","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","componentDidMount","componentDidUpdate","nextState","viewState","isShowLoading","accountProfileEdit","loading","modal","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","e","document","createElement","innerHTML","childNodes","nodeValue","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","labelText","maxLength","pattern","AccountProfileEditLabelComponent","forId","AccountProfileEditInputComponent","observable","AccountProfileEditItem","AccountProfileEditLoading","_ref3","LocalAccount","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","att","attributeDefinition","find","attribute","IsHidden","Name","toLocaleLowerCase","RecordId","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","featureState","feature","IsEnabled","disableBtn","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","attributesContainerRef","Text","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","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","isNullOrWhitespace","attributePayloadData","isMandatory","MsDyn365","isBrowser","getElementsByClassName","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VATNumber","VatNumber","async","updateCustomerAttributesInput","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","_this$props$context$a","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","get","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","nameSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","AccountProfileItem","ArrayExtensions","hasElements","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountWelcomeTile","accountInfo","accountInformation","AccountWishlistTile","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","RequestsTableColumnHeader","getUserName","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","tableData","operationRequests","_request$TypeValue","_request$StatusValue","row","b2bRequestsTypeColumn","TableDataType","b2bRequestsRequestDateColumn","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","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","onDelete","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","b2bRequestsStatus","table","defaultClassName","B2bRequestsTileLinks","B2bRequestsTile","b2bRequestsTile","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","OrganizationUsersTile","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","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","_ref4","SignUpLoading","FormType","InputType","renderInputSection","asteriskAfterLabel","onInputChange","customClass","maxChars","fieldReference","FormLabel","asteriskText","FormFieldError","FormInput","placeholder","BusinessOrganizationList","_this$props$config","BusinessFormDefaultInputs","businessUserFirstNameLabelText","businessUserLastNameLabelText","businessUserEmailAddressLabelText","SpendingLimit","businessUserSpendingLimitLabelText","delayFocus","formChildReference","userFormEditReference","userFormDeleteReference","_handleAddUserButtonClicked","newForm","formItems","newUser","isFormActive","Add","referenceBack","addUserButtonReference","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","then","reload","catch","trace","addOrganizationUser","AddOrganizationUserInput","businessUserActionRetailErrorMsg","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","substring","lastName","possibleCell","dataCell","user","_handleDeleteIcon","displayedUserData","Price","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","currentUser","_getB2BUserId","_closeStatementRequestModal","_this$statementReques","statementRequestButtonReference","_onSelectRow","records","selectedRow","rowProps","Status","_viewport","_updateViewport","submitButtonReference","addedReference","businessUserSelectedUserDisplayName","addEventListener","componentWillUnmount","removeEventListener","_this$formChildRefere","_this$submitButtonRef","_this$props$data$cust","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","userAccountStatementLabel","statementRequestModalHeaderLabel","hasUsers","AddUser","addUserAttributes","status","errorProps","headingTag","modalState","_createTableProps","_renderUserForm","_renderUserDetails","selectedOrganizationLabel","selectedUserName","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","_this$state$reference","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","FormButton","CatalogPicker","handleTextChange","paragraph","_heading$tag","_this$props$data$cata","catalogPickerHeading","_moduleClassName","isCatalogsAvailable","catalogs","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","catalogPicker","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","fullUrl","searchParams","set","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","image","firstOrDefault","Images","Image","src","generateImageUrl","Uri","imageSettings","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","assembleNode","itemIndex","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","ctaLink","renderLinks","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentCardLinks","btnClass","ContentBlock","_this$props$context$r","_this$props$config$im","imageAriaLabel","contentBlockTitle","imageProps","contentBlockLinks","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","shouldSkipToMainImage","contentBlockviewProps","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","renderAdditionalContent","_additionalContent$ad","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","_props$cart","_props$context$action","_props$cart2","renderModuleAttributes","promotionOptions","hasInvoiceLine","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","FooterItem","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","Link","ariaHiddenAttr","viewports","q","h","lazyload","FooterItemView","_renderElement","ProductSpecificationTableRow","productName","cellData","scope","dangerouslySetInnerHTML","getRichTextHtml","ProductSpecification","_toggle","drawerListId","isDrawerOpen","isAdditionalMediaDrawerOpen","validateCatalogId","product","actionInput","AttributesForSelectedVariantInput","channelId","getAttributesForSelectedVariant","productSpecificationData","isAccrodion","displayStyle","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","_createDrawerBody","_createTableBody","content","_renderProductCell","OmniChannelMedia","_createAdditionalMediaDrawer","_this$props$context$r2","drawers","_product$Name","Drawer","timeout","openGlyph","closeGlyph","glyphPlacement","additionalDownloadsText","prevState","additionalMediaLocations","mediaLocation","download","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","FloatValue","TextValue","trueValueText","falseValueText","rowdata","isNullOrUndefined","SitePicker","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","viewport","_document","_document2","body","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","isMobileView","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","preventDefault","cookies","isConsentGiven","cookieConfig","maxAge","defaultImageSettings","xl","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","siteRedirectUrl","siteName","_renderSitePicker","_renderSiteOptionsList","options","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","SocialShare","socialShareItems","viewprops","SocialShareList","caption","orientation","SocialShareItem","SocialShareItemElements","SocialShareView","SocialShareElement","BusinessFormItemComponent","renderModal","BusinessUserFormComponent","BusinessUserDetailsComponent","buttonList","headingForEmptyUserOrganizationList","textForEmptyUserOrganizationList","getForm","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","_props$context$app$co2","_props$config$thumbna2","fallbackImage","emptyPlaceHolderImage","placeholderImageName","getFallbackImageUrl","ItemId","thumbnailImageSettings","imageFallbackOptimize","skipImageValidation","fallBackSrc","defaultThumbnailImageSettings","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","imageId","modifiedActiveIndex","_props$context$app$co","_props$config$thumbna","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","Enter","onKeyDown","shouldUseOptimizedImage","bypassHideOnFailure","fullScreenTitleText","CarouselProps","MediaGallery","buildReviewCard","isUserReview","cardProps","headerProps","rating","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","wasReviewHelpfulText","like","dislike","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","renderProductImage","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","isFilterApplied","review","reviewModal","modalHeader","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","submitButton","cancelButton","createReviewModal","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton"],"sourceRoot":""}
\n {/* eslint-disable-next-line react/no-danger */}\n \n {cellData}