{"version":3,"file":"static/js/14.210af8762569bd448159.chunk.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./src/Utilities/commerce-attributes-parser.tsx?c1f4","webpack://msdyn365.commerce.online/./src/Utilities/subscription-manager.tsx?41e4","webpack://msdyn365.commerce.online/./src/common/subscription-commerce.values.tsx?8244","webpack://msdyn365.commerce.online/./src/modules/pdp-attributes/pdp-attributes.tsx?fbfe","webpack://msdyn365.commerce.online/./src/modules/product-attributes/product-attributes.tsx?cd38","webpack://msdyn365.commerce.online/./src/modules/product-data-entry/product-data-entry.tsx?596b","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/components/smwe-sign-up-button.tsx?f383","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/components/smwe-sign-up-error.tsx?613f","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/components/smwe-sign-up-input.tsx?7061","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/components/smwe-sign-up-label.tsx?14dd","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/components/smwe-sign-up-loading-icon.tsx?49a5","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/components/smwe-sign-up-loading-message.tsx?11e3","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/components/smwe-sign-up-success.tsx?cf38","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/smwe-sign-up.tsx?03c8","webpack://msdyn365.commerce.online/./src/modules/smwe-sign-up/smwe-sign-up.view.tsx?4ebc","webpack://msdyn365.commerce.online/./src/modules/subscription-restriction-button/components/links.tsx?b119","webpack://msdyn365.commerce.online/./src/modules/subscription-restriction-button/subscription-restriction-button.tsx?bff6","webpack://msdyn365.commerce.online/./src/modules/subscription-restriction-button/subscription-restriction-button.view.tsx?196f","webpack://msdyn365.commerce.online/./src/themes/blend/views/smwe-sign-up.view.tsx?bbe3","webpack://msdyn365.commerce.online/./src/themes/elicit/views/smwe-sign-up.view.tsx?6a17","webpack://msdyn365.commerce.online/./src/themes/fth/views/smwe-sign-up.view.tsx?490d","webpack://msdyn365.commerce.online/./src/themes/stemichelle-new/views/smwe-sign-up.view.tsx?c6bb","webpack://msdyn365.commerce.online/./src/themes/wine-estates/views/smwe-sign-up.view.tsx?e3e5","webpack://msdyn365.commerce.online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://msdyn365.commerce.online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://msdyn365.commerce.online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://msdyn365.commerce.online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://msdyn365.commerce.online/./src/modules/account-generic-tile/account-generic-tile.tsx?4353","webpack://msdyn365.commerce.online/./src/modules/account-generic-tile/account-generic-tile.view.tsx?4b58","webpack://msdyn365.commerce.online/./src/modules/account-generic-tile/components/account-generic-tile-links.tsx?2bc7","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/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/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-tile/components/account-b2b-requests-tile-links.tsx?d6f5","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-tile/b2b-requests-tile.tsx?9498","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-tile/b2b-requests-tile.view.tsx?3f4e","webpack://msdyn365.commerce.online/./src/modules/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/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://msdyn365.commerce.online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://msdyn365.commerce.online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://msdyn365.commerce.online/./src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?3b33","webpack://msdyn365.commerce.online/./src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?f1c7","webpack://msdyn365.commerce.online/./src/modules/organization-users-tile/organization-users-tile.tsx?f5de","webpack://msdyn365.commerce.online/./src/modules/organization-users-tile/organization-users-tile.view.tsx?bac2","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-button.tsx?c1c2","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-error.tsx?347f","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-input.tsx?fd25","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-label.tsx?aab5","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-loading-icon.tsx?d70e","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-loading-message.tsx?d239","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-success.tsx?3c81","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/password-reset-verification.tsx?691f","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/password-reset-verification.view.tsx?dffa","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-in/components/sign-in-button.tsx?8d59","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-description.tsx?54a5","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-error.tsx?a75a","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-input.tsx?d840","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-label.tsx?4560","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-link.tsx?2078","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-loading-icon.tsx?1d7f","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-loading-message.tsx?84ee","webpack://msdyn365.commerce.online/./src/modules/sign-in/components/sign-in-text.tsx?76b9","webpack://msdyn365.commerce.online/./src/modules/sign-in/sign-in.tsx?259c","webpack://msdyn365.commerce.online/./src/modules/sign-in/sign-in.view.tsx?2b3e","webpack://msdyn365.commerce.online/./src/modules/business-organization-list/components/small-components.tsx?c4b5","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/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/fabrikam/views/order-history.view.tsx?a21d","webpack://msdyn365.commerce.online/./src/modules/social-share/social-share.tsx?899b","webpack://msdyn365.commerce.online/./src/modules/social-share/social-share.view.tsx?dcdf"],"sourcesContent":["import { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n// importing enums have issues and this enum is not interfaced from CommerceTypes\r\nconst enum AttributeDataType {\r\n /**\r\n * The None member.\r\n */\r\n None = 0,\r\n /**\r\n * The Currency member.\r\n */\r\n Currency = 1,\r\n /**\r\n * The DateTime member.\r\n */\r\n DateTime = 2,\r\n /**\r\n * The Decimal member.\r\n */\r\n Decimal = 3,\r\n /**\r\n * The Integer member.\r\n */\r\n Integer = 4,\r\n /**\r\n * The Text member.\r\n */\r\n Text = 5,\r\n /**\r\n * The TrueFalse member.\r\n */\r\n TrueFalse = 6,\r\n /**\r\n * The Video member.\r\n */\r\n Video = 40,\r\n /**\r\n * The Image member.\r\n */\r\n Image = 41\r\n}\r\n\r\nconst AttributeDataTextMap = {\r\n 0: 'CURRENCY',\r\n 2: 'DATE',\r\n 3: 'NUMBER',\r\n 4: 'NUMBER',\r\n 5: 'STRING',\r\n 6: 'BOOLEAN'\r\n};\r\n\r\nexport type CommerceValueTypes = string | number | boolean | null;\r\n\r\nexport type ValueTypes = {\r\n value: T;\r\n type: DataType;\r\n};\r\nexport type DataType = 'CURRENCY' | 'DATE' | 'NUMBER' | 'STRING' | 'BOOLEAN';\r\n\r\nexport type ParsedValue = {\r\n name: string;\r\n value: T | null;\r\n type: DataType;\r\n};\r\n\r\ntype AttributeHash = { [name: string]: CommerceValueTypes };\r\n\r\n/**\r\n * Parses Commerce Datasets to make it easier to access data from Commerce\r\n * Objects\r\n *\r\n * **Bulk parsing method:**\r\n * ```\r\n * const fields = getMyFields.fromSomewhere(); // attributes[]\r\n * const parsedFields = CommerceAttributesParser(fields); // parse multiple attributes in bulk\r\n * console.log(parsedFields) // { [name: string]: ValueTypes }\r\n * ```\r\n *\r\n * **Using constructor method:**\r\n * ```\r\n * const fields = getMyFields.fromSomewhere(); // attributes[]\r\n * const commerceParser = new CommerceAttributesParser(fields); // parse multiple attributes\r\n * const isSoldOut\r\n * = commerceParser.get('soldOut') // returns { type: 'BOOLEAN', valueType: true }\r\n * console.log(isSoldOut);\r\n * ```\r\n *\r\n * **Using static method:**\r\n * ```\r\n * const soldOut = getMyFields.getField('soldOut');\r\n * // return type declaration is optional\r\n * const isSoldOut = CommerceAttributesParser.parse(soldOut); // parse single attribute\r\n * console.log(isSoldOut);\r\n * ```\r\n */\r\nexport default class CommerceAttributesParser {\r\n\r\n // type map from commerce number values to the properties found in the object\r\n private static _dataTypeMap: { [numType: number]: string } = {\r\n [AttributeDataType.Currency]: 'CurrencyCode',\r\n [AttributeDataType.Decimal]: 'IntegerValue', // this one is a guess\r\n [AttributeDataType.Integer]: 'IntegerValue',\r\n [AttributeDataType.Text]: 'TextValue',\r\n [AttributeDataType.TrueFalse]: 'BooleanValue',\r\n [AttributeDataType.DateTime]: 'DateTimeOffsetValue'\r\n };\r\n\r\n // raw array thats given when constructed\r\n private _attributes: AttributeValue[] = [];\r\n\r\n // map of attributes\r\n private _attributesMap: { [name: string]: AttributeValue } = {};\r\n\r\n /**\r\n * retrieve the correct piece of data from the object\r\n */\r\n public static parse(attribute: AttributeValue): ParsedValue | undefined {\r\n const parsedAttribute = CommerceAttributesParser._parseGetAttribute(attribute);\r\n if (!parsedAttribute) { return undefined; }\r\n return {\r\n name: attribute.Name!,\r\n ...parsedAttribute\r\n };\r\n }\r\n\r\n //----------------------------------------------------------\r\n // Convert an AttributeValue[] to a simple key:value hash\r\n //----------------------------------------------------------\r\n public static getParsedAttributes(attributes: AttributeValue[]): AttributeHash {\r\n const attributeValues = {};\r\n\r\n attributes.forEach(\r\n attr => attributeValues[attr.Name!] = CommerceAttributesParser._parseGetAttribute(attr)?.value\r\n );\r\n\r\n return attributeValues;\r\n }\r\n\r\n //----------------------------------------------------------\r\n // Convert a simplified attribute hash back to an unparsed\r\n // AttributeValue[]\r\n //----------------------------------------------------------\r\n public static unParseAttributes(hash: AttributeHash): AttributeValue[] {\r\n return Object.entries(hash).map(([name, value]) => ({\r\n Name: name,\r\n TextValue: value?.toString(),\r\n DataTypeValue: AttributeDataType.Text\r\n }));\r\n }\r\n\r\n private static _parseGetAttribute(attribute: AttributeValue): ValueTypes | null {\r\n const property = CommerceAttributesParser._dataTypeMap[attribute.DataTypeValue!];\r\n const value = attribute[property];\r\n const mappedTextValue = AttributeDataTextMap[attribute.DataTypeValue!];\r\n if (mappedTextValue) {\r\n return {\r\n value: value,\r\n type: mappedTextValue\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n constructor(attributes?: {\r\n attributeValues?: AttributeValue[];\r\n psuedoAttributeValues?: AttributeValue[];\r\n }) {\r\n if (attributes) {\r\n this._attributes = [\r\n ...(attributes?.attributeValues || []),\r\n ...(attributes?.psuedoAttributeValues || [])\r\n ];\r\n this._attributes.forEach(attribute => {\r\n if (attribute.Name) {\r\n this._attributesMap[attribute.Name] = attribute;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get a value from the collection of attributes given\r\n * @param name name of the attribute\r\n */\r\n public get(name: string): ParsedValue | undefined {\r\n const attribute = this._attributesMap[name];\r\n if (attribute) {\r\n const commerceAttr = CommerceAttributesParser._parseGetAttribute(attribute);\r\n if (!commerceAttr) { return undefined; }\r\n return {\r\n name: attribute.Name!,\r\n ...commerceAttr\r\n };\r\n }\r\n return undefined;\r\n }\r\n}","import { GetCheckoutCartInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { AsyncResult, AttributeValue, Cart, CartLine, CommerceProperty } from '@msdyn365-commerce/retail-proxy';\r\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { SubscriptionCommerceValues } from '../common/subscription-commerce.values';\r\n\r\nexport async function updateSubscription(cart: AsyncResult, commerceValues: CommerceProperty[], context: ICoreContext): Promise {\r\n const cartState = cart && cart.status === 'SUCCESS' && cart.result;\r\n if (\r\n !cartState ||\r\n !cartState.cart\r\n ) {\r\n context.telemetry.error('Failed to add subscription properties to Cart. Unable to load Cart');\r\n } else {\r\n commerceValues.forEach(newValue => { findAndUpdateLine(newValue, cartState.cart); });\r\n\r\n const updatedCart = await updateAsync({ callerContext: context.actionContext }, cartState.cart);\r\n context.actionContext.update(new GetCheckoutCartInput(context.request.apiSettings), updatedCart);\r\n\r\n await (await cart).refreshCart({});\r\n }\r\n}\r\n\r\nexport function isProductSubscribable(productAttributes?: AttributeValue[]): boolean {\r\n return !!productAttributes?.find(attr => attr.Name === SubscriptionCommerceValues.SUBSCRIPTION_PRODUCT)?.BooleanValue;\r\n}\r\n\r\nexport function getSubscriptionValues(cart?: Cart): { frequency: string | undefined; name: string | undefined } {\r\n const freq = cart?.ExtensionProperties?.find(ext => ext.Key === SubscriptionCommerceValues.SUBSCRIPTION_FREQUENCY);\r\n const name = cart?.ExtensionProperties?.find(ext => ext.Key === SubscriptionCommerceValues.SUBSCRIPTION_NAME);\r\n\r\n return { frequency: freq?.Value?.StringValue, name: name?.Value?.StringValue };\r\n}\r\n\r\nexport function isLineSubscriptionLine(line?: CartLine): boolean {\r\n return !!line?.ExtensionProperties?.find(ext => ext.Key === SubscriptionCommerceValues.SUBCRIPTION_LINE);\r\n}\r\n\r\ninterface ICategorizedLines {\r\n subscriptionLines: CartLine[];\r\n lines: CartLine[];\r\n}\r\nexport function filterCartLines(cart?: Cart): ICategorizedLines {\r\n const output: ICategorizedLines = {\r\n subscriptionLines: [],\r\n lines: [],\r\n };\r\n\r\n cart?.CartLines?.forEach(line => {\r\n const isSubscriptionLine = isLineSubscriptionLine(line);\r\n if (isSubscriptionLine) {\r\n output.subscriptionLines.push(line);\r\n } else {\r\n output.lines.push(line);\r\n }\r\n });\r\n\r\n return output;\r\n}\r\n\r\n/**\r\n * NOTE: WILL ONLY CLEAR TOP LEVEL NOT ITEMS\r\n */\r\nexport async function clearSubscription(cartState?: ICartState, context?: ICoreContext): Promise {\r\n if (!cartState || !context) { return; }\r\n\r\n const cart: Cart = cartState.cart;\r\n\r\n // add keys here to erase their string values\r\n const editObj = {\r\n [SubscriptionCommerceValues.SUBSCRIPTION_NAME]: true,\r\n [SubscriptionCommerceValues.SUBSCRIPTION_FREQUENCY]: true\r\n };\r\n\r\n // ensure extprops exists\r\n cart.ExtensionProperties = cart.ExtensionProperties || [];\r\n cart.ExtensionProperties.forEach(extension => {\r\n if (editObj[extension.Key!] && extension.Value) {\r\n extension.Value.StringValue = '';\r\n }\r\n });\r\n const updatedCart = await updateAsync({ callerContext: context.actionContext }, cart);\r\n context.actionContext.update(new GetCheckoutCartInput(context.request.apiSettings), updatedCart);\r\n}\r\n\r\n// im expecting to eventually turn this into a namespace class with a bunch of commerce attribute transformations\r\n// but its only one now so no point\r\nfunction findAndUpdateLine(changedProperty: CommerceProperty, cart: Cart): void {\r\n cart.ExtensionProperties = cart.ExtensionProperties || [];\r\n const property = cart.ExtensionProperties.find(extension => extension.Key === changedProperty.Key);\r\n if (property) {\r\n property.Value = changedProperty.Value;\r\n } else {\r\n cart.ExtensionProperties.push(changedProperty);\r\n }\r\n}\r\n","\r\n/**\r\n * internal subscription name values to be used\r\n *\r\n * authors should not be exposed to these values\r\n */\r\nexport enum SubscriptionCommerceValues {\r\n\r\n /**\r\n * commerce attribute name\r\n */\r\n SUBSCRIPTION_NAME = 'Subscription Name',\r\n\r\n /**\r\n * commerce attribute name\r\n */\r\n SUBSCRIPTION_FREQUENCY = 'Frequency',\r\n\r\n /**\r\n * commerce line attribute for identifying is subscription\r\n */\r\n SUBCRIPTION_LINE = 'IsSubscription',\r\n\r\n SUBSCRIPTION_PRODUCT = 'Add to Subscription',\r\n\r\n SUBSCRIPTION_DEFAULT_NAME = 'My Wine Box'\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\nimport CommerceAttributesParser, { CommerceValueTypes, ParsedValue } from '../../Utilities/commerce-attributes-parser';\r\nimport CallToAction from './../../components/call-to-action';\r\nimport { IPdpAttributesData } from './pdp-attributes.data';\r\nimport { IAttributesData, IPdpAttributesProps } from './pdp-attributes.props.autogenerated';\r\n\r\n/**\r\n * PdpAttributes class renders a preconfigured list of attributes related to the\r\n * currentproducts page.\r\n *\r\n * PdpAttributes component\r\n * @extends {React.Component>}\r\n */\r\nclass PdpAttributes extends React.Component> {\r\n private _parser: CommerceAttributesParser | undefined;\r\n private _attributesCollected: boolean = false;\r\n\r\n constructor(props: IPdpAttributesProps) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const simpleProductData = this.props.data.product.result;\r\n const productData: IPdpAttributesData = this.props.data;\r\n if (\r\n !(this.props.data.productSpecificationData && this.props.data.productSpecificationData.result) ||\r\n !(this.props.data.product && this.props.data.product.result)\r\n ) {\r\n return null;\r\n }\r\n\r\n if (!this._attributesCollected) {\r\n\r\n this._parser = new CommerceAttributesParser({\r\n attributeValues: productData.productSpecificationData.result,\r\n psuedoAttributeValues: this._getPsuedoSimpleAttributes(simpleProductData!)\r\n });\r\n }\r\n\r\n const attributes: [] = this._attributesListRender.props.children;\r\n if (attributes && attributes.every(element => element === null)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {this._attributesListRender}\r\n
\r\n );\r\n }\r\n\r\n private _getPsuedoSimpleAttributes(simpleProduct: SimpleProduct): AttributeValue[] {\r\n const attributeArray: AttributeValue[] = [];\r\n\r\n this.props.config.attributes.map((attr) => {\r\n if (simpleProduct[attr.attributeName]) {\r\n attributeArray.push({\r\n Name: attr.attributeName,\r\n DataTypeValue: 5, // everything should work fine as a string\r\n TextValue: simpleProduct[attr.attributeName]\r\n });\r\n }\r\n });\r\n\r\n return attributeArray;\r\n }\r\n\r\n /**\r\n * returns JSX of the lists render\r\n */\r\n private get _attributesListRender(): JSX.Element {\r\n return (\r\n \r\n {this.props.config.attributes.map((attr, pos) => {\r\n return \r\n {this._renderAttribute(attr, pos)}\r\n ;\r\n })}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * returns JSX of a specific attribute render\r\n *\r\n * @param cmsAttribute attribute configured by author\r\n * @param renderPosition position to use for styling\r\n */\r\n private _renderAttribute(cmsAttribute: IAttributesData, renderPosition: number): JSX.Element | null {\r\n const attribute = this._parseAttribute(cmsAttribute.attributeName);\r\n // if attribute doesn't exist, if attribute exists but has no value\r\n if (!attribute || !attribute.value) { return null; }\r\n\r\n switch (attribute.type) {\r\n case 'STRING':\r\n // tslint:disable-next-line:no-http-string\r\n if (attribute.value.toString().startsWith('https://' || 'http://')) {\r\n return this._urlRender(attribute as ParsedValue, cmsAttribute);\r\n }\r\n return this._plaintextRender(attribute as ParsedValue, cmsAttribute, true);\r\n case 'NUMBER':\r\n return this._plaintextRender(attribute as ParsedValue, cmsAttribute);\r\n case 'CURRENCY':\r\n return this._plaintextRender(attribute as ParsedValue, cmsAttribute);\r\n case 'DATE':\r\n return this._dateRender(attribute as ParsedValue, cmsAttribute);\r\n case 'BOOLEAN':\r\n return this._booleanRender(attribute as ParsedValue, cmsAttribute);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private _plaintextRender(text: ParsedValue, cmsAttribute: IAttributesData, richText: boolean = false): JSX.Element | null {\r\n const textDisplay = (richText)\r\n ? (\r\n \r\n ) : (\r\n {text.value}{cmsAttribute.suffixText || ''}\r\n );\r\n\r\n return this._renderCell(\r\n textDisplay,\r\n cmsAttribute\r\n );\r\n }\r\n\r\n private _dateRender(date: ParsedValue, cmsAttribute: IAttributesData): JSX.Element {\r\n return this._renderCell(\r\n {new Date(date.value!).toUTCString()}{cmsAttribute.suffixText},\r\n cmsAttribute\r\n );\r\n }\r\n\r\n private _booleanRender(bool: ParsedValue, cmsAttribute: IAttributesData): JSX.Element {\r\n const booleanDisplay = (bool.value) ? Yes : No;\r\n return this._renderCell(\r\n booleanDisplay,\r\n cmsAttribute\r\n );\r\n }\r\n\r\n private _urlRender(url: ParsedValue, cmsAttribute: IAttributesData): JSX.Element {\r\n return this._renderCell(\r\n \r\n \r\n ,\r\n cmsAttribute\r\n );\r\n }\r\n\r\n private _renderCell(cellBody: JSX.Element, cmsAttribute: IAttributesData): JSX.Element {\r\n let attributeName = cmsAttribute.attributeName;\r\n if (cmsAttribute.labelOverride) {\r\n attributeName = cmsAttribute.labelOverride;\r\n }\r\n return (\r\n
\r\n {!cmsAttribute.noLabel && {attributeName}}\r\n
\r\n {cellBody}\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Parses and returns the attribute value queried\r\n *\r\n * @param name name of the attribute to get\r\n */\r\n private _parseAttribute(name: string): ParsedValue | undefined {\r\n return this._parser!.get(name);\r\n }\r\n}\r\n\r\nexport default PdpAttributes;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\nimport CallToAction from './../../components/call-to-action';\r\nimport { IProductAttributesData } from './product-attributes.data';\r\nimport { IProductAttributesProps } from './product-attributes.props.autogenerated';\r\n\r\n/**\r\n *\r\n * ProductAttributes component\r\n * @extends {React.PureComponent>}\r\n */\r\n// @observer\r\nclass ProductAttributes extends React.PureComponent<\r\n IProductAttributesProps\r\n > {\r\n private _productAttributeFactSheetURL: string = 'FACT SHEET URL';\r\n private _productAttributeFactSheetHeader: string = 'DOWNLOAD FACTSHEET PDF';\r\n private _productAttributeTastingNotes: string = 'TASTING NOTES';\r\n private _productAttributeCookbookDescription: string = 'COOKBOOKDESCRIPTION';\r\n private _productAttributeCookbookDescriptionHeader: string = 'Description';\r\n private _productAttributeFoodPairings: string = 'FOOD PAIRINGS';\r\n private _productAttributeWineAnalysis: string = 'WINE ANALYSIS';\r\n private _productAttributeWineBlend: string = 'BLEND';\r\n private _productAttributeWineAging: string = 'AGING';\r\n private _productAttributeWineAlcohol: string = 'ALCOHOL';\r\n private _productAttributeWinePH: string = 'PH';\r\n private _productAttributeWineTA: string = 'TA';\r\n private _productAttributeWineF: string = 'F';\r\n\r\n public render(): JSX.Element | null {\r\n const content: IProductAttributesData = this.props.data;\r\n if (!(content && content.productSpecificationData && content.productSpecificationData.result)\r\n ) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {this._renderProductAttributes(\r\n content.productSpecificationData.result,\r\n this._productAttributeFactSheetURL\r\n )}\r\n {this._renderProductAttributes(\r\n content.productSpecificationData.result,\r\n this._productAttributeTastingNotes\r\n )}\r\n {this._renderProductAttributes(\r\n content.productSpecificationData.result,\r\n this._productAttributeCookbookDescription\r\n )}\r\n {this._renderProductAttributes(\r\n content.productSpecificationData.result,\r\n this._productAttributeFoodPairings\r\n )}\r\n {this._renderProductAttributes(\r\n content.productSpecificationData.result,\r\n this._productAttributeWineAnalysis\r\n )}\r\n
\r\n );\r\n }\r\n\r\n private _renderProductAttributes(\r\n product: AttributeValue[],\r\n filter: string\r\n ): JSX.Element | null {\r\n if (product && product.length) {\r\n const locale = get(this.props, 'context.request.locale', 'en-US');\r\n if (\r\n this._compareStrings(filter, this._productAttributeFactSheetURL, true, locale)\r\n ) {\r\n const productattribute = product.filter(\r\n attribute => attribute.Name!.toUpperCase() === filter.toUpperCase()\r\n );\r\n if (productattribute && productattribute.length && productattribute[0].TextValue) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n } else if (this._compareStrings(filter, this._productAttributeWineAnalysis, true, locale)) {\r\n if (this._renderWineAttributes(product, this._productAttributeWineBlend)\r\n || this._renderWineAttributes(product, this._productAttributeWineAging)\r\n || this._renderWineAttributes(product, this._productAttributeWineAlcohol)\r\n || this._renderWineAttributes(product, this._productAttributeWinePH)\r\n || this._renderWineAttributes(product, this._productAttributeWineTA)\r\n || this._renderWineAttributes(product, this._productAttributeWineF)) {\r\n return (\r\n
\r\n \r\n {this._renderWineAttributes(product, this._productAttributeWineBlend)}\r\n {this._renderWineAttributes(product, this._productAttributeWineAging)}\r\n {this._renderWineAttributes(product, this._productAttributeWineAlcohol, '%')}\r\n {this._renderWineAttributes(product, this._productAttributeWinePH)}\r\n {this._renderWineAttributes(product, this._productAttributeWineTA)}\r\n {this._renderWineAttributes(product, this._productAttributeWineF)}\r\n
\r\n );\r\n }\r\n } else {\r\n const productattribute = product.filter(\r\n attribute => attribute.Name!.toUpperCase() === filter.toUpperCase()\r\n );\r\n if (productattribute && productattribute.length && productattribute[0].TextValue) {\r\n const attributeHeading = (filter === this._productAttributeCookbookDescription ? this._productAttributeCookbookDescriptionHeader : productattribute[0].Name);\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _renderWineAttributes(\r\n product: AttributeValue[],\r\n filter: string,\r\n suffix?: string\r\n ): JSX.Element | null {\r\n const productattribute = product.filter(\r\n attribute => attribute.Name!.toLowerCase() === filter.toLowerCase()\r\n );\r\n if (productattribute && productattribute.length && productattribute[0].TextValue) {\r\n const attributeValue = this._renderProductCell(productattribute[0], suffix);\r\n const keyName = `${productattribute[0].Name}:`;\r\n if (attributeValue !== null) {\r\n return (\r\n
\r\n \r\n
{attributeValue}
\r\n
\r\n );\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _renderProductCell(product: AttributeValue, suffix?: string): JSX.Element | null {\r\n switch (product.DataTypeValue) {\r\n case 0: // none\r\n // Return span here instead of null so the row still shows\r\n return ;\r\n case 1: // Currency\r\n return this._renderCurrencyCell(product, suffix);\r\n case 2: // DateTime\r\n return this._renderDateTimeCell(product, suffix);\r\n case 3: // Decimal\r\n return this._renderDecimalCell(product, suffix);\r\n case 4: // Integer\r\n return this._renderIntegerCell(product, suffix);\r\n case 5: // Text\r\n return this._renderTextCell(product, suffix);\r\n case 6: // TrueFalse\r\n return this._renderTrueFalseCell(product);\r\n case 40: // Video\r\n this.props.telemetry.warning(\r\n 'Got video specification type, not supported yet so skipping line'\r\n );\r\n return null;\r\n case 41: // Image\r\n this.props.telemetry.warning(\r\n 'Got image specification type, not supported yet so skipping line'\r\n );\r\n return null;\r\n default:\r\n this.props.telemetry.warning(\r\n `Got unknown specification type ${product.DataTypeValue} so skipping line`\r\n );\r\n return null;\r\n }\r\n }\r\n\r\n private _renderCurrencyCell(product: AttributeValue, suffix?: string): JSX.Element | null {\r\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\r\n return (\r\n \r\n {product.CurrencyCode}\r\n {product.CurrencyValue}\r\n {suffix}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDateTimeCell(product: AttributeValue, suffix?: string): JSX.Element | null {\r\n if (\r\n product.DateTimeOffsetValue !== null &&\r\n product.DateTimeOffsetValue !== undefined &&\r\n product.DateTimeOffsetValue.toUTCString\r\n ) {\r\n return {product.DateTimeOffsetValue.toUTCString()}{suffix};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderIntegerCell(product: AttributeValue, suffix?: string): JSX.Element | null {\r\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\r\n return {product.IntegerValue}{suffix};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDecimalCell(product: AttributeValue, suffix?: string): JSX.Element | null {\r\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\r\n return {product.FloatValue}{suffix};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTextCell(product: AttributeValue, suffix?: string): JSX.Element | null {\r\n if (product.TextValue !== null && product.TextValue !== undefined) {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\r\n if (product.BooleanValue) {\r\n return {'Yes'};\r\n } else {\r\n return {'No'};\r\n }\r\n }\r\n\r\n private _compareStrings(\r\n string1: string,\r\n string2: string,\r\n ignoreCase: boolean,\r\n useLocale: string\r\n ): boolean {\r\n if (ignoreCase) {\r\n if (useLocale) {\r\n string1 = string1.toLocaleLowerCase();\r\n string2 = string2.toLocaleLowerCase();\r\n } else {\r\n string1 = string1.toLowerCase();\r\n string2 = string2.toLowerCase();\r\n }\r\n }\r\n return string1 === string2;\r\n }\r\n}\r\n\r\nexport default ProductAttributes;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { Heading, IHeadingProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData, IImageSettings, Image, RichText, RichTextComponent } from '@msdyn365-commerce/core';\r\n\r\nimport { IProductDataEntryData } from './product-data-entry.data';\r\nimport { IProductAttributesItemsData, IProductDataEntryProps, IProductTastingNotesItemsData } from './product-data-entry.props.autogenerated';\r\n\r\n/**\r\n *\r\n * ProductDataEntry component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass ProductDataEntry extends React.PureComponent> {\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n public render(): JSX.Element {\r\n const config = this.props.config;\r\n const hasTastingNotes = config.productTastingNotesItems && !!config.productTastingNotesItems.length;\r\n const hasAttributes = config.productAttributesItems && !!config.productAttributesItems.length;\r\n\r\n return (\r\n
\r\n\r\n {config.productImage && this._renderHeroImage(config.productImage)}\r\n {config.productCaption &&\r\n
\r\n {this._renderRichText(config.productCaption, 'product-data-entry__caption-text')}\r\n
\r\n }\r\n\r\n
\r\n {config.productHeading && this._renderHeading(config.productHeading, 'product-data-entry__heading')}\r\n {config.productSubHeading && this._renderHeading(config.productSubHeading, 'product-data-entry__subheading')}\r\n {config.productDescription && this._renderRichText(config.productDescription, 'product-data-entry__description')}\r\n\r\n
\r\n {config.productTastingNotesHeading && this._renderHeading(config.productTastingNotesHeading, 'product-data-entry__tasting-notes__heading')}\r\n {config.productTastingNotesItems && hasTastingNotes && this._renderTastingNotesItems(config.productTastingNotesItems)}\r\n
\r\n\r\n
\r\n {config.productAttributesHeading && this._renderHeading(config.productAttributesHeading, 'product-data-entry__attributes__heading')}\r\n {config.productAttributesItems && hasAttributes && this._renderProductAttributesItems(config.productAttributesItems)}\r\n
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderHeading(heading: IHeadingProps, className?: string): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderRichText(text: RichText, className?: string): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderHeroImage(productImage: IImageData): JSX.Element {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=0&h=814&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=0&h=814&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderTastingNotesItems(productTastingNotesItems: IProductTastingNotesItemsData[]): JSX.Element {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=25&h=25&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=25&h=25&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n return (\r\n
\r\n {productTastingNotesItems.map((item: IProductTastingNotesItemsData, idx: number) => (\r\n
\r\n {item.tastingNotesIcon &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {item.tastingNotesName}\r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderProductAttributesItems(productAttributesItems: IProductAttributesItemsData[]): JSX.Element {\r\n return (\r\n
\r\n {productAttributesItems.map((item: IProductAttributesItemsData, idx: number) => (\r\n
\r\n {item.attributeName && this._renderHeading(item.attributeName, 'product-data-entry__attributes__name')}\r\n {item.attributeText && this._renderRichText(item.attributeText, 'product-data-entry__attributes__text')}\r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ProductDataEntry;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpButton {\r\n id?: string;\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n onClick?(event: React.MouseEvent): void;\r\n}\r\n\r\nconst SignUpButton: React.FC = ({ id, className, text, ariaLabel, disabled, onClick }) => (\r\n \r\n {text}\r\n \r\n);\r\n\r\nexport default SignUpButton;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpErrorProps {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nconst SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\r\n const errorClassName = `${className}__${type}-error`;\r\n\r\n return (\r\n \r\n );\r\n\r\n};\r\n\r\nexport default SignUpError;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport interface ISignUpInputProps {\r\n id?: string;\r\n // tslint:disable-next-line:no-any\r\n type: any;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n maxLength?: string;\r\n onChange?(event: React.ChangeEvent): void;\r\n}\r\n\r\nexport interface ISignUpInput {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nconst GetMaxLength = (maxLength?: string): number | undefined => {\r\n if (maxLength) {\r\n const parsedMaxLength = parseInt(maxLength, 10);\r\n if (!isNaN(parsedMaxLength)) {\r\n return parsedMaxLength;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nconst SignUpInput: React.FC = ({\r\n id,\r\n type,\r\n value,\r\n pattern,\r\n className,\r\n maxLength,\r\n onChange }) => (\r\n \r\n );\r\n\r\nexport default SignUpInput;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLabel {\r\n id: string;\r\n forId: string;\r\n className: string;\r\n text: string;\r\n}\r\n\r\nconst SignUpLabel: React.FC = ({ id, forId, className, text }) => (\r\n \r\n);\r\n\r\nexport default SignUpLabel;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLoadingIcon {\r\n className: string;\r\n}\r\n\r\nconst SignUpLoadingIcon: React.FC = ({ className }) => (\r\n
\r\n);\r\n\r\nexport default SignUpLoadingIcon;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLoadingMessage {\r\n className: string;\r\n message: string;\r\n}\r\n\r\nconst SignUpLoadingMessage: React.FC = ({ className, message }) => (\r\n
\r\n {message}\r\n
\r\n);\r\n\r\nexport default SignUpLoadingMessage;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpSuccess {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nconst SignUpSuccess: React.FC = ({ id, className, type = 'page', message }) => {\r\n const successClassName = `${className}__${type}-success`;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default SignUpSuccess;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n Heading, IModuleProps, INodeProps, Modal, ModalBody\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\n\r\nimport SignUpButtonComponent from './components/smwe-sign-up-button';\r\nimport SignUpErrorComponent from './components/smwe-sign-up-error';\r\nimport SignUpInputComponent from './components/smwe-sign-up-input';\r\nimport SignUpLabelComponent from './components/smwe-sign-up-label';\r\nimport SignUpLoadingIconComponent from './components/smwe-sign-up-loading-icon';\r\nimport SignUpLoadingMessageComponent from './components/smwe-sign-up-loading-message';\r\nimport SignUpSuccessComponent from './components/smwe-sign-up-success';\r\nimport { ISmweSignUpConfig, ISmweSignUpProps, ISmweSignUpResources } from './smwe-sign-up.props.autogenerated';\r\n\r\nexport interface ISignUpViewState {\r\n isShowLoading: boolean;\r\n}\r\n\r\nexport interface ISignUpItem {\r\n wrapper: INodeProps;\r\n key: string;\r\n label: React.ReactNode;\r\n errorMessage: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpEmailVerification {\r\n isRequired: boolean;\r\n email: ISignUpItem;\r\n buttonWrapper: INodeProps;\r\n buttons: React.ReactNode[];\r\n successMessage: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n}\r\n\r\nexport interface ISignUpLocalAccount {\r\n localAccount: INodeProps;\r\n items: ISignUpItem[];\r\n emailVerification: ISignUpEmailVerification;\r\n buttons: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n disclaimer: React.ReactNode;\r\n pwRequirements: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpLoading {\r\n modal: INodeProps;\r\n modalBody: INodeProps;\r\n icon: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpViewProps {\r\n className: string;\r\n viewState: ISignUpViewState;\r\n loading: ISignUpLoading;\r\n signUp: IModuleProps;\r\n defaultAADConainer: INodeProps;\r\n aadConainer: INodeProps;\r\n heading: React.ReactNode;\r\n signUpLocalAccount: ISignUpLocalAccount;\r\n}\r\n\r\n/**\r\n *\r\n * SignUp component\r\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\r\n * Please ensure any change in module don't break contract with AAD.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass SignUp extends React.Component> {\r\n private moduleClassName: string = 'ms-sign-up';\r\n @observable private emailRegex: string;\r\n @observable private newPasswordRegex: string;\r\n @observable private reenterPasswordRegex: string;\r\n @observable private isEmailVerificationRequried: boolean;\r\n @observable private isInitialized: boolean;\r\n @observable private emailEntered: string;\r\n\r\n // tslint:disable-next-line:no-any\r\n private initializationTimer: any;\r\n\r\n constructor(props: ISmweSignUpProps) {\r\n super(props);\r\n // tslint:disable-next-line:max-line-length\r\n const passwordDefaultRegex = '^((?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)|(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*\\\\d)(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*\\\\d)(?=.*[^A-Za-z0-9]))([A-Za-z\\\\d@#$%^&*\\\\-_+=[\\\\]{}|\\\\\\\\:\\',?/`~\\'();!]|\\\\.(?!@)){8,16}$';\r\n this.emailRegex = '^[a-zA-Z0-9.!#$%&\\'^_`{}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$';\r\n this.newPasswordRegex = passwordDefaultRegex;\r\n this.reenterPasswordRegex = passwordDefaultRegex;\r\n this.isEmailVerificationRequried = false;\r\n this.isInitialized = false;\r\n this.emailEntered = '';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._onInit();\r\n }\r\n\r\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\r\n public componentDidUpdate(): void {\r\n // tslint:disable-next-line:no-string-literal\r\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\r\n // tslint:disable-next-line:no-string-literal\r\n window['$element']['initialize']();\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config, resources } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n viewState: {\r\n isShowLoading: !this.isInitialized\r\n },\r\n signUp: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName, config.className)\r\n },\r\n loading: {\r\n modal: {\r\n tag: Modal,\r\n isOpen: true\r\n },\r\n modalBody: {\r\n tag: ModalBody\r\n },\r\n icon: ,\r\n message: ,\r\n },\r\n defaultAADConainer: {\r\n id: 'api',\r\n style: { display: 'none' }\r\n },\r\n aadConainer: {\r\n id: this.isInitialized ? 'api' : null,\r\n className: `${this.moduleClassName}__container`\r\n },\r\n heading: ,\r\n signUpLocalAccount: this._renderLocalAccount()\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public _onInit = () => {\r\n this._prePopulateData();\r\n this._updateErrorMessage();\r\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.\r\n this.initializationTimer = setInterval(() => { this._isInitializationSuccessful(); }, 100);\r\n setTimeout(() => { clearInterval(this.initializationTimer); }, 10000);\r\n };\r\n\r\n // After successful AAD initialization, remove waiting and preload any data, if needed.\r\n private _isInitializationSuccessful = () => {\r\n // tslint:disable-next-line:no-string-literal\r\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\r\n clearInterval(this.initializationTimer);\r\n this.isInitialized = true;\r\n }\r\n };\r\n\r\n private _prePopulateData = () => {\r\n const resources: ISmweSignUpResources = this.props.resources || {};\r\n\r\n // tslint:disable-next-line:no-string-literal\r\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\r\n // tslint:disable-next-line:no-string-literal\r\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string; VERIFY: boolean }) => {\r\n switch (obj.ID.toLowerCase()) {\r\n case 'email': {\r\n this.emailRegex = obj.PAT;\r\n this.isEmailVerificationRequried = obj.VERIFY;\r\n break;\r\n }\r\n case 'newpassword': {\r\n this.newPasswordRegex = obj.PAT;\r\n break;\r\n }\r\n case 'reenterpassword': {\r\n this.reenterPasswordRegex = obj.PAT;\r\n break;\r\n }\r\n default:\r\n }\r\n\r\n switch (obj.UX_INPUT_TYPE.toLowerCase()) {\r\n case 'password': {\r\n obj.PAT_DESC = resources.invalidPasswordError;\r\n break;\r\n }\r\n case 'emailbox': {\r\n obj.PAT_DESC = resources.invalidEmailAddressError;\r\n break;\r\n }\r\n default:\r\n }\r\n });\r\n }\r\n };\r\n\r\n private _updateErrorMessage = () => {\r\n const resources: ISmweSignUpResources = this.props.resources || {};\r\n\r\n // tslint:disable-next-line:no-string-literal\r\n if (window && window['CONTENT']) {\r\n const errorMessages = {\r\n required_field: resources.requiredFieldMissingError\r\n };\r\n\r\n // tslint:disable-next-line:no-string-literal\r\n Object.assign(window['CONTENT'], errorMessages);\r\n }\r\n };\r\n\r\n private _renderLocalAccount(): ISignUpLocalAccount {\r\n const { config, resources } = this.props;\r\n return {\r\n localAccount: {\r\n id: 'attributeList',\r\n className: `${this.moduleClassName}__account-items attr`\r\n },\r\n items: [\r\n this._renderInput('givenName', 'text', resources.firstNameLabelText, resources.firstNameMaxLength),\r\n this._renderInput('surname', 'text', resources.lastNameLabelText, resources.lastNameMaxLength),\r\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\r\n this._renderInput('newPassword', 'password', resources.passwordLabelText, undefined, this.newPasswordRegex),\r\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, undefined, this.reenterPasswordRegex)\r\n ],\r\n emailVerification: {\r\n isRequired: this.isEmailVerificationRequried,\r\n email: this._renderInput('email_ver_input', 'text', resources.verificationCodeLabelText),\r\n buttonWrapper: {\r\n className: `${this.moduleClassName}__email-verification-buttons verify`,\r\n 'data-claim_id': 'email'\r\n },\r\n buttons: [\r\n (\r\n \r\n ),\r\n (\r\n \r\n ),\r\n (\r\n \r\n ),\r\n (\r\n \r\n )\r\n ],\r\n successMessage: [\r\n ,\r\n \r\n ],\r\n errorMessage: [\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n \r\n ]\r\n },\r\n buttons: [\r\n ,\r\n \r\n ],\r\n errorMessage: [\r\n ,\r\n ,\r\n ,\r\n \r\n ],\r\n disclaimer: config.disclaimer && ,\r\n pwRequirements: config.pwRequirements && \r\n };\r\n }\r\n\r\n private _isFormValid(): boolean {\r\n if (this.emailEntered === ' ' && this.emailRegex) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n private _renderInput(id: string, type: string, labelText: string, maxLength?: string, pattern?: string): ISignUpItem {\r\n const className = `${this.moduleClassName}__account-item`;\r\n return (\r\n {\r\n wrapper: {\r\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\r\n },\r\n key: id,\r\n label: (\r\n \r\n ),\r\n errorMessage: (\r\n \r\n ),\r\n input: (\r\n this.emailEntered = e.target.value\r\n }\r\n }\r\n />\r\n )\r\n\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport default SignUp;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from './smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n <>\r\n {isNewPassword && pwRequirements}\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent | React.KeyboardEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('sign-up-password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = newPasswordState.type === 'password' ? 'text' : 'password';\r\n reenterPasswordState.type = reenterPasswordState.type === 'password' ? 'text' : 'password';\r\n for(let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = iconElements[i].className === 'sign-up-password-icon icon-show-password' ? 'sign-up-password-icon icon-hide-password' :'sign-up-password-icon icon-show-password';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","import * as React from 'react';\r\nimport { ILinksData } from '../subscription-restriction-button.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n}\r\n\r\nconst ContentCardLinks: React.FC = ({ links }) => (\r\n
\r\n {links.map((cta: ILinksData, index: number) => {\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n return \r\n {cta.linkText}\r\n ;\r\n })}\r\n
\r\n);\r\n\r\nexport default ContentCardLinks;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { reaction } from 'mobx';\r\nimport * as React from 'react';\r\nimport { getSubscriptionValues } from '../../Utilities/subscription-manager';\r\nimport LinksComponent from './components/links';\r\nimport { ISubscriptionRestrictionButtonData } from './subscription-restriction-button.data';\r\nimport { ISubscriptionRestrictionButtonProps } from './subscription-restriction-button.props.autogenerated';\r\nexport interface ISubscriptionRestrictionButtonViewProps extends ISubscriptionRestrictionButtonProps<{}> {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n hasFrequency: boolean;\r\n hasName: boolean;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsContainer: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass SubscriptionRestrictionButton extends React.PureComponent> {\r\n\r\n public constructor(props: ISubscriptionRestrictionButtonProps) {\r\n super(props);\r\n\r\n reaction(\r\n () => { return [this.props.data.cart, this.props.data.cart?.result, this.props.data.cart?.result?.cart, this.props.data.cart?.result?.cart.ExtensionProperties]; },\r\n () => {\r\n this.forceUpdate();\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const values = getSubscriptionValues(this.props.data.cart?.result?.cart);\r\n\r\n const { heading, paragraph, image, links, className } = this.props.config;\r\n const contentBlockTitle = heading && heading.text && ;\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings || {},\r\n imageSettings: image && image.imageSettings\r\n };\r\n const contentBlockLinks = links && links.length > 0 && ;\r\n const contentBlockText = paragraph && ;\r\n const contentBlockImage = image && ;\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockImage && !contentBlockLinks) {\r\n return
;\r\n }\r\n\r\n const subscriptionRestrictionButtonViewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-content-block', className)\r\n },\r\n className: className,\r\n imageContainer: { className: 'ms-content-block__image' },\r\n detailsContainer: { className: 'ms-content-block__details' },\r\n hasFrequency: !!values.frequency,\r\n hasName: !!values.name\r\n };\r\n\r\n return this.props.renderView(subscriptionRestrictionButtonViewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default SubscriptionRestrictionButton;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ISubscriptionRestrictionButtonViewProps } from './subscription-restriction-button';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const {\r\n contentBlockContainer,\r\n className,\r\n imageContainer,\r\n detailsContainer,\r\n title,\r\n text,\r\n links,\r\n image,\r\n hasFrequency,\r\n hasName,\r\n config: {\r\n requireFrequency,\r\n requireName\r\n }\r\n } = props;\r\n\r\n let shouldDisable = false;\r\n\r\n if (requireFrequency && !hasFrequency) {\r\n shouldDisable = true;\r\n }\r\n if (requireName && !hasName) {\r\n shouldDisable = true;\r\n }\r\n\r\n return (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent | React.KeyboardEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent | React.KeyboardEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\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 if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\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 { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\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 IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\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 AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\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\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-customer-balance-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 AccountCustomerBalanceTileLinks;\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 { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountGenericTileConfig, IAccountGenericTileProps } from './account-generic-tile.props.autogenerated';\nimport LinksComponent from './components/account-generic-tile-links';\n\nexport interface IAccountGenericTileViewProps extends IAccountGenericTileProps {\n AccountGenericTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * AccountGeneric component.\n * @extends {React.PureComponent>}\n */\nclass AccountGenericTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountGenericTileProps) {\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 } = this.props;\n const { className, heading, links } = config;\n\n const viewProps = {\n ...this.props,\n className,\n AccountGenericTile: {\n moduleProps: this.props,\n className: classnames('ms-account-generic-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountGenericTile;\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 { IAccountGenericTileViewProps } from './account-generic-tile';\n\nconst AccountGenericTileView: React.FC = props => {\n const { AccountGenericTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default AccountGenericTileView;\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-generic-tile.props.autogenerated';\n\nexport interface IAccountGenericTileLinks {\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 AccountGenericTileLinks: 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-generic-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 AccountGenericTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountLoyaltyTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountLoyaltyTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-loyalty-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountLoyaltyTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileData } from './account-loyalty-tile.data';\nimport { IAccountLoyaltyTileProps } from './account-loyalty-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-loyalty-tile-description';\nimport LinksComponent from './components/account-loyalty-tile-links';\n\nexport interface IAccountLoyaltyTileViewProps extends IAccountLoyaltyTileProps {\n AccountLoyaltyTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.PureComponent>}\n */\nclass AccountLoyaltyTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountLoyaltyTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, data, resources, context } = this.props;\n const { className, heading, signUpLinkText, signUpLinkAriaLabel, viewLinkText, viewLinkAriaLabel } = config;\n const { accountLoyaltySummary, accountLoyaltyMemberSummary } = resources;\n const { loyaltyCard } = data;\n\n let description = accountLoyaltySummary;\n let url = Msdyn365.getUrlSync('loyaltyJoin', context.actionContext) || '';\n const link = { linkText: signUpLinkText, linkUrl: { destinationUrl: url }, ariaLabel: signUpLinkAriaLabel };\n\n if (loyaltyCard && loyaltyCard.result && loyaltyCard.result.CardNumber) {\n const decimalPrecision = 2;\n let points = 0;\n\n if (loyaltyCard.result.RewardPoints && loyaltyCard.result.RewardPoints.length > 0) {\n loyaltyCard.result.RewardPoints.forEach((rewardPoint: LoyaltyRewardPoint) => {\n points += rewardPoint.ActivePoints!;\n });\n }\n link.ariaLabel = viewLinkAriaLabel;\n link.linkText = viewLinkText;\n url = Msdyn365.getUrlSync('loyalty', context.actionContext) || '';\n link.linkUrl.destinationUrl = url;\n description = format(accountLoyaltyMemberSummary, points.toFixed(decimalPrecision));\n }\n\n const viewProps = {\n ...this.props,\n className,\n AccountLoyaltyTile: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty-tile', config.className)\n },\n heading: heading && (\n \n ),\n links: (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.signUpLinkText && this.props.config.viewLinkText) {\n this.props.config.viewLinkText = event.target.value;\n }\n };\n}\n\nexport default AccountLoyaltyTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountLoyaltyTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountLoyaltyTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountLoyaltyTileDescription: React.FC = ({ description }) => (\n

{description}

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

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-order-templates-tile.props.autogenerated';\n\nexport interface IAccountOrderTemplatesTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrderTemplatesTileLinks: React.FC = ({\n links,\n onTextChange,\n telemetryContent,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-order-templates-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileData } from './account-order-templates-tile.data';\nimport { IAccountOrderTemplatesTileProps } from './account-order-templates-tile.props.autogenerated';\nimport { AccountOrderTemplatesTileDescription, AccountOrderTemplatesTileLinks } from './components';\n\nexport interface IAccountOrderTemplatesTileViewProps extends IAccountOrderTemplatesTileProps {\n AccountOrderTemplatesTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountOrderTemplatesTile component.\n * @extends {React.PureComponent>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountOrderTemplatesTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n\n if (!this.props.context.request.params.isEditor && !isChannelTypeB2B(this.props.context.request)) {\n return <>;\n }\n\n const { className, heading, links } = config;\n const { accountOrderTemplatesTileDescription } = resources;\n const orderTemplates = data.orderTemplates;\n\n const orderTemplatesCount = (orderTemplates?.result || []).length;\n const description = format(accountOrderTemplatesTileDescription, orderTemplatesCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountOrderTemplatesTile: {\n moduleProps: this.props,\n className: classnames('ms-account-order-templates-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountOrderTemplatesTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileViewProps } from './account-order-templates-tile';\n\nconst AccountOrderTemplatesTileView: React.FC = props => {\n const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountOrderTemplatesTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport 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 = 20;\n\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n constructor(props: IAccountProfileAttributesProps) {\n super(props);\n this.state = {\n editAttributes: false,\n phone: '',\n vatNumber: '',\n attributes: {},\n attributeError: {}\n };\n this.initialAttributes = {};\n this.initialCustomerAttributes = [];\n this.initialPhone = '';\n this.initialVatNumber = '';\n this.attributePayloadData = [];\n const telemetryPageName =\n (this.props.accountProfileProps &&\n this.props.accountProfileProps.context &&\n this.props.accountProfileProps.context.request &&\n this.props.accountProfileProps.context.request.telemetryPageName) ||\n '';\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.editRef = React.createRef();\n this.attributesContainerRef = React.createRef();\n }\n\n public componentDidMount(): void {\n this._buildPayloadData();\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n reaction(\n () => this.props.accountProfileProps.data.customerInformation.result,\n () => {\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n }\n );\n reaction(\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\n () => {\n this._buildPayloadData();\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileAttributesProps, nextState: IAccountProfileAttributesState): boolean {\n if (this.state === nextState && this.props.accountProfileProps.data === nextProps.accountProfileProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this._renderAttributes();\n }\n\n private readonly _renderAttributes = (): JSX.Element | null => {\n const { config, data, resources } = this.props.accountProfileProps;\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\n const additionalInformationSectionHeading =\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\n const showAttributes = config.showAttributes || '';\n const attributes = showAttributes.split(',');\n const elements = attributes.map(att => {\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\n ) || { RecordId: 0 };\n return this._renderAttribute(attributeDefinition);\n });\n const edit = (this.state && this.state.editAttributes) || false;\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n const customerInformation = data.customerInformation.result;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\n const disableBtn: boolean =\n (this.props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false) &&\n !this.isEditAsyncCustomerFeatureEnabled;\n return (\n \n {config.additionalInformationSectionHeading && (\n \n )}\n {config.showPhone && this._renderPhone()}\n {config.showVatNumber && this._renderVatNumber()}\n {elements}\n {this.gotException && (\n
\n \n
\n )}\n {!edit && (\n \n {resources.attributesEditButtonText}\n \n )}\n {edit && (\n \n {resources.attributesSaveButtonText}\n \n )}\n {edit && (\n \n {resources.attributesCancelButtonText}\n \n )}\n
\n );\n };\n\n private readonly _renderPhone = (): JSX.Element | null => {\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {phoneSectionHeading && }\n \n {this._renderError('Phone')}\n
\n );\n };\n\n private readonly _renderVatNumber = (): JSX.Element | null => {\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {vatNumberSectionHeading && }\n \n {this._renderError('VATNumber')}\n
\n );\n };\n\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\n const editAttributes = (this.state && this.state.editAttributes) || false;\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\n case AccountAttributeDataTypeValue.Integer:\n case AccountAttributeDataTypeValue.Decimal:\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.Text:\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.TrueFalse:\n return this._renderBoolean(customAttribute, className, editAttributes);\n default:\n return null;\n }\n };\n\n private readonly _renderIntegerDecimalInput = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderTextInputOrSelect = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n if (isEnumeration && customAttribute.EnumerationDetails) {\n const value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n return (\n
\n \n \n {hasNoValue && (\n \n )}\n {customAttribute.EnumerationDetails.map(option => {\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\n return (\n \n {option.EnumerationValue}\n \n );\n })}\n \n
\n );\n }\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderBoolean = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n let value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n const render = !(hasNoValue && !editAttributes);\n value = value || 'false';\n const toggleState = (value === 'true' && 'enable') || 'disable';\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\n const ariaPressed = (value === 'true' && true) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n let toggleValue = 'false';\n if (value === 'true') {\n toggleValue = 'false';\n } else {\n toggleValue = 'true';\n }\n\n return (\n \n \n {render && (\n \n \n \n \n
\n )}\n \n );\n };\n\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\n const hasError = !StringExtensions.isNullOrWhitespace(error);\n if (hasError) {\n return (\n
\n \n
\n );\n }\n return null;\n };\n\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n return {\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\n IsMandatory: isMandatory\n };\n };\n\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ phone: value });\n };\n\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ vatNumber: value });\n };\n\n private readonly _enableAttributes = () => {\n this.hasError = false;\n\n // To clear exception messages\n this.gotException = false;\n this.setState({ editAttributes: true, attributeError: {} });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n if (this.attributesContainerRef.current) {\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\n this.attributeClassName\n );\n if (attributes && attributes.length > 0) {\n this._setFocus(attributes[0] as HTMLElement);\n }\n }\n }, 0);\n }\n };\n\n private readonly _disableAttributes = () => {\n this.setState({\n editAttributes: false,\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n };\n\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\n event: React.MouseEvent\n ) => {\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.currentTarget.selectedOptions[0].value;\n const index = event.currentTarget.selectedOptions[0].index;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n },\n selectedIndex: {\n ...this.state.selectedIndex,\n [name]: index\n }\n });\n };\n\n private readonly _getAttributes = () => {\n const { config, data } = this.props.accountProfileProps;\n const showAttributes = config.showAttributes || '';\n const showAttributesArray = showAttributes.split(',');\n const customer = data.customerInformation.result;\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attributes: IDictionary = {};\n\n showAttributesArray.forEach(showAttribute => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\n let value: string = '';\n if (attribute && attribute.AttributeValue) {\n const name = (attribute && attribute.Name) || '';\n switch (attribute.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n if (attribute.AttributeValue.IntegerValue) {\n value = String(attribute.AttributeValue.IntegerValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n if (attribute.AttributeValue.DecimalValue) {\n value = String(attribute.AttributeValue.DecimalValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n if (attribute.AttributeValue.StringValue) {\n value = attribute.AttributeValue.StringValue;\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n if (attribute.AttributeValue.BooleanValue !== null) {\n value = String(attribute.AttributeValue.BooleanValue);\n attributes[name] = value;\n }\n break;\n default:\n\n // Do nothing\n }\n }\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\n attributes[showAttribute] = '';\n }\n if (value.length === 0 && defaultValue) {\n attributes[showAttribute] = String(defaultValue);\n }\n });\n if (Object.keys(this.initialAttributes).length === 0) {\n this.initialAttributes = attributes;\n }\n this.setState({ attributes });\n };\n\n // eslint-disable-next-line\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\n const { resources } = this.props.accountProfileProps;\n const { phone, vatNumber } = this.state;\n const attributeError: IDictionary = {};\n let hasError: boolean = false;\n let hasValue: boolean = true;\n for (const [key, value] of Object.entries(this.state.attributes)) {\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\n if (payloadData) {\n switch (payloadData.dataTypeValue) {\n case AccountAttributeDataTypeValue.Decimal:\n const decimalValue = Number(value);\n if (isNaN(decimalValue)) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (decimalValue > this.maxDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxDecimalLimit\n );\n hasError = true;\n }\n\n if (decimalValue < this.minDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minDecimalLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.decimalValue = decimalValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Integer:\n const integerValue = Number(value);\n if (isNaN(integerValue) || value.includes('.')) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (integerValue > this.maxIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxIntegerLimit\n );\n hasError = true;\n }\n\n if (integerValue < this.minIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minIntegerLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.integerValue = integerValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n let trimValue = '';\n if (!StringExtensions.isNullOrWhitespace(value)) {\n trimValue = value.trim();\n }\n if (trimValue.length > this.maxStringLength) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputStringMaxLengthErrorText,\n payloadData.name,\n this.maxStringLength\n );\n hasError = true;\n }\n if (!hasError) {\n payloadData.textValue = trimValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n payloadData.booleanValue = value === 'true';\n break;\n default:\n\n // Do nothing\n }\n\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\n hasError = true;\n }\n\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attribute = custmerAttributes.find(att => att.Name === key);\n const index = custmerAttributes.findIndex(att => att.Name === key);\n\n if (index !== -1 && !hasValue) {\n custmerAttributes.splice(index, 1);\n }\n\n if (!hasError && hasValue) {\n if (attribute) {\n attribute.Attribute = undefined;\n attribute.DataTypeValue = payloadData.dataTypeValue;\n attribute.Name = payloadData.name;\n attribute.RecordId = payloadData.recordId;\n attribute.Units = undefined;\n attribute.AttributeValue = {\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n };\n attribute.ExtensionProperties = [];\n attribute.NameTranslations = [];\n } else {\n custmerAttributes.push({\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\n Attribute: undefined,\n DataTypeValue: payloadData.dataTypeValue,\n KeyName: payloadData.name,\n Name: payloadData.name,\n RecordId: payloadData.recordId,\n Units: undefined,\n AttributeValue: {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n },\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\n ExtensionProperties: [],\n 'NameTranslations@odata.type':\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\n NameTranslations: []\n });\n }\n }\n }\n }\n\n if (phone.trim().length > this.maxPhoneLength) {\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\n hasError = true;\n } else {\n customer.Phone = phone.trim();\n }\n\n if (vatNumber.trim().length > this.maxVATNumberLength) {\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\n hasError = true;\n } else {\n customer.VatNumber = vatNumber.trim();\n }\n\n this.hasError = hasError;\n this.setState({ attributeError });\n };\n\n private readonly _saveAttributes = async () => {\n const { context, data } = this.props.accountProfileProps;\n const customer = data.customerInformation.result;\n\n if (customer && context) {\n this._addOrUpdateAttribute(customer);\n const input = new updateCustomerAttributesInput(\n customer.AccountNumber,\n customer.Attributes || [],\n context.request.apiSettings,\n customer.Phone,\n customer.VatNumber\n );\n\n this.isUpdatingAttributes = true;\n this.gotException = false;\n\n if (!this.hasError) {\n this.setState({ editAttributes: false });\n try {\n await updateCustomerAttributes(input, context.actionContext);\n } catch (error) {\n this.gotException = true;\n customer.Attributes = this.initialCustomerAttributes;\n if (context.telemetry) {\n context.telemetry.exception(error);\n context.telemetry.debug('Unable to update customer attributes');\n }\n this.setState({\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n }\n this.setState({ editAttributes: false });\n if (!this.gotException) {\n this.initialAttributes = this.state.attributes;\n this.initialCustomerAttributes = customer.Attributes;\n this.initialPhone = this.state.phone;\n this.initialVatNumber = this.state.vatNumber;\n }\n }\n\n this.isUpdatingAttributes = false;\n\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n }\n };\n\n private readonly _setFocus = (element: HTMLElement | null) => {\n element?.focus();\n };\n\n private readonly _buildPayloadData = () => {\n const { data } = this.props.accountProfileProps;\n const attributeDefinitions = data.attributeDefinitions.result || [];\n const attributes: IDictionary = {};\n\n attributeDefinitions.forEach(attributeDefinition => {\n const attributePayloadData: IAttributePayloadData = {};\n attributePayloadData.recordId = attributeDefinition.RecordId;\n attributePayloadData.name = attributeDefinition.Name;\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\n switch (attributeDefinition.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\n if (attributePayloadData.name && defaultIntegerValue) {\n attributePayloadData.defaultValue = String(defaultIntegerValue);\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\n if (attributePayloadData.name && defaultDecimalValue) {\n attributePayloadData.defaultValue = String(defaultDecimalValue);\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\n if (attributePayloadData.name && defaultStringValue) {\n attributePayloadData.defaultValue = defaultStringValue;\n attributes[attributePayloadData.name] = defaultStringValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n const defaultBooleanValue =\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\n if (attributePayloadData.name) {\n attributePayloadData.defaultValue = String(defaultBooleanValue);\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\n }\n break;\n default:\n\n // Do nothing\n }\n this.attributePayloadData.push(attributePayloadData);\n });\n Object.keys(attributes).length > 0 && this.setState({ attributes });\n };\n\n private readonly _getCustomerPhoneAndVatNumber = () => {\n const customer = this.props.accountProfileProps.data.customerInformation.result;\n const phone = (customer && customer.Phone) || '';\n const vatNumber = (customer && customer.VatNumber) || '';\n this.setState({ phone, vatNumber });\n if (this.initialPhone.length === 0) {\n this.initialPhone = phone;\n }\n if (this.initialVatNumber.length === 0) {\n this.initialVatNumber = vatNumber;\n }\n };\n}\n\nexport default AccountProfileAttributes;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n isDisabled?: boolean;\n}\n\nexport interface IAccountProfileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: link.isDisabled ? 'ms-account-profile__section-link-disable' : 'ms-account-profile__section-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountProfileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n ArrayExtensions,\n updateCustomerPersonalization,\n updateCustomerPersonalizationInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from './account-profile.data';\nimport {\n IAccountProfileProps,\n IEmailAddressSectionHeadingData,\n IHeadingData,\n INameSectionHeadingData\n} from './account-profile.props.autogenerated';\nimport AccountProfileAttributes from './components/account-profile-attributes';\nimport DescriptionComponent from './components/account-profile-description';\nimport LinksComponent, { ILinksData } from './components/account-profile-links';\nimport TextComponent from './components/account-profile-text';\n\nexport interface IAccountPreference {\n accountPreference: INodeProps;\n heading: React.ReactNode;\n buttonWrapper: INodeProps;\n buttonYesText: React.ReactNode;\n buttonNoText: React.ReactNode;\n button: React.ReactNode;\n description: React.ReactNode;\n onUpdateAccountPreference(preferenceType?: string): void;\n}\n\nexport interface IAccountPreferences {\n accountPreferences: INodeProps;\n heading?: React.ReactNode;\n personalization: IAccountPreference;\n extraPreferences?: IAccountPreference[];\n}\n\nexport interface IAccountProfileItem {\n AccountProfileItem: INodeProps;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\nexport interface IAccountCustomerAttributes {\n customerAttributes?: React.ReactNode;\n}\n\nexport interface IAccountProfileViewProps extends IAccountProfileProps {\n AccountProfile: IModuleProps;\n accountProfileWrapper?: INodeProps;\n className: string;\n heading?: React.ReactNode;\n emailSection: IAccountProfileItem;\n nameSection: IAccountProfileItem;\n preferenceSection: IAccountPreferences;\n customerAttributesWrapper?: INodeProps;\n customerAttributesSection?: IAccountCustomerAttributes;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * AccountProfile component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfile extends React.Component> {\n @observable private isUpdatingPreference: boolean = false;\n\n private readonly telemetryContent?: ITelemetryContent;\n private readonly payLoad: IPayLoad;\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n constructor(props: IAccountProfileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\n\n const { editButtonText, editButtonAriaLabel } = resources;\n const customerInformation = data.customerInformation.result;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false) &&\n !this.isEditAsyncCustomerFeatureEnabled;\n\n // As per the design, phone and vat numbers are part of the profile attributes section\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\n const editLink: ILinksData = {\n linkUrl: {\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\n },\n linkText: editButtonText,\n ariaLabel: editButtonAriaLabel,\n isDisabled: invalidAsyncCustomerState\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountProfile: {\n moduleProps: this.props,\n className: classnames('ms-account-profile', config.className)\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n accountProfileWrapper: {\n className: classnames('ms-account-profile-wrapper')\n },\n heading: heading && (\n \n ),\n emailSection: this._renderEmailSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\n customerInformation && customerInformation.Email\n ),\n nameSection: this._renderNameSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\n nameSectionHeading as INameSectionHeadingData,\n this.getDescription(customerInformation),\n Msdyn365.isOboRequest(this.props.context.request) ? undefined : [editLink]\n ),\n preferenceSection: this._renderPreferenceSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\n invalidAsyncCustomerState,\n customerInformation\n ),\n customerAttributesWrapper: {\n className: classnames('ms-account-profile__attributes-wrapper')\n },\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes()\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\n\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.nameSectionHeading!.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.resources.editButtonText) {\n this.props.resources.editButtonText = event.target.value;\n }\n };\n\n @computed get editProfileUrl(): string {\n return get(this.props, 'context.request.user.editProfileUrl', '');\n }\n\n private getDescription(customerInformation: Customer | undefined): string {\n let description = '';\n if (customerInformation !== undefined) {\n if (customerInformation.FirstName) {\n description += customerInformation.FirstName;\n }\n if (customerInformation.LastName) {\n description += customerInformation.FirstName ? ` ${customerInformation.LastName}` : customerInformation.LastName;\n }\n }\n return description;\n }\n\n private _renderEmailSection(\n className: string,\n heading?: IEmailAddressSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private _renderNameSection(\n className: string,\n heading?: INameSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n if (!ArrayExtensions.hasElements(links)) {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n description: description && (\n \n )\n };\n }\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private readonly onClickEventHandler = (className: string) => async () => {\n return this._updateAccountPersonalization(className);\n };\n\n private _renderPreferenceSection(\n className: string,\n invalidAsyncCustomerState: boolean,\n customerInformation?: Customer\n ): IAccountPreferences | null {\n const {\n personalizationDescription,\n personalizationEnableButtonAriaLabel,\n webTrackingDescription,\n webTrackingEnableButtonAriaLabel\n } = this.props.resources;\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\n const { enableDataAnalytics } = this.props.context.request.features;\n const extraPreferences: IAccountPreference[] = [];\n\n if (!customerInformation) {\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\n return null;\n }\n\n // Show browser activity login preference if switch is enabled AND a heading is provided\n enableDataAnalytics &&\n webTrackingSectionHeading &&\n extraPreferences.push(\n this._renderPreference(\n 'web-tracking',\n webTrackingSectionHeading as IHeadingData,\n webTrackingEnableButtonAriaLabel,\n webTrackingDescription,\n customerInformation.OptOutWebActivityTracking || false,\n invalidAsyncCustomerState\n )\n );\n\n return {\n accountPreferences: {\n className\n },\n heading: preferencesSectionHeading && (\n \n ),\n personalization: this._renderPreference(\n 'personalization',\n personalizationSectionHeading as IHeadingData,\n personalizationEnableButtonAriaLabel,\n personalizationDescription,\n customerInformation.OptOutPersonalization || false,\n invalidAsyncCustomerState\n ),\n extraPreferences: extraPreferences || undefined\n };\n }\n\n private readonly _renderPreference = (\n className: string,\n sectionHeading: IHeadingData,\n enableAriaLabel: string,\n description: string,\n isOptOut: boolean,\n disableBtn: boolean\n ) => {\n const { toggleDisableText, toggleEnableText } = this.props.resources;\n const toggleState = isOptOut ? 'disable' : 'enable';\n const onClickHandler = this.onClickEventHandler(className);\n this.payLoad.contentAction.etext = sectionHeading.text;\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n return {\n accountPreference: {\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\n })\n },\n heading: sectionHeading && (\n \n ),\n buttonWrapper: {\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\n // Disable the toggle completely if customer is async.\n 'ms-account-profile__toggle-disabled': disableBtn\n })\n },\n buttonYesText: ,\n buttonNoText: ,\n button: (\n \n ),\n description: ,\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\n };\n };\n\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\n const customerInformation = this.props.data.customerInformation.result;\n\n if (customerInformation) {\n const {\n telemetry,\n context: { request, actionContext }\n } = this.props;\n\n let isOptOutPersonalization = false;\n let input;\n\n switch (preferenceType) {\n case 'web-tracking':\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n break;\n case undefined:\n case 'personalization':\n default:\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n }\n\n this.isUpdatingPreference = true;\n\n try {\n await updateCustomerPersonalization(input, actionContext);\n } catch (error) {\n if (telemetry) {\n telemetry.exception(error);\n telemetry.debug('Unable to update customer personalization');\n }\n }\n\n this.isUpdatingPreference = false;\n }\n };\n\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\n return ;\n };\n}\n\nexport default AccountProfile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps } from './account-profile';\n\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\n return (\n \n {heading}\n \n {extraPreferences &&\n extraPreferences.map((preferenceSecton, index) => {\n return ;\n })}\n \n );\n};\n\nconst AccountPreferenceSection: React.FC = ({\n accountPreference,\n heading,\n description,\n buttonWrapper,\n buttonYesText,\n button,\n buttonNoText\n}) => {\n return (\n \n {heading}\n {description}\n \n {buttonNoText}\n {button}\n {buttonYesText}\n \n \n );\n};\n\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nconst AccountProfileView: React.FC = props => {\n const {\n AccountProfile,\n infoMessageBar,\n accountProfileWrapper,\n heading,\n emailSection,\n nameSection,\n preferenceSection,\n customerAttributesWrapper,\n customerAttributesSection\n } = props;\n\n return (\n \n {infoMessageBar}\n {accountProfileWrapper && (\n \n {heading}\n \n \n \n \n )}\n {customerAttributesWrapper && {customerAttributesSection}}\n \n );\n};\n\nexport default AccountProfileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountProfileDescription {\n className: string;\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\n

{description}

\n);\n\nexport default IAccountProfileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountProfileText {\n className: string;\n text: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\n\nexport default IAccountProfileText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component.\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text ? config.heading.text : ''} ${\n accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''\n }`\n }\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n}\n\nexport default AccountWelcomeTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n};\n\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../../..';\n\nexport interface IB2bRequestsTileLinksProps {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst defaultClassName = 'ms-account-b2b-requests-tile';\n\nexport const B2bRequestsTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (!ArrayExtensions.hasElements(links)) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n return linkdata.map(link => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return {\n ariaLabel: link.ariaLabel,\n className: `${defaultClassName}__link`,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n } as Msdyn365.ILinksData;\n });\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileData } from './b2b-requests-tile.data';\nimport { IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nimport { B2bRequestsTileLinks } from './components/account-b2b-requests-tile-links';\n\nexport interface IB2bRequestsTileViewProps extends IB2bRequestsTileProps {\n b2bRequestsTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsTile component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IB2bRequestsTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n const { className, heading, links } = config;\n\n const defaultClassName = 'ms-account-b2b-requests-tile';\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n b2bRequestsTile: {\n moduleProps: this.props,\n className: classnames(defaultClassName, config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: ArrayExtensions.hasElements(links) && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default B2bRequestsTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport 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: !this.props.context.request.params.isEditor && 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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): 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, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\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(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\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 private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrganizationUsersTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription =\n numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n const customerInformation = data.customerInformation.result;\n\n // Organization-users tile will not be render for non-admin users.\n if (!customerInformation?.IsB2bAdmin) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default OrganizationUsersTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationButton {\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 PasswordResetVerificationButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetVerificationButton;\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 IPasswordResetVerificationErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationError;\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 IPasswordResetVerificationInputProps {\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 IPasswordResetVerificationInput {\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 PasswordResetVerificationInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange\n}) => (\n \n);\n\nexport default PasswordResetVerificationInput;\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 IPasswordResetVerificationLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetVerificationLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetVerificationLabel;\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 IPasswordResetVerificationLoadingIcon {\n className: string;\n}\n\nconst PasswordResetVerificationLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default PasswordResetVerificationLoadingIcon;\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 IPasswordResetVerificationLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetVerificationLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetVerificationLoadingMessage;\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 IPasswordResetVerificationSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationSuccess;\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 PasswordResetVerificationButtonComponent from './components/password-reset-verification-button';\nimport PasswordResetVerificationErrorComponent from './components/password-reset-verification-error';\nimport PasswordResetVerificationInputComponent from './components/password-reset-verification-input';\nimport PasswordResetVerificationLabelComponent from './components/password-reset-verification-label';\nimport PasswordResetVerificationLoadingIconComponent from './components/password-reset-verification-loading-icon';\nimport PasswordResetVerificationLoadingMessageComponent from './components/password-reset-verification-loading-message';\nimport PasswordResetVerificationSuccessComponent from './components/password-reset-verification-success';\nimport { IPasswordResetVerificationConfig, IPasswordResetVerificationProps } from './password-reset-verification.props.autogenerated';\n\nexport interface IPasswordResetVerificationViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetVerificationItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationLocalAccount {\n localAccount: INodeProps;\n verificationControlWrapper: INodeProps;\n items: IPasswordResetVerificationItem[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationButtonsWrapper: INodeProps;\n verificationButtons: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetVerificationLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationViewProps {\n className: string;\n viewState: IPasswordResetVerificationViewState;\n loading: IPasswordResetVerificationLoading;\n passwordResetVerification: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetVerificationLocalAccount: IPasswordResetVerificationLocalAccount;\n}\n\n/**\n *\n * PasswordResetVerification component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordResetVerification extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset-verification';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private emailRegex: string;\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: IPasswordResetVerificationProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.templateVersion = '';\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: IPasswordResetVerificationProps,\n nextState: IPasswordResetVerificationViewState\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 passwordResetVerification: {\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 )\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 passwordResetVerificationLocalAccount: 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 _prePopulateData(): void {\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 if (obj.ID.toLowerCase() === 'email') {\n this.emailRegex = obj.PAT;\n } else if (obj.ID.toLowerCase() === 'emailverificationcontrol') {\n this.templateVersion = 'v2';\n }\n });\n if (!this.templateVersion) {\n this.templateVersion = 'v1';\n }\n }\n }\n\n private _updateErrorMessage(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: this.props.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(): IPasswordResetVerificationLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n items: [\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n )\n ],\n successMessage: [\n ,\n\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n \n ],\n verificationButtonsWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n verificationButtons: [\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(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): IPasswordResetVerificationItem {\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 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\nexport default PasswordResetVerification;\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 IPasswordResetVerificationItem,\n IPasswordResetVerificationLoading,\n IPasswordResetVerificationLocalAccount,\n IPasswordResetVerificationViewProps\n} from './password-reset-verification';\n\nconst PasswordResetVerificationItem: 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 verificationControlWrapper,\n items,\n successMessage,\n errorMessage,\n verificationButtonsWrapper,\n verificationButtons,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n \n {successMessage &&\n successMessage.map((message: React.ReactNode, index: number) => {\n return {message};\n })}\n {items &&\n items.map((item: IPasswordResetVerificationItem) => {\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 {verificationButtons &&\n verificationButtons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \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};\n\nconst PasswordResetVerificationLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetVerificationView: React.FC = props => {\n const {\n passwordResetVerification,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n passwordResetVerificationLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetVerificationLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetVerificationView;\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, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInButton {\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 SignInButton: 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 default SignInButton;\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 ISignInDescription {\n className: string;\n description: string;\n}\n\nconst SignInDescription: React.FC = ({ className, description }) =>

{description}

;\n\nexport default SignInDescription;\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 ISignInErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignInError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignInError;\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 ISignInInputProps {\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 ariaLabel?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignInInput {\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 SignInInput: React.FC = ({ id, type, value, pattern, className, maxLength, ariaLabel, onChange }) => (\n \n);\n\nexport default SignInInput;\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 ISignInLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignInLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignInLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInLink {\n id?: string;\n className: string;\n href: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n}\n\nconst SignInLink: React.FC = ({ id, className, href, telemetryContent, ariaLabel, text }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignInLink;\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 ISignInLoadingIcon {\n className: string;\n}\n\nconst SignInLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignInLoadingIcon;\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 ISignInLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignInLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignInLoadingMessage;\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 ISignInText {\n className: string;\n text: string;\n}\n\nconst SignInText: React.FC = ({ className, text }) => {text};\n\nexport default SignInText;\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 SignInButtonComponent from './components/sign-in-button';\nimport SignInDescriptionComponent from './components/sign-in-description';\nimport SignInErrorComponent from './components/sign-in-error';\nimport SignInInputComponent from './components/sign-in-input';\nimport SignInLabelComponent from './components/sign-in-label';\nimport SignInLinkComponent from './components/sign-in-link';\nimport SignInLoadingIconComponent from './components/sign-in-loading-icon';\nimport SignInLoadingMessageComponent from './components/sign-in-loading-message';\nimport SignInTextComponent from './components/sign-in-text';\nimport { ISignInConfig, ISignInProps, ISignInResources } from './sign-in.props.autogenerated';\n\nexport interface ISignInViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignInItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignInSocialItem {\n key: string;\n button: INodeProps;\n image: React.ReactNode;\n text: React.ReactNode;\n}\n\nexport interface ISignInB2BItem {\n key: string;\n button: INodeProps;\n text: React.ReactNode;\n}\n\nexport interface ISignInSocialAccount {\n socialAccounts: INodeProps;\n items: ISignInSocialItem[];\n}\n\nexport interface ISignInB2BAccount {\n socialAccounts: INodeProps;\n items: ISignInB2BItem[];\n}\nexport interface ISignInLocalAccount {\n localAccount: INodeProps;\n items: ISignInItem[];\n forgetPassword: React.ReactNode;\n disclaimer: React.ReactNode;\n error: React.ReactNode;\n signInButton: React.ReactNode;\n}\n\nexport interface ISignInLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignInViewProps {\n className: string;\n viewState: ISignInViewState;\n signIn: IModuleProps;\n loading: ISignInLoading;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n signInSection: INodeProps;\n signInSectionHeading: React.ReactNode;\n signInLocalAccount: ISignInLocalAccount;\n signInSocialAccount: ISignInSocialAccount;\n signInB2BAccount: ISignInB2BAccount;\n signUpSection: INodeProps;\n signUpSectionHeading: React.ReactNode;\n signUpDescription: React.ReactNode;\n signUpLink: React.ReactNode;\n}\n\n/**\n * SignIn 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 SignIn extends React.Component> {\n private readonly moduleClassName: string = 'ms-sign-in';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private emailId: 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: ISignInProps) {\n super(props);\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 this.emailId = 'logonIdentifier';\n }\n\n public componentDidMount(): void {\n this._prePopulateData();\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: ISignInProps, nextState: ISignInViewState): 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: ISignInConfig = this.props.config || {};\n const resources: ISignInResources = this.props.resources || {};\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signIn: {\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 signInSection: {\n className: `${this.moduleClassName}__sign-in-section`\n },\n signInSectionHeading: (\n \n ),\n signInLocalAccount: {\n localAccount: {\n className: `${this.moduleClassName}__account-items localAccount`\n },\n items: [\n this._renderInput(\n this.emailId,\n 'email',\n resources.emailAddressLabelText,\n resources.emailAddressAriaLabel,\n this.emailRegex\n ),\n this._renderInput('password', 'password', resources.passwordLabelText)\n ],\n forgetPassword: (\n \n ),\n disclaimer: config.signInDisclaimer && (\n \n ),\n error: ,\n signInButton: (\n \n )\n },\n signInSocialAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__social-accounts`\n },\n items: [\n this._renderSocialAccount(\n 'FacebookExchange',\n resources.facebookButtonText,\n resources.facebookButtonAriaLabel,\n config.facebookIcon\n ),\n this._renderSocialAccount(\n 'MicrosoftAccountExchange',\n resources.microsoftButtonText,\n resources.microsoftButtonAriaLabel,\n config.microsoftIcon\n )\n ]\n },\n signInB2BAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__b2b-social-accounts`\n },\n items: [\n this._renderB2BSocialAccount(\n 'StoreManagerB2BSignin',\n resources.b2bButtonText,\n resources.b2bButtonAriaLabel,\n config.displayB2bAccountManagerSignin\n )\n ]\n },\n signUpSection: {\n className: `${this.moduleClassName}__sign-up-section`\n },\n signUpSectionHeading: (\n \n ),\n signUpDescription: (\n \n ),\n signUpLink: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.signInDisclaimer = event.target.value);\n\n public handleSignInHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signInHeading.text = event.target.value);\n\n public handleSignUpHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signUpHeading.text = event.target.value);\n\n private readonly _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 && window['CONTENT'] && window['CONTENT']['email_pattern']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n this.emailRegex = window['CONTENT']['email_pattern'];\n }\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 // @ts-expect-error\n this.emailId = (window.SA_FIELDS.AttributeFields || [])[0].ID || this.emailId;\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignInResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n requiredField_email: resources.requriedEmailError,\n requiredField_password: resources.requriedPasswordError,\n invalid_email: resources.invalidEmailError,\n invalid_password: resources.invalidPasswordError,\n unknown_error: resources.unknownError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private _renderInput(id: string, type: string, labelText: string, ariaLabel?: string, pattern?: string): ISignInItem {\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 error: (\n \n ),\n input: (\n \n )\n };\n }\n\n private _renderSocialAccount(id: string, text: string, ariaLabel: string, iconImage?: Msdyn365.IImageData): ISignInSocialItem {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n image: this._createImageMarkup(iconImage),\n text: \n };\n }\n\n private _renderB2BSocialAccount(\n id: string,\n text: string,\n ariaLabel: string,\n _displayB2bAccountManagerSignin: boolean | undefined\n ): ISignInB2BItem | null {\n if (_displayB2bAccountManagerSignin) {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n text: \n };\n }\n return null;\n }\n\n private _createImageMarkup(iconImage?: Msdyn365.IImageData): React.ReactNode | null {\n if (iconImage) {\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings || {},\n imageSettings: iconImage && iconImage.imageSettings\n };\n const pictureClassName = `${this.moduleClassName}__social-account-picture`;\n return (\n
\n \n
\n );\n }\n return null;\n }\n}\n\nexport default SignIn;\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 ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps\n} from './sign-in';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignInView: React.FC = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription,\n signUpLink\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n {B2BAccount(signInB2BAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpLink}\n \n \n \n );\n};\n\nexport default SignInView;\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, { IRequestContext, getUrlSync } 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, showBecomeSellerLink } = config;\n const {\n businessUserActionButtonText,\n businessUserAddUserButtonText,\n businessUserLoadingMessage,\n businessUserEmptyListMessage,\n businessUserErrorGettingUsersMessage,\n userAccountStatementLabel,\n fullOrganizationLabel,\n requestStatementButtonLabel,\n promoteToSellerActionLabel,\n requestAccountStatementActionLabel,\n requestOrganizationStatementActionLabel,\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: showBecomeSellerLink ? (\n \n ) : (\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 hasActionError: false,\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 this.setState({\n formType: FormType.None,\n isModalOpen: false\n });\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\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, hasActionError } = 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 hasActionError && (\n \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 _promoteToSeller = () => {\n const promoteToSellerUrl = getUrlSync('businessPartnerPromotion', this.props.context.actionContext);\n if (promoteToSellerUrl && MsDyn365.isBrowser) {\n window.location.href = promoteToSellerUrl;\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 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, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

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

{props.resources.emptyCartText}

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

\n

{groupTitle}

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

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

\n ) : null}\n

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

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\n"],"names":["AttributeDataType","AttributeDataTextMap","0","2","3","4","5","6","CommerceAttributesParser","constructor","attributes","_attributes","_attributesMap","this","attributeValues","psuedoAttributeValues","forEach","attribute","Name","parsedAttribute","_parseGetAttribute","_objectSpread","name","attr","_CommerceAttributesPa","value","hash","Object","entries","map","_ref","TextValue","toString","DataTypeValue","Text","_dataTypeMap","mappedTextValue","type","get","commerceAttr","Currency","Decimal","Integer","TrueFalse","DateTime","async","updateSubscription","cart","commerceValues","context","cartState","status","result","newValue","changedProperty","ExtensionProperties","property","find","extension","Key","Value","push","findAndUpdateLine","updatedCart","updateAsync","callerContext","actionContext","update","GetCheckoutCartInput","request","apiSettings","refreshCart","telemetry","error","isProductSubscribable","productAttributes","_productAttributes$fi","SubscriptionCommerceValues","SUBSCRIPTION_PRODUCT","BooleanValue","getSubscriptionValues","_cart$ExtensionProper","_cart$ExtensionProper2","_freq$Value","_name$Value","freq","ext","SUBSCRIPTION_FREQUENCY","SUBSCRIPTION_NAME","frequency","StringValue","isLineSubscriptionLine","line","_line$ExtensionProper","SUBCRIPTION_LINE","filterCartLines","_cart$CartLines","output","subscriptionLines","lines","CartLines","clearSubscription","editObj","PdpAttributes","React","props","super","_attributesCollected","render","simpleProductData","data","product","productData","productSpecificationData","_parser","_getPsuedoSimpleAttributes","_attributesListRender","children","every","element","className","config","cssClass","simpleProduct","attributeArray","attributeName","pos","key","_renderAttribute","cmsAttribute","renderPosition","_parseAttribute","startsWith","_urlRender","_plaintextRender","_dateRender","_booleanRender","text","textDisplay","arguments","length","undefined","RichTextComponent","suffixText","_renderCell","date","Date","toUTCString","bool","booleanDisplay","url","CallToAction","title","labelOverride","color","href","layout","openInNewTab","cellBody","attributeClass","noLabel","ProductAttributes","_productAttributeFactSheetURL","_productAttributeFactSheetHeader","_productAttributeTastingNotes","_productAttributeCookbookDescription","_productAttributeCookbookDescriptionHeader","_productAttributeFoodPairings","_productAttributeWineAnalysis","_productAttributeWineBlend","_productAttributeWineAging","_productAttributeWineAlcohol","_productAttributeWinePH","_productAttributeWineTA","_productAttributeWineF","content","_renderProductAttributes","filter","locale","_compareStrings","productattribute","toUpperCase","_renderWineAttributes","Heading","headingTag","attributeHeading","suffix","toLowerCase","attributeValue","_renderProductCell","keyName","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","DateTimeOffsetValue","IntegerValue","FloatValue","string1","string2","ignoreCase","useLocale","toLocaleLowerCase","ProductDataEntry","hasTastingNotes","productTastingNotesItems","hasAttributes","productAttributesItems","classnames","customClass","productImage","_renderHeroImage","productCaption","_renderRichText","productHeading","_renderHeading","productSubHeading","productDescription","productTastingNotesHeading","_renderTastingNotesItems","productAttributesHeading","_renderProductAttributesItems","heading","tag","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","Image","assign","gridSettings","imageSettings","item","idx","tastingNotesCustomClass","tastingNotesIcon","tastingNotesName","attributeCustomClass","attributeText","id","ariaLabel","disabled","onClick","Button","message","errorClassName","role","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","pattern","onChange","forId","htmlFor","successClassName","SignUp","moduleClassName","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","resources","obj","ID","emailRegex","PAT","isEmailVerificationRequried","VERIFY","newPasswordRegex","reenterPasswordRegex","UX_INPUT_TYPE","PAT_DESC","invalidPasswordError","invalidEmailAddressError","errorMessages","required_field","requiredFieldMissingError","passwordDefaultRegex","emailEntered","componentDidMount","componentDidUpdate","viewProps","viewState","isShowLoading","signUp","moduleProps","loading","modal","Modal","isOpen","modalBody","ModalBody","icon","SignUpLoadingIconComponent","SignUpLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","signUpLocalAccount","_renderLocalAccount","renderView","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","emailAddressLabelText","passwordLabelText","confirmPasswordLabelText","emailVerification","isRequired","email","verificationCodeLabelText","buttonWrapper","buttons","SignUpButtonComponent","sendCodeButtonAriaLabel","_isFormValid","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","successMessage","SignUpSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","errorMessage","SignUpErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","passwordEntryMismatchError","requiredFieldMissingSummaryError","fieldIncorrectError","disclaimer","pwRequirements","labelText","wrapper","label","SignUpLabelComponent","input","SignUpInputComponent","e","target","__decorate","observable","observer","SignUpItem","Node","SignUpEmailVerification","_ref2","button","SignUpLoading","_ref4","_showPassword","event","newPasswordState","document","getElementById","reenterPasswordState","iconElements","getElementsByClassName","i","Module","_ref3","isNewPassword","tabIndex","onKeyPress","index","LocalAccount","links","cta","btnClass","linkText","linkUrl","destinationUrl","rel","SubscriptionRestrictionButton","reaction","_this$props$data$cart","_this$props$data$cart2","_this$props$data$cart3","forceUpdate","_this$props$data$cart4","values","paragraph","image","contentBlockTitle","imageProps","contentBlockLinks","LinksComponent","contentBlockText","Msdyn365","contentBlockImage","subscriptionRestrictionButtonViewProps","moduleClass","contentBlockContainer","imageContainer","detailsContainer","hasFrequency","hasName","requireFrequency","requireName","shouldDisable","AccountCustomerBalanceTile","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","state","_initState","hasError","setState","ErrorComponent","apiGenericErrorMessage","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","isCustomerAccountPaymentEnabled","isDetailsLinkDisplayed","onTextChange","requestContext","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","computed","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","link","contentAction","etext","getTelemetryAttributes","editableLink","additionalProperties","editProps","AccountGenericTile","handleHeadingChange","handleLinkTextChange","linkIndex","onEdit","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","description","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","format","DescriptionComponent","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","params","isEditor","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","IsHidden","RecordId","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","customerInformation","featureState","feature","IsEnabled","disableBtn","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","ref","attributesContainerRef","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","innerRef","editRef","_saveAttributes","_disableAttributes","phoneSectionHeading","replace","_onPhoneChange","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","_renderIntegerDecimalInput","_renderTextInputOrSelect","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","IsMandatory","isEnumeration","IsEnumeration","EnumerationDetails","hasNoValue","_onAttributeSelect","selected","option","EnumerationValue","toggleState","arialabel","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeError","StringExtensions","isNullOrWhitespace","attributePayloadData","isMandatory","MsDyn365","isBrowser","current","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","customer","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","String","DecimalValue","keys","_addOrUpdateAttribute","hasValue","payloadData","dataTypeValue","decimalValue","Number","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","NameTranslations","KeyName","Phone","VATNumber","VatNumber","updateCustomerAttributesInput","AccountNumber","updateCustomerAttributes","initialCustomerAttributes","exception","debug","focus","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","isDisabled","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","buttonYesText","buttonNoText","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","_this$props$context$a","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","FirstName","LastName","AccountProfileItem","ArrayExtensions","hasElements","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountWelcomeTile","accountInfo","accountInformation","RequestsTableColumnHeader","getUserName","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","cultureFormatter","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","tableData","operationRequests","_request$TypeValue","_request$StatusValue","row","b2bRequestsTypeColumn","TableDataType","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","isMobile","mobileExcludedColumns","sortable","columnSortAriaLabel","rows","editLinkText","deleteLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","reqContext","URL","location","requestUrl","isSingleSelectOnly","actions","onDelete","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","b2bRequestsStatus","table","defaultClassName","B2bRequestsTileLinks","B2bRequestsTile","b2bRequestsTile","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","issueLoyalty","then","catch","TelemetryConstant","SignIn","loyaltySignInAttributes","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","hasLoyaltyAccount","CardTenderTypeValue","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","toggle","onToggle","applicationNode","returnFocusRef","returnRef","modalHeader","ModalHeader","modalFooter","ModalFooter","cancelButton","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","isJoining","substring","qsps","qsp","splitQsp","isModalOpen","hideToggle","slots","serviceTerms","modalToggle","joinLoyaltytermsToggleText","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","fullCard","GetLoyaltyCardInput","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","OrganizationUsersTile","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","IsB2bAdmin","PasswordResetVerification","getValue","v1Value","v2Value","templateVersion","EmailRegex","defaultRegex","source","passwordResetVerification","PasswordResetVerificationLoadingIconComponent","PasswordResetVerificationLoadingMessageComponent","passwordResetVerificationLocalAccount","verifying_blurb","verificationControlWrapper","PasswordResetVerificationSuccessComponent","PasswordResetVerificationErrorComponent","verificationButtonsWrapper","verificationButtons","PasswordResetVerificationButtonComponent","buttonsWrapper","continueButtonAriaLabel","continueButtonText","cancelButtonAriaLabel","verificationSuccessModal","verificationSuccessModalMessage","cssClassName","PasswordResetVerificationLabelComponent","PasswordResetVerificationInputComponent","PasswordResetVerificationItem","PasswordResetVerificationLoading","PasswordReset","PasswordRegex","passwordReset","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","passwordResetLocalAccount","newPasswordLabelText","PasswordResetErrorComponent","PasswordResetButtonComponent","saveButtonAriaLabel","saveButtonText","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","handleParagraphChange","signInDisclaimer","handleSignInHeadingChange","signInHeading","handleSignUpHeadingChange","signUpHeading","emailId","SA_FIELDS","AttributeFields","requiredField_email","requriedEmailError","requiredField_password","requriedPasswordError","invalid_email","invalid_password","unknown_error","unknownError","signIn","SignInLoadingIconComponent","SignInLoadingMessageComponent","signInSection","signInSectionHeading","signInLocalAccount","emailAddressAriaLabel","forgetPassword","SignInLinkComponent","forgotPasswordButtonAriaLabel","forgotPasswordButtonText","SignInErrorComponent","signInButton","SignInButtonComponent","loginButtonAriaLabel","loginButtonText","signInSocialAccount","socialAccounts","_renderSocialAccount","facebookButtonText","facebookButtonAriaLabel","facebookIcon","microsoftButtonText","microsoftButtonAriaLabel","microsoftIcon","signInB2BAccount","_renderB2BSocialAccount","b2bButtonText","b2bButtonAriaLabel","displayB2bAccountManagerSignin","signUpSection","signUpSectionHeading","signUpDescription","SignInDescriptionComponent","signUpDescriptionText","signUpLink","signUpButtonAriaLabel","SignInLabelComponent","SignInInputComponent","iconImage","_createImageMarkup","SignInTextComponent","_displayB2bAccountManagerSignin","pictureClassName","shouldSkipToMainImage","SignInLoading","SocialAccount","B2BAccount","FormInput","fieldReference","placeholder","FormLabel","asteriskText","FormButton","FormFieldError","FormType","InputType","InputID","renderInputSection","inputs","asteriskAfterLabel","onInputChange","maxChars","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","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","reload","trace","addOrganizationUser","AddOrganizationUserInput","businessUserActionRetailErrorMsg","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","lastName","possibleCell","dataCell","_handleDeleteIcon","displayedUserData","Price","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","isReady","_isFormReady","formItem","match","_formatPrice","price","_getCurrentUrl","_getViewport","device","Type","innerWidth","sm","md","_toggleStatementRequestDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_showRequestStatementModal","isFullOrg","statementRequestFullOrg","isStatementRequestModalOpen","_promoteToSeller","promoteToSellerUrl","_requestStatement","currentUser","_getB2BUserId","statementRequest","FromDate","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","BusinessPartnerUsersDataActions","_closeStatementRequestModal","_this$statementReques","statementRequestButtonReference","_onSelectRow","records","selectedRow","rowProps","_toggleModal","Status","_viewport","_updateViewport","submitButtonReference","addedReference","statementRequestMaxDateString","toISOString","businessUserSelectedUserDisplayName","addEventListener","componentWillUnmount","removeEventListener","_this$formChildRefere","_this$submitButtonRef","_this$props$data$cust","showBecomeSellerLink","businessUserActionButtonText","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","userAccountStatementLabel","fullOrganizationLabel","requestStatementButtonLabel","promoteToSellerActionLabel","requestAccountStatementActionLabel","requestOrganizationStatementActionLabel","statementRequestModalHeaderLabel","cancelLabel","fromDateLabel","toDateLabel","submitRequestLabel","sendToEmailLabel","selectedUserLabel","hasUsers","AddUser","addUserAttributes","errorProps","OrganizationUserList","moduleContainer","addUserButton","noUsersText","modalState","organizationListTable","_createTableProps","toggleModal","form","_renderUserForm","_renderUserDetails","requestAccountStatementButton","AdminRequestStatementButton","buttonReference","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","promoteToSellerLabel","onPromoteToSeller","requestStatementModal","RequestStatementModal","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","modalHeaderLabel","onSubmitRequest","selectedUser","selectedOrganizationLabel","selectedUserName","modalAriaLabel","maxDateString","tableSort","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserPaginationAriaLabel","_createTableItems","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","resourcePrefix","tableAriaLabel","tableTabIndex","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","FullName","buttonReferences","delete","_this$state$reference","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","modalClassName","FormWrapper","modalHeading","modalDescription","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","BusinessFormItem","BusinessUserForm","_renderModal","BusinessUserDetails","userFullName","headingSection","bodySection","footerSection","wrapClassName","autoFocus","fade","ButtonList","_getForm","formProps","CatalogPicker","handleTextChange","_heading$tag","_this$props$data$cata","catalogPickerHeading","_moduleClassName","isCatalogsAvailable","catalogs","catalogPickerParagraph","catalogValidationText","handleText","catalogPicker","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","fullUrl","searchParams","set","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","firstOrDefault","Images","src","generateImageUrl","Uri","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","deliveryOption","_props$cart","_props$context$action","_props$cart2","renderModuleAttributes","promotionOptions","hasInvoiceLine","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","alert","emptyMessage","backToShoppingLink","list","moreButton","SocialShare","socialShareItems","cookies","isConsentGiven","viewprops","SocialShareList","caption","orientation","SocialShareItem","SocialShareItemElements","SocialShareView","SocialShareElement"],"sourceRoot":""}