{"version":3,"file":"static/js/9.7e51e214cad904d19cd5.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/toysrus/views/buybox.view.tsx?316f","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-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/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","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/fabrikam/views/cart.view.tsx?ac8f","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.tsx?074a","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.view.tsx?c5af","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.tsx?6111","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.view.tsx?5db9","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.tsx?6583","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.view.tsx?7490","webpack://Msdyn365.Commerce.Online/./src/modules/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/adventureworks/views/business-organization-list.view.tsx?e6ec","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/checkout-customer-account-payment.view.tsx?0efc","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\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxData,\r\n IBuyboxFindInStoreViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxProps,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxResources as IBuyboxExtentionResources } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport * as React from 'react';\r\n\r\nconst BuyboxView: React.FC> = props => {\r\n const {\r\n ModuleProps,\r\n MediaGalleryContainerProps,\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToOrderTemplate,\r\n addToWishlist,\r\n telemetryContent,\r\n configure,\r\n description,\r\n findInStore,\r\n quantity,\r\n price,\r\n title,\r\n rating,\r\n callbacks,\r\n state,\r\n resources,\r\n inventoryLabel,\r\n shopSimilarLook,\r\n keyInPrice,\r\n quantityLimitsMessages,\r\n max,\r\n shopSimilarDescription,\r\n unitOfMeasure,\r\n ...otherProps\r\n } = props;\r\n\r\n React.useEffect(()=>{\r\n _loadTamaraRenderScript();\r\n _loadTabbyRenderScript(otherProps.data?.productPrice?.result?.CustomerContextualPrice, otherProps.context.request?.locale);\r\n }, [price]);\r\n\r\n const [findInStoreOpened, setFindInStoreOpened] = React.useState(false);\r\n\r\n //Need this to refresh pick up stores after dimension update\r\n React.useEffect(()=>{\r\n try {\r\n const missingDimensions =\r\n otherProps.data.product.result?.Dimensions &&\r\n otherProps.data.product.result?.Dimensions.filter((dimension: any) => !(dimension.DimensionValue && dimension.DimensionValue.Value));\r\n\r\n if ( !missingDimensions || missingDimensions.length === 0 ) {\r\n if (findInStoreOpened) {\r\n otherProps.data.storeSelectorStateManager.result?.closeDialog();\r\n setFindInStoreOpened(false);\r\n }\r\n findInStore && findInStore.openFindInStoreDialog();\r\n setFindInStoreOpened(true);\r\n }\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n }\r\n }, [props, otherProps.data.product.result?.Dimensions]);\r\n \r\n\r\n return (\r\n \r\n \r\n {props.mediaGallery}\r\n \r\n \r\n {title}\r\n {price}\r\n {_renderTextBlock(props.slots.textBlocks)}\r\n {unitOfMeasure}\r\n {description}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\r\n {inventoryLabel}\r\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\r\n {_renderTamaraBlock(otherProps.data.productPrice.result?.CustomerContextualPrice, otherProps.context.request.locale)}\r\n {_renderTabbyBlock()}\r\n {findInStore && _renderFindInStore(findInStore)}\r\n {_renderSocialShare(props.slots && props.slots?.socialShare)}\r\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderTamaraBlock = (price?: number, locale?: string): JSX.Element | undefined => {\r\n if (price && price > 100) {\r\n let lang = locale?.startsWith(\"ar\") ? 'ar' : 'en';\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n return undefined;\r\n};\r\n\r\nconst _renderTabbyBlock = (): JSX.Element | undefined => {\r\n return (\r\n
\r\n );\r\n};\r\n\r\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!textBlocks || textBlocks.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {textBlocks[0]}\r\n \r\n );\r\n};\r\n\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n};\r\n\r\nconst _renderCartAndActions = (\r\n addToCart?: IBuyboxAddToCartViewProps,\r\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\r\n addToWishlist?: IBuyboxAddToWishlistViewProps): JSX.Element | undefined => {\r\n if (!addToCart && !addToWishlist) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n
\r\n {addToCart && addToCart.errorBlock}\r\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\r\n {addToWishlist && addToWishlist.errorBlock}\r\n
\r\n {addToCart && addToCart.button}\r\n {addToOrderTemplate && addToOrderTemplate.button}\r\n {addToWishlist && addToWishlist.button}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\r\n const { ContainerProps, storeSelector, /*heading, description,*/ errors, /*button,*/ modal, productPickupOptionList } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {/*heading*/}\r\n {productPickupOptionList}\r\n {/*description*/}\r\n {errors}\r\n {/*button*/}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * On Change function.\r\n * @param callbacks -Callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n};\r\n\r\nconst _renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IBuyboxProps,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxExtentionResources,\r\n quantityLimitsMessages: React.ReactNode,\r\n max: number | undefined,\r\n telemetryContent?: ITelemetryContent): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const {\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n quantity\r\n } = state;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n\r\n return (\r\n \r\n {errors}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _loadTabbyRenderScript = (price?: number, locale?: string): void => {\r\n const tabbyLoadScriptId = 'tabby-load-script';\r\n let lang = locale?.startsWith(\"ar\") ? 'ar' : 'en';\r\n const tabbyLoadScript = document.getElementById(tabbyLoadScriptId);\r\n if (!tabbyLoadScript) {\r\n loadScript('https://checkout.tabby.ai/tabby-promo.js', tabbyLoadScriptId);\r\n var intervalId = setInterval(() => {\r\n //@ts-ignore\r\n const tabbyPromo = window && window.TabbyPromo;\r\n if (tabbyPromo) {\r\n new tabbyPromo({\r\n selector: '#tabby-product-widget',\r\n lang: lang, // 'ar'\r\n currency: 'SAR', // 'SAR, AED, KWD, BHD'\r\n price: price,\r\n installmentsCount: 4,\r\n source: 'product'\r\n });\r\n clearInterval(intervalId)\r\n }\r\n }, 500)\r\n }\r\n};\r\n\r\nconst _loadTamaraRenderScript = (): void => {\r\n const tamaraLoadScriptId = 'tamara-load-script';\r\n const tamaraLoadScript = document.getElementById(tamaraLoadScriptId);\r\n if (!tamaraLoadScript) {\r\n loadScript('https://cdn.tamara.co/widget/product-widget.min.js', tamaraLoadScriptId);\r\n var intervalId = setInterval(() => {\r\n //@ts-ignore\r\n const tamaraProductWidget = window && window.TamaraProductWidget;\r\n if (tamaraProductWidget) {\r\n tamaraProductWidget.init({ lang: 'en' })\r\n tamaraProductWidget.render()\r\n clearInterval(intervalId)\r\n }\r\n }, 500)\r\n }\r\n};\r\n\r\nconst loadScript = (src: any, id: string): void => {\r\n if(!document.getElementById(id)){\r\n const tag = document.createElement('script');\r\n tag.async = false;\r\n tag.src = src;\r\n tag.id = id;\r\n const body = document.getElementsByTagName('body')[0];\r\n body.appendChild(tag);\r\n }\r\n} \r\n\r\nexport default BuyboxView;\r\n\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 React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

{description}

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

{description}

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

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-order-templates-tile.props.autogenerated';\n\nexport interface IAccountOrderTemplatesTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrderTemplatesTileLinks: React.FC = ({\n links,\n onTextChange,\n telemetryContent,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-order-templates-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileData } from './account-order-templates-tile.data';\nimport { IAccountOrderTemplatesTileProps } from './account-order-templates-tile.props.autogenerated';\nimport { AccountOrderTemplatesTileDescription, AccountOrderTemplatesTileLinks } from './components';\n\nexport interface IAccountOrderTemplatesTileViewProps extends IAccountOrderTemplatesTileProps {\n AccountOrderTemplatesTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountOrderTemplatesTile component.\n * @extends {React.PureComponent>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountOrderTemplatesTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature'\n );\n if (\n !this.props.context.request.params.isEditor &&\n (!RetailB2BEcommerceFeatureState?.IsEnabled || !this.props.data.customerInformation.result?.IsB2b)\n ) {\n return <>;\n }\n\n const { className, heading, links } = config;\n const { accountOrderTemplatesTileDescription } = resources;\n const orderTemplates = data.orderTemplates;\n\n const orderTemplatesCount = (orderTemplates?.result || []).length;\n const description = format(accountOrderTemplatesTileDescription, orderTemplatesCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountOrderTemplatesTile: {\n moduleProps: this.props,\n className: classnames('ms-account-order-templates-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountOrderTemplatesTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileViewProps } from './account-order-templates-tile';\n\nconst AccountOrderTemplatesTileView: React.FC = props => {\n const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountOrderTemplatesTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from '../account-profile.data';\nimport { IAccountProfileProps } from '../account-profile.props.autogenerated';\nimport TextComponent from './account-profile-text';\n\ninterface IAttributePropertiesType {\n Name?: string;\n IsMandatory?: boolean;\n}\n\nexport interface IAccountProfileAttributesProps {\n accountProfileProps: IAccountProfileProps;\n}\n\nexport enum AccountAttributeDataTypeValue {\n Decimal = 3,\n Integer = 4,\n Text = 5,\n TrueFalse = 6\n}\n\nexport interface IAttributePayloadData {\n recordId?: number;\n name?: string;\n dataTypeValue?: number;\n isEnumeration?: boolean;\n lowerBoundValue?: number;\n upperBoundValue?: number;\n decimalValue?: number;\n integerValue?: number;\n textValue?: string;\n booleanValue?: boolean;\n isMandatory?: boolean;\n defaultValue?: string;\n}\n\nexport interface IAccountProfileAttributesState extends React.ComponentState {\n editAttributes: boolean;\n phone: string;\n vatNumber: string;\n attributes: IDictionary;\n attributeError: IDictionary;\n}\n\n/**\n *\n * AccountProfileAttributes class.\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\n */\n@observer\nclass AccountProfileAttributes extends React.Component {\n private readonly attributePayloadData: IAttributePayloadData[];\n\n @observable private isUpdatingAttributes: boolean = false;\n\n @observable private gotException: boolean = false;\n\n private hasError: boolean = false;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private initialAttributes: IDictionary;\n\n private initialCustomerAttributes?: CustomerAttribute[];\n\n private initialPhone: string;\n\n private initialVatNumber: string;\n\n private readonly payLoad: IPayLoad;\n\n private readonly editRef: React.RefObject;\n\n private readonly attributesContainerRef: React.RefObject;\n\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\n\n private readonly maxIntegerLimit: number = 2_100_000_000;\n\n private readonly minIntegerLimit: number = -2_100_000_000;\n\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\n\n private readonly minDecimalLimit: number = -7_900_000_000_000;\n\n private readonly maxStringLength: number = 1000;\n\n private readonly maxVATNumberLength: number = 20;\n\n private readonly maxPhoneLength: number = 25;\n\n 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 { updateCustomerPersonalization, updateCustomerPersonalizationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from './account-profile.data';\nimport {\n IAccountProfileProps,\n IEmailAddressSectionHeadingData,\n IHeadingData,\n INameSectionHeadingData\n} from './account-profile.props.autogenerated';\nimport AccountProfileAttributes from './components/account-profile-attributes';\nimport DescriptionComponent from './components/account-profile-description';\nimport LinksComponent, { ILinksData } from './components/account-profile-links';\nimport TextComponent from './components/account-profile-text';\n\nexport interface IAccountPreference {\n accountPreference: INodeProps;\n heading: React.ReactNode;\n buttonWrapper: INodeProps;\n buttonYesText: React.ReactNode;\n buttonNoText: React.ReactNode;\n button: React.ReactNode;\n description: React.ReactNode;\n onUpdateAccountPreference(preferenceType?: string): void;\n}\n\nexport interface IAccountPreferences {\n accountPreferences: INodeProps;\n heading?: React.ReactNode;\n personalization: IAccountPreference;\n extraPreferences?: IAccountPreference[];\n}\n\nexport interface IAccountProfileItem {\n AccountProfileItem: INodeProps;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\nexport interface IAccountCustomerAttributes {\n customerAttributes?: React.ReactNode;\n}\n\nexport interface IAccountProfileViewProps extends IAccountProfileProps {\n AccountProfile: IModuleProps;\n accountProfileWrapper?: INodeProps;\n className: string;\n heading?: React.ReactNode;\n emailSection: IAccountProfileItem;\n nameSection: IAccountProfileItem;\n preferenceSection: IAccountPreferences;\n customerAttributesWrapper?: INodeProps;\n customerAttributesSection?: IAccountCustomerAttributes;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * AccountProfile component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfile extends React.Component> {\n @observable private isUpdatingPreference: boolean = false;\n\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 `${customerInformation && customerInformation.FirstName} ${customerInformation && customerInformation.LastName}`,\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 _renderEmailSection(\n className: string,\n heading?: IEmailAddressSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private _renderNameSection(\n className: string,\n heading?: INameSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private readonly onClickEventHandler = (className: string) => async () => {\n return this._updateAccountPersonalization(className);\n };\n\n private _renderPreferenceSection(\n className: string,\n invalidAsyncCustomerState: boolean,\n customerInformation?: Customer\n ): IAccountPreferences | null {\n const {\n personalizationDescription,\n personalizationEnableButtonAriaLabel,\n webTrackingDescription,\n webTrackingEnableButtonAriaLabel\n } = this.props.resources;\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\n const { enableDataAnalytics } = this.props.context.request.features;\n const extraPreferences: IAccountPreference[] = [];\n\n if (!customerInformation) {\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\n return null;\n }\n\n // Show browser activity login preference if switch is enabled AND a heading is provided\n enableDataAnalytics &&\n webTrackingSectionHeading &&\n extraPreferences.push(\n this._renderPreference(\n 'web-tracking',\n webTrackingSectionHeading as IHeadingData,\n webTrackingEnableButtonAriaLabel,\n webTrackingDescription,\n customerInformation.OptOutWebActivityTracking || false,\n invalidAsyncCustomerState\n )\n );\n\n return {\n accountPreferences: {\n className\n },\n heading: preferencesSectionHeading && (\n \n ),\n personalization: this._renderPreference(\n 'personalization',\n personalizationSectionHeading as IHeadingData,\n personalizationEnableButtonAriaLabel,\n personalizationDescription,\n customerInformation.OptOutPersonalization || false,\n invalidAsyncCustomerState\n ),\n extraPreferences: extraPreferences || undefined\n };\n }\n\n private readonly _renderPreference = (\n className: string,\n sectionHeading: IHeadingData,\n enableAriaLabel: string,\n description: string,\n isOptOut: boolean,\n disableBtn: boolean\n ) => {\n const { toggleDisableText, toggleEnableText } = this.props.resources;\n const toggleState = isOptOut ? 'disable' : 'enable';\n const onClickHandler = this.onClickEventHandler(className);\n this.payLoad.contentAction.etext = sectionHeading.text;\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n return {\n accountPreference: {\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\n })\n },\n heading: sectionHeading && (\n \n ),\n buttonWrapper: {\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\n // Disable the toggle completely if customer is async.\n 'ms-account-profile__toggle-disabled': disableBtn\n })\n },\n buttonYesText: ,\n buttonNoText: ,\n button: (\n \n ),\n description: ,\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\n };\n };\n\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\n const customerInformation = this.props.data.customerInformation.result;\n\n if (customerInformation) {\n const {\n telemetry,\n context: { request, actionContext }\n } = this.props;\n\n let isOptOutPersonalization = false;\n let input;\n\n switch (preferenceType) {\n case 'web-tracking':\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n break;\n case undefined:\n case 'personalization':\n default:\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n }\n\n this.isUpdatingPreference = true;\n\n try {\n await updateCustomerPersonalization(input, actionContext);\n } catch (error) {\n if (telemetry) {\n telemetry.exception(error);\n telemetry.debug('Unable to update customer personalization');\n }\n }\n\n this.isUpdatingPreference = false;\n }\n };\n\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\n return ;\n };\n}\n\nexport default AccountProfile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps } from './account-profile';\n\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\n return (\n \n {heading}\n \n {extraPreferences &&\n extraPreferences.map((preferenceSecton, index) => {\n return ;\n })}\n \n );\n};\n\nconst AccountPreferenceSection: React.FC = ({\n accountPreference,\n heading,\n description,\n buttonWrapper,\n buttonYesText,\n button,\n buttonNoText\n}) => {\n return (\n \n {heading}\n {description}\n \n {buttonNoText}\n {button}\n {buttonYesText}\n \n \n );\n};\n\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nconst AccountProfileView: React.FC = props => {\n const {\n AccountProfile,\n infoMessageBar,\n accountProfileWrapper,\n heading,\n emailSection,\n nameSection,\n preferenceSection,\n customerAttributesWrapper,\n customerAttributesSection\n } = props;\n\n return (\n \n {infoMessageBar}\n {accountProfileWrapper && (\n \n {heading}\n \n \n \n \n )}\n {customerAttributesWrapper && {customerAttributesSection}}\n \n );\n};\n\nexport default AccountProfileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountProfileDescription {\n className: string;\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\n

{description}

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

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\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 handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\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 { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\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 MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

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

{props.resources.emptyCartText}

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

\n

{groupTitle}

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

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

\n ) : null}\n

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

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.PureComponent> {\n @observable public map: Microsoft.Maps.Map | undefined;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n this._initMap();\n this._updateMap();\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\n });\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\n }, 500);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n
\n \n \n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n\n productSpecificationResult: isAccrodion\n ? productSpecificationData && this._createDrawerBody(data)\n : productSpecificationData && this._createTableBody(data)\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n return content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n \n );\n });\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n return content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport 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 {\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n}) => (\n \n <>\n {label}\n {paymentAmountInput}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\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":["_renderTamaraBlock","price","locale","lang","startsWith","React","className","_renderTabbyBlock","id","_renderTextBlock","textBlocks","length","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","Node","Object","assign","map","_renderConfigureDropdown","dropdown","LabelContainerProps","heading","errors","select","_renderFindInStore","findInStore","storeSelector","modal","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","props","state","extentionResources","quantityLimitsMessages","max","telemetryContent","resources","quantity","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarItem","shopSimilarItem","_loadTabbyRenderScript","tabbyLoadScriptId","document","getElementById","loadScript","intervalId","setInterval","tabbyPromo","window","TabbyPromo","selector","currency","installmentsCount","source","clearInterval","_loadTamaraRenderScript","tamaraLoadScriptId","tamaraProductWidget","TamaraProductWidget","init","render","src","tag","createElement","async","getElementsByTagName","appendChild","_otherProps$data$prod5","_otherProps$data$prod6","_props$slots","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","description","title","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","otherProps","_objectWithoutProperties","_excluded","_otherProps$data","_otherProps$data$prod","_otherProps$data$prod2","_otherProps$context$r","data","productPrice","result","CustomerContextualPrice","context","request","findInStoreOpened","setFindInStoreOpened","_otherProps$data$prod3","_otherProps$data$prod4","missingDimensions","product","Dimensions","filter","dimension","DimensionValue","Value","_otherProps$data$stor","storeSelectorStateManager","closeDialog","openFindInStoreDialog","ex","console","log","Module","mediaGallery","slots","AccordionItem","constructor","super","moduleClassName","handleHeadingChange","event","this","config","accordionItemTitle","target","value","_onToggle","bind","getTelemetryObject","telemetryPageName","friendlyName","telemetry","shouldComponentUpdate","nextProps","renderView","accordionExpandedStateResult","accordionExpandedState","expanded","undefined","isAllExpanded","isExpandedOnInitialLoad","_objectSpread","AccordionItemContainer","moduleProps","classnames","AccordionItemContent","drawer","ControlledDrawer","toggleButtonText","collapseProps","isOpen","onToggle","onTextChange","requestContext","accordionSlots","interactionStyle","accordionState","actionContext","update","createAccordionStateInput","__decorate","observer","_renderAccordionItemContent","items","item","index","key","accordionItemContent","Accordion","expandAllButtonRef","collapseAllButtonRef","text","_onExpandAll","_onCollapseAll","payLoad","getPayloadObject","isDisabled","headingComponent","Msdyn365","editProps","onEdit","accordionViewProps","AccordionContainer","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","_getAccordionItem","contentAction","etext","TelemetryConstant","ExpandAll","attributeExpandAll","getTelemetryAttributes","CollapseAll","attributeCollapseAll","showToggleAll","disabled","expandAllText","onClick","ref","toggleAllSeparator","collapseAllText","error","setState","setTimeout","_this$collapseAllButt","current","focus","_this$expandAllButton","AccountAddressTile","handleLinkTextChange","linkIndex","links","linkText","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","format","viewProps","LinksComponent","DescriptionComponent","_ref","_mapEditableLinks","linkdata","editableLinks","forEach","link","attributes","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","push","AccountInvoiceTileDescription","AccountInvoiceTile","_data$customerBalance","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","toFixed","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","url","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","_this$props$data$feat","_this$props$data$cust","RetailB2BEcommerceFeatureState","featureState","find","Name","params","isEditor","IsEnabled","customerInformation","IsB2b","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountProfileEdit","onTextBoxChange","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","_isInitializationSuccessful","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","componentDidMount","componentDidUpdate","nextState","viewState","isShowLoading","accountProfileEdit","loading","Modal","modalBody","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","e","innerHTML","childNodes","nodeValue","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","AccountProfileEditInputComponent","observable","AccountProfileEditItem","AccountProfileEditLoading","_ref3","_ref2","LocalAccount","Button","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","htmlFor","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_data$featureState$re","_data$featureState$re2","_this$props$accountPr","_this$props$accountPr2","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","attribute","IsHidden","toLocaleLowerCase","RecordId","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","feature","disableBtn","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","attributesContainerRef","Text","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","innerRef","editRef","_saveAttributes","_disableAttributes","phoneSectionHeading","replace","_onPhoneChange","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","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","name","isMandatory","MsDyn365","isBrowser","getElementsByClassName","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","customer","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VATNumber","VatNumber","updateCustomerAttributesInput","AccountNumber","apiSettings","updateCustomerAttributes","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","reaction","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","buttonWrapper","buttonYesText","buttonNoText","toString","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","_this$props$context$a","_this$props$context$a2","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","get","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","FirstName","LastName","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","AccountProfileItem","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","computed","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountWelcomeTile","accountInfo","accountInformation","AccountWishlistTile","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","issueLoyalty","then","location","catch","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","hasLoyaltyAccount","CardTenderTypeValue","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","PasswordReset","newPasswordRegex","reenterPasswordRegex","PasswordRegex","passwordReset","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","passwordResetLocalAccount","newPasswordLabelText","confirmPasswordLabelText","PasswordResetErrorComponent","passwordEntryMismatchError","PasswordResetButtonComponent","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","successClassName","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","_ref6","_ref5","FormType","InputType","InputID","renderInputSection","inputs","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","B2BUserId","Random","Guid","generateGuid","isFormActive","formType","Add","referenceBack","addUserButtonReference","isModalOpen","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","reload","trace","addOrganizationUser","AddOrganizationUserInput","businessUserActionRetailErrorMsg","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","substring","lastName","possibleCell","dataCell","_handleDeleteIcon","displayedUserData","TableDataType","Price","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","isReady","_isFormReady","formItem","match","_formatPrice","_getCurrentUrl","reqContext","URL","requestUrl","_getViewport","device","Type","innerWidth","gridSettings","xs","w","sm","md","lg","_toggleStatementRequestDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_showRequestStatementModal","isFullOrg","statementRequestFullOrg","isStatementRequestModalOpen","_requestStatement","currentUser","users","_getB2BUserId","statementRequest","FromDate","Date","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","callerContext","BusinessPartnerUsersDataActions","_closeStatementRequestModal","_this$statementReques","statementRequestButtonReference","_onSelectRow","records","selectedRow","rowProps","isSelected","row","_toggleModal","mobileExcludedColumns","Status","_viewport","_updateViewport","submitButtonReference","addedReference","statementRequestMaxDateString","toISOString","businessUserSelectedUserDisplayName","addEventListener","componentWillUnmount","removeEventListener","_this$formChildRefere","_this$submitButtonRef","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","userAccountStatementLabel","fullOrganizationLabel","requestStatementButtonLabel","statementRequestModalHeaderLabel","cancelLabel","fromDateLabel","toDateLabel","submitRequestLabel","sendToEmailLabel","selectedUserLabel","hasUsers","AddUser","addUserAttributes","errorProps","OrganizationUserList","moduleContainer","Heading","headingTag","addUserButton","noUsersText","modalState","organizationListTable","Table","_createTableProps","toggleModal","form","_renderUserForm","_renderUserDetails","requestAccountStatementButton","AdminRequestStatementButton","buttonReference","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","requestStatementModal","RequestStatementModal","toggle","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","modalHeaderLabel","onSubmitRequest","selectedUser","selectedUserName","modalAriaLabel","maxDateString","tableSort","showPagination","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserActionButtonText","businessUserPaginationAriaLabel","columnSortAriaLabel","tableData","_createTableItems","headings","ArrayExtensions","hasElements","isMobile","sortable","rows","editLinkText","deleteLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","enableToModify","actionLinkText","showCheckBoxes","isSortable","resourcePrefix","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","nextText","paginationText","isSingleSelectOnly","tableAriaLabel","tableTabIndex","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","actions","onDelete","onView","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","StatusValue","FullName","buttonReferences","delete","_this$state$reference","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","modalClassName","FormWrapper","modalHeading","modalDescription","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","FormButton","BusinessFormItem","BusinessUserForm","modalFooter","_renderModal","BusinessUserDetails","userFullName","headingSection","bodySection","footerSection","wrapClassName","autoFocus","fade","applicationNode","ModalHeader","ModalFooter","ButtonList","_getForm","formProps","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","getUrlSync","fullUrl","searchParams","set","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","image","firstOrDefault","Images","tabIndex","Image","generateImageUrl","Uri","imageSettings","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","PickupInStore","puckUpinStoreAttribute","orgUnitName","_renderErrorBlock","errorData","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","groupTitle","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","_props$context$action","_props$cart","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","cart","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","BackTopFooter","backtoTopText","destination","BackToTop","FooterItem","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","Link","onTelemetryClick","ariaHiddenAttr","viewports","q","h","lazyload","shouldSkipToMainImage","FooterItemView","_renderElement","Map","mapRef","_initMap","isMapApiLoaded","Microsoft","Maps","credentials","BingMapsApiKey","pushpinAccessible","Events","addHandler","setSelectedStoreLocationId","_updateMap","_this$props$data$stor","_storeSelectorStateMa","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","options","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","currentLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","orgUnitNumber","showIndex","size","color","selectionColor","_getSvgIcon","_this$props$data$stor2","BingMapsEnabled","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","_this$props$data$stor6","_this$props$context","_this$props$context$a3","market","ChannelCountryRegionISOCode","_this$props$data$stor7","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$stor10","shouldDisplayMap","listMapViewState","displayMap","show","Header","headerProps","MapProps","MapHeader","ProductSpecificationTableRow","productName","cellData","scope","dangerouslySetInnerHTML","getRichTextHtml","ProductSpecification","_toggle","drawerListId","isDrawerOpen","actionInput","AttributesForSelectedVariantInput","channelId","getAttributesForSelectedVariant","productSpecificationData","isAccrodion","displayStyle","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","_createDrawerBody","_createTableBody","content","_renderProductCell","_product$Name","Drawer","timeout","openGlyph","closeGlyph","glyphPlacement","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","FloatValue","TextValue","trueValueText","falseValueText","rowdata","ObjectExtensions","isNullOrUndefined","SitePicker","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","_this$_sitePickerMenu3","_this$_sitePickerMenu4","nextFocus","activeElement","_this$_sitePickerMenu5","_this$_sitePickerMenu6","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu7","_this$_sitePickerMenu8","_this$_sitePickerMenu9","_this$_sitePickerMenu10","_handleOutsideClick","_this$_sitePickerMenu11","_this$_sitePickerMenu12","_handleChange","_renderSiteOptions","viewport","_document","_document2","_document2$body","body","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","_document4$body","_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","imageProps","siteRedirectUrl","siteName","_renderSitePicker","_renderSiteOptionsList","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","BusinessFormItemComponent","renderModal","BusinessUserFormComponent","BusinessUserDetailsComponent","buttonList","headingForEmptyUserOrganizationList","textForEmptyUserOrganizationList","getForm","SummaryForm","addPaymentButton","appliedLine","bottomBorder","paymentAmountInput","EditForm","inputLabel","inputAmount","customerName","customerAccountNumber","customerSince","accountCredit","alert","accountDetails","checkoutCustomerAccount","checkoutErrorRef","summaryView","editView","moduleState","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","date","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}