{"version":3,"file":"static/js/14.e4d377dac390e88b6889.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-profile/components/aaa_account-profile-text.tsx?3135","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-profile/components/aaa_account-profile-description.tsx?10d9","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-profile/components/aaa_account-profile-attributes.tsx?afc5","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-profile/components/aaa_account-profile-links.tsx?49d4","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-profile/aaa_account-profile.tsx?be38","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_account-profile/aaa_account-profile.view.tsx?8b0b","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_b2b_order_history/aaa_b2b_order_history.tsx?df83","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_b2b_order_history/aaa_b2b_order_history.view.tsx?1395","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_pricefactorgrid/aaa_pricefactorgrid.tsx?8257","webpack://Msdyn365.Commerce.Online/./src/modules/aaa_pricefactorgrid/aaa_pricefactorgrid.view.tsx?ad8c","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/media-gallery.view.tsx?3130","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/reviews-list.view.tsx?7893","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/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/check-in-for-pickup/check-in-confirmation.tsx?406f","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-error.tsx?e789","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.tsx?8686","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?bd7a","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.categorysuggest.tsx?6bcf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.mobile.empty.tsx?ff32","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.form.tsx?d41a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.keywordsuggest.tsx?2724","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.productsuggest.tsx?6616","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search.view.tsx?bfa7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/sign-in.view.tsx?048a"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileText {\r\n className: string;\r\n text: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\r\n\r\nexport default IAccountProfileText;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileDescription {\r\n className: string;\r\n description: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\r\n

{description}

\r\n);\r\n\r\nexport default IAccountProfileDescription;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\r\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IAaaAccountProfileData } from '../aaa_account-profile.data';\r\nimport { IAaa_accountProfileProps } from '../aaa_account-profile.props.autogenerated';\r\nimport TextComponent from './aaa_account-profile-text';\r\nimport DescriptionComponent from './aaa_account-profile-description';\r\n\r\ninterface IAttributePropertiesType {\r\n Name?: string;\r\n IsMandatory?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileAttributesProps {\r\n accountProfileProps: IAaa_accountProfileProps;\r\n stockistName: any;\r\n}\r\n\r\nexport enum AccountAttributeDataTypeValue {\r\n Decimal = 3,\r\n Integer = 4,\r\n Text = 5,\r\n TrueFalse = 6\r\n}\r\n\r\nexport interface IAttributePayloadData {\r\n recordId?: number;\r\n name?: string;\r\n dataTypeValue?: number;\r\n isEnumeration?: boolean;\r\n lowerBoundValue?: number;\r\n upperBoundValue?: number;\r\n decimalValue?: number;\r\n integerValue?: number;\r\n textValue?: string;\r\n booleanValue?: boolean;\r\n isMandatory?: boolean;\r\n defaultValue?: string;\r\n}\r\n\r\nexport interface IAccountProfileAttributesState extends React.ComponentState {\r\n editAttributes: boolean;\r\n phone: string;\r\n vatNumber: string;\r\n attributes: IDictionary;\r\n attributeError: IDictionary;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfileAttributes class.\r\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\r\n */\r\n@observer\r\nclass AccountProfileAttributes extends React.Component {\r\n private readonly attributePayloadData: IAttributePayloadData[];\r\n\r\n @observable private isUpdatingAttributes: boolean = false;\r\n\r\n @observable private gotException: boolean = false;\r\n\r\n private hasError: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private initialAttributes: IDictionary;\r\n\r\n private initialCustomerAttributes?: CustomerAttribute[];\r\n\r\n private initialPhone: string;\r\n\r\n private initialVatNumber: string;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly editRef: React.RefObject;\r\n\r\n private readonly attributesContainerRef: React.RefObject;\r\n\r\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\r\n\r\n private readonly maxIntegerLimit: number = 2_100_000_000;\r\n\r\n private readonly minIntegerLimit: number = -2_100_000_000;\r\n\r\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\r\n\r\n private readonly minDecimalLimit: number = -7_900_000_000_000;\r\n\r\n private readonly maxStringLength: number = 1000;\r\n\r\n private readonly maxVATNumberLength: number = 20;\r\n\r\n private readonly maxPhoneLength: number = 25;\r\n\r\n constructor(props: IAccountProfileAttributesProps) {\r\n super(props);\r\n this.state = {\r\n editAttributes: false,\r\n phone: '',\r\n vatNumber: '',\r\n attributes: {},\r\n attributeError: {}\r\n };\r\n this.initialAttributes = {};\r\n this.initialCustomerAttributes = [];\r\n this.initialPhone = '';\r\n this.initialVatNumber = '';\r\n this.attributePayloadData = [];\r\n const telemetryPageName =\r\n (this.props.accountProfileProps &&\r\n this.props.accountProfileProps.context &&\r\n this.props.accountProfileProps.context.request &&\r\n this.props.accountProfileProps.context.request.telemetryPageName) ||\r\n '';\r\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\r\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\r\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n this.editRef = React.createRef();\r\n this.attributesContainerRef = React.createRef();\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._buildPayloadData();\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n reaction(\r\n () => this.props.accountProfileProps.data.customerInformation.result,\r\n () => {\r\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\r\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n }\r\n );\r\n reaction(\r\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\r\n () => {\r\n this._buildPayloadData();\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return this._renderAttributes();\r\n }\r\n\r\n private readonly _renderAttributes = (): JSX.Element | null => {\r\n const { config, data, resources } = this.props.accountProfileProps;\r\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\r\n const additionalInformationSectionHeading =\r\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\r\n const showAttributes = config.showAttributes || '';\r\n const attributes = showAttributes.split(',');\r\n const elements = attributes.map(att => {\r\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\r\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\r\n ) || { RecordId: 0 };\r\n return this._renderAttribute(attributeDefinition);\r\n });\r\n if (data && data.customerInformation && data.customerInformation.result && data.customerInformation.result.IsB2b) {\r\n elements.splice(0, 0, this._renderBoutiqueAttribute());\r\n }\r\n\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\r\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\r\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\r\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n return (\r\n \r\n {config.showPhone && this._renderPhone()}\r\n {config.showVatNumber && this._renderVatNumber()}\r\n {elements}\r\n {this.gotException && (\r\n
\r\n \r\n
\r\n )}\r\n {!edit && (\r\n \r\n {resources.attributesEditButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesSaveButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesCancelButtonText}\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderPhone = (): JSX.Element | null => {\r\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {phoneSectionHeading && }\r\n \r\n {this._renderError('Phone')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderVatNumber = (): JSX.Element | null => {\r\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {vatNumberSectionHeading && }\r\n \r\n {this._renderError('VATNumber')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\r\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n case AccountAttributeDataTypeValue.Decimal:\r\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.Text:\r\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n return this._renderBoolean(customAttribute, className, editAttributes);\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n private readonly _renderIntegerDecimalInput = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderTextInputOrSelect = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n if (isEnumeration && customAttribute.EnumerationDetails) {\r\n const value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n return (\r\n
\r\n \r\n \r\n {hasNoValue && (\r\n \r\n )}\r\n {customAttribute.EnumerationDetails.map(option => {\r\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\r\n return (\r\n \r\n {option.EnumerationValue}\r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderBoutiqueAttribute = (): JSX.Element | null => {\r\n const displayName: string = 'Boutique Name';\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n private readonly _renderBoolean = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n let value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n const render = !(hasNoValue && !editAttributes);\r\n value = value || 'false';\r\n const toggleState = (value === 'true' && 'enable') || 'disable';\r\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\r\n const ariaPressed = (value === 'true' && true) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n\r\n let toggleValue = 'false';\r\n if (value === 'true') {\r\n toggleValue = 'false';\r\n } else {\r\n toggleValue = 'true';\r\n }\r\n\r\n return (\r\n \r\n {customAttribute.AttributeTypeName === 'Stay updated with our latest news & events' ? (\r\n <>\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n {render && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\r\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\r\n const hasError = !StringExtensions.isNullOrWhitespace(error);\r\n if (hasError) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n return {\r\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\r\n IsMandatory: isMandatory\r\n };\r\n };\r\n\r\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ phone: value });\r\n };\r\n\r\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ vatNumber: value });\r\n };\r\n\r\n private readonly _enableAttributes = () => {\r\n this.hasError = false;\r\n\r\n // To clear exception messages\r\n this.gotException = false;\r\n this.setState({ editAttributes: true, attributeError: {} });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n if (this.attributesContainerRef.current) {\r\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\r\n this.attributeClassName\r\n );\r\n if (attributes && attributes.length > 0) {\r\n this._setFocus(attributes[0] as HTMLElement);\r\n }\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _disableAttributes = () => {\r\n this.setState({\r\n editAttributes: false,\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\r\n event: React.MouseEvent\r\n ) => {\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.currentTarget.selectedOptions[0].value;\r\n const index = event.currentTarget.selectedOptions[0].index;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n },\r\n selectedIndex: {\r\n ...this.state.selectedIndex,\r\n [name]: index\r\n }\r\n });\r\n };\r\n\r\n private readonly _getAttributes = () => {\r\n const { config, data } = this.props.accountProfileProps;\r\n const showAttributes = config.showAttributes || '';\r\n const showAttributesArray = showAttributes.split(',');\r\n const customer = data.customerInformation.result;\r\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\r\n const attributes: IDictionary = {};\r\n\r\n showAttributesArray.forEach(showAttribute => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\r\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\r\n let value: string = '';\r\n if (attribute && attribute.AttributeValue) {\r\n const name = (attribute && attribute.Name) || '';\r\n switch (attribute.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n if (attribute.AttributeValue.IntegerValue) {\r\n value = String(attribute.AttributeValue.IntegerValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n if (attribute.AttributeValue.DecimalValue) {\r\n value = String(attribute.AttributeValue.DecimalValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n if (attribute.AttributeValue.StringValue) {\r\n value = attribute.AttributeValue.StringValue;\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n if (attribute.AttributeValue.BooleanValue !== null) {\r\n value = String(attribute.AttributeValue.BooleanValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n }\r\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\r\n attributes[showAttribute] = '';\r\n }\r\n if (value.length === 0 && defaultValue) {\r\n attributes[showAttribute] = String(defaultValue);\r\n }\r\n });\r\n if (Object.keys(this.initialAttributes).length === 0) {\r\n this.initialAttributes = attributes;\r\n }\r\n this.setState({ attributes });\r\n };\r\n\r\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\r\n const { resources } = this.props.accountProfileProps;\r\n const { phone, vatNumber } = this.state;\r\n const attributeError: IDictionary = {};\r\n let hasError: boolean = false;\r\n let hasValue: boolean = true;\r\n for (const [key, value] of Object.entries(this.state.attributes)) {\r\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\r\n if (payloadData) {\r\n switch (payloadData.dataTypeValue) {\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const decimalValue = Number(value);\r\n if (isNaN(decimalValue)) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (decimalValue > this.maxDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (decimalValue < this.minDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.decimalValue = decimalValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Integer:\r\n const integerValue = Number(value);\r\n if (isNaN(integerValue) || value.includes('.')) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (integerValue > this.maxIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (integerValue < this.minIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.integerValue = integerValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n let trimValue = '';\r\n if (!StringExtensions.isNullOrWhitespace(value)) {\r\n trimValue = value.trim();\r\n }\r\n if (trimValue.length > this.maxStringLength) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputStringMaxLengthErrorText,\r\n payloadData.name,\r\n this.maxStringLength\r\n );\r\n hasError = true;\r\n }\r\n if (!hasError) {\r\n payloadData.textValue = trimValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n payloadData.booleanValue = value === 'true';\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n\r\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\r\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\r\n hasError = true;\r\n }\r\n\r\n const custmerAttributes: any = (customer && customer.Attributes) || [];\r\n const attribute = custmerAttributes.find((att: any) => att.Name === key);\r\n const index = custmerAttributes.findIndex((att: any) => att.Name === key);\r\n\r\n if (index !== -1 && !hasValue) {\r\n custmerAttributes.splice(index, 1);\r\n }\r\n\r\n if (!hasError && hasValue) {\r\n if (attribute) {\r\n attribute.Attribute = undefined;\r\n attribute.DataTypeValue = payloadData.dataTypeValue;\r\n attribute.Name = payloadData.name;\r\n attribute.RecordId = payloadData.recordId;\r\n attribute.Units = undefined;\r\n attribute.AttributeValue = {\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n };\r\n attribute.ExtensionProperties = [];\r\n attribute.NameTranslations = [];\r\n } else {\r\n custmerAttributes.push({\r\n ['@odata.type']: '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\r\n Attribute: undefined,\r\n DataTypeValue: payloadData.dataTypeValue,\r\n KeyName: payloadData.name,\r\n Name: payloadData.name,\r\n RecordId: payloadData.recordId,\r\n Units: undefined,\r\n AttributeValue: {\r\n ['@odata.type']: '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n },\r\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\r\n ExtensionProperties: [],\r\n 'NameTranslations@odata.type':\r\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\r\n NameTranslations: []\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (phone.trim().length > this.maxPhoneLength) {\r\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\r\n hasError = true;\r\n } else {\r\n customer.Phone = phone.trim();\r\n }\r\n\r\n if (vatNumber.trim().length > this.maxVATNumberLength) {\r\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\r\n hasError = true;\r\n } else {\r\n customer.VatNumber = vatNumber.trim();\r\n }\r\n\r\n this.hasError = hasError;\r\n this.setState({ attributeError });\r\n };\r\n\r\n private readonly _saveAttributes = async () => {\r\n const { context, data } = this.props.accountProfileProps;\r\n const customer = data.customerInformation.result;\r\n\r\n if (customer && context) {\r\n this._addOrUpdateAttribute(customer);\r\n const input = new updateCustomerAttributesInput(\r\n customer.AccountNumber,\r\n customer.Attributes || [],\r\n context.request.apiSettings,\r\n customer.Phone,\r\n customer.VatNumber\r\n );\r\n\r\n this.isUpdatingAttributes = true;\r\n this.gotException = false;\r\n\r\n if (!this.hasError) {\r\n this.setState({ editAttributes: false });\r\n try {\r\n await updateCustomerAttributes(input, context.actionContext);\r\n } catch (error) {\r\n this.gotException = true;\r\n customer.Attributes = this.initialCustomerAttributes;\r\n if (context.telemetry) {\r\n context.telemetry.exception(error);\r\n context.telemetry.debug('Unable to update customer attributes');\r\n }\r\n this.setState({\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n }\r\n this.setState({ editAttributes: false });\r\n if (!this.gotException) {\r\n this.initialAttributes = this.state.attributes;\r\n this.initialCustomerAttributes = customer.Attributes;\r\n this.initialPhone = this.state.phone;\r\n this.initialVatNumber = this.state.vatNumber;\r\n }\r\n }\r\n\r\n this.isUpdatingAttributes = false;\r\n\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n }\r\n };\r\n\r\n private readonly _setFocus = (element: HTMLElement | null) => {\r\n element?.focus();\r\n };\r\n\r\n private readonly _buildPayloadData = () => {\r\n const { data } = this.props.accountProfileProps;\r\n const attributeDefinitions = data.attributeDefinitions.result || [];\r\n const attributes: IDictionary = {};\r\n\r\n attributeDefinitions.forEach(attributeDefinition => {\r\n const attributePayloadData: IAttributePayloadData = {};\r\n attributePayloadData.recordId = attributeDefinition.RecordId;\r\n attributePayloadData.name = attributeDefinition.Name;\r\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\r\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\r\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\r\n switch (attributeDefinition.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\r\n if (attributePayloadData.name && defaultIntegerValue) {\r\n attributePayloadData.defaultValue = String(defaultIntegerValue);\r\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\r\n if (attributePayloadData.name && defaultDecimalValue) {\r\n attributePayloadData.defaultValue = String(defaultDecimalValue);\r\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\r\n if (attributePayloadData.name && defaultStringValue) {\r\n attributePayloadData.defaultValue = defaultStringValue;\r\n attributes[attributePayloadData.name] = defaultStringValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n const defaultBooleanValue =\r\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\r\n if (attributePayloadData.name) {\r\n attributePayloadData.defaultValue = String(defaultBooleanValue);\r\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n this.attributePayloadData.push(attributePayloadData);\r\n });\r\n Object.keys(attributes).length > 0 && this.setState({ attributes });\r\n };\r\n\r\n private readonly _getCustomerPhoneAndVatNumber = () => {\r\n const customer = this.props.accountProfileProps.data.customerInformation.result;\r\n const phone = (customer && customer.Phone) || '';\r\n const vatNumber = (customer && customer.VatNumber) || '';\r\n this.setState({ phone, vatNumber });\r\n if (this.initialPhone.length === 0) {\r\n this.initialPhone = phone;\r\n }\r\n if (this.initialVatNumber.length === 0) {\r\n this.initialVatNumber = vatNumber;\r\n }\r\n };\r\n}\r\n\r\nexport default AccountProfileAttributes;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ILinkData } from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nconst AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n linkdata.forEach((link, index) => {\r\n payLoad.contentAction.etext = link.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-account-profile__section-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n\r\nexport default AccountProfileLinks;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { updateCustomerPersonalization, updateCustomerPersonalizationInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IAaaAccountProfileData } from './aaa_account-profile.data';\r\nimport {\r\n IAaa_accountProfileProps,\r\n IEmailAddressSectionHeadingData,\r\n IHeadingData,\r\n INameSectionHeadingData\r\n} from './aaa_account-profile.props.autogenerated';\r\nimport AccountProfileAttributes from './components/aaa_account-profile-attributes';\r\nimport DescriptionComponent from './components/aaa_account-profile-description';\r\nimport LinksComponent, { ILinksData } from './components/aaa_account-profile-links';\r\nimport TextComponent from './components/aaa_account-profile-text';\r\nimport { getBMAStockistAsync } from '../../dataActions/DataActionExtension.g';\r\n\r\nexport interface IAccountPreference {\r\n accountPreference: INodeProps;\r\n heading: React.ReactNode;\r\n buttonWrapper: INodeProps;\r\n buttonYesText: React.ReactNode;\r\n buttonNoText: React.ReactNode;\r\n button: React.ReactNode;\r\n description: React.ReactNode;\r\n onUpdateAccountPreference(preferenceType?: string): void;\r\n}\r\n\r\nexport interface IAccountPreferences {\r\n accountPreferences: INodeProps;\r\n heading?: React.ReactNode;\r\n personalization: IAccountPreference;\r\n extraPreferences?: IAccountPreference[];\r\n}\r\n\r\nexport interface IAccountProfileItem {\r\n AccountProfileItem: INodeProps;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountCustomerAttributes {\r\n customerAttributes?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountProfileViewProps extends IAaa_accountProfileProps {\r\n AccountProfile: IModuleProps;\r\n accountProfileWrapper?: INodeProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n emailSection: IAccountProfileItem;\r\n nameSection: IAccountProfileItem;\r\n preferenceSection: IAccountPreferences;\r\n customerAttributesWrapper?: INodeProps;\r\n customerAttributesSection?: IAccountCustomerAttributes;\r\n stockistName: any;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfile component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountProfile extends React.Component, any> {\r\n @observable private isUpdatingPreference: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: IAaa_accountProfileProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.state = {\r\n stockistName: ''\r\n };\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n void this.getStockistInfo();\r\n }\r\n\r\n // public shouldComponentUpdate(nextProps: IAaa_accountProfileProps): boolean {\r\n // if (this.props.data === nextProps.data) {\r\n // return false;\r\n // }\r\n // return true;\r\n // }\r\n\r\n public render(): JSX.Element {\r\n const { config, resources, data } = this.props;\r\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\r\n\r\n const { editButtonText, editButtonAriaLabel } = resources;\r\n const customerInformation = data.customerInformation.result;\r\n\r\n // As per the design, phone and vat numbers are part of the profile attributes section\r\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\r\n const editLink: ILinksData = {\r\n linkUrl: {\r\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\r\n },\r\n linkText: editButtonText,\r\n ariaLabel: editButtonAriaLabel\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n AccountProfile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-profile', config.className)\r\n },\r\n accountProfileWrapper: {\r\n className: classnames('ms-account-profile-wrapper')\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n emailSection: this._renderEmailSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\r\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\r\n customerInformation && customerInformation.Email\r\n ),\r\n nameSection: this._renderNameSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\r\n nameSectionHeading as INameSectionHeadingData,\r\n `${customerInformation && customerInformation.FirstName} ${customerInformation && customerInformation.LastName}`,\r\n [editLink]\r\n ),\r\n preferenceSection: this._renderPreferenceSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\r\n customerInformation\r\n ),\r\n customerAttributesWrapper: {\r\n className: classnames('ms-account-profile__attributes-wrapper')\r\n },\r\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes(),\r\n stockistName: this.state.stockistName\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n public handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\r\n\r\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.nameSectionHeading!.text = event.target.value);\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.resources.editButtonText) {\r\n this.props.resources.editButtonText = event.target.value;\r\n }\r\n };\r\n\r\n @computed get editProfileUrl(): string {\r\n return get(this.props, 'context.request.user.editProfileUrl', '');\r\n }\r\n\r\n private _renderEmailSection(\r\n className: string,\r\n heading?: IEmailAddressSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n links: links && links.length > 0 && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private _renderNameSection(\r\n className: string,\r\n heading?: INameSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n links: links && links.length > 0 && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private readonly onClickEventHandler = (className: string) => async () => {\r\n return this._updateAccountPersonalization(className);\r\n };\r\n\r\n private _renderPreferenceSection(className: string, customerInformation?: Customer): IAccountPreferences | null {\r\n const {\r\n personalizationDescription,\r\n personalizationEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n webTrackingEnableButtonAriaLabel\r\n } = this.props.resources;\r\n const { personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\r\n const { enableDataAnalytics } = this.props.context.request.features;\r\n const extraPreferences: IAccountPreference[] = [];\r\n\r\n if (!customerInformation) {\r\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // Show browser activity loggin preference if switch is enabled AND a heading is provided\r\n enableDataAnalytics &&\r\n webTrackingSectionHeading &&\r\n extraPreferences.push(\r\n this._renderPreference(\r\n 'web-tracking',\r\n webTrackingSectionHeading as IHeadingData,\r\n webTrackingEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n customerInformation.OptOutWebActivityTracking || false\r\n )\r\n );\r\n\r\n return {\r\n accountPreferences: {\r\n className\r\n },\r\n heading: null,\r\n personalization: this._renderPreference(\r\n 'personalization',\r\n personalizationSectionHeading as IHeadingData,\r\n personalizationEnableButtonAriaLabel,\r\n personalizationDescription,\r\n customerInformation.OptOutPersonalization || false\r\n ),\r\n extraPreferences: extraPreferences || undefined\r\n };\r\n }\r\n\r\n private readonly _renderPreference = (\r\n className: string,\r\n sectionHeading: IHeadingData,\r\n enableAriaLabel: string,\r\n description: string,\r\n isOptOut: boolean\r\n ) => {\r\n const { toggleDisableText, toggleEnableText } = this.props.resources;\r\n const toggleState = isOptOut ? 'disable' : 'enable';\r\n const onClickHandler = this.onClickEventHandler(className);\r\n this.payLoad.contentAction.etext = sectionHeading.text;\r\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n\r\n return {\r\n accountPreference: {\r\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\r\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\r\n })\r\n },\r\n heading: sectionHeading && (\r\n \r\n ),\r\n buttonWrapper: {\r\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`)\r\n },\r\n buttonYesText: ,\r\n buttonNoText: ,\r\n button: (\r\n \r\n ),\r\n description: ,\r\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\r\n };\r\n };\r\n\r\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\r\n const customerInformation = this.props.data.customerInformation.result;\r\n\r\n if (customerInformation) {\r\n const {\r\n telemetry,\r\n context: { request, actionContext }\r\n } = this.props;\r\n\r\n let isOptOutPersonalization = false;\r\n let input;\r\n\r\n switch (preferenceType) {\r\n case 'web-tracking':\r\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n break;\r\n case undefined:\r\n case 'personalization':\r\n default:\r\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n }\r\n\r\n this.isUpdatingPreference = true;\r\n\r\n try {\r\n await updateCustomerPersonalization(input, actionContext);\r\n } catch (error) {\r\n if (telemetry) {\r\n telemetry.exception(error);\r\n telemetry.debug('Unable to update customer personalization');\r\n }\r\n }\r\n\r\n this.isUpdatingPreference = false;\r\n }\r\n };\r\n\r\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\r\n return ;\r\n };\r\n private readonly getStockistInfo = async () => {\r\n const data = await getBMAStockistAsync({ callerContext: this.props.context.actionContext });\r\n if (data.Name) {\r\n this.setState({ stockistName: data.Name });\r\n }\r\n };\r\n}\r\n\r\nexport default AccountProfile;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps } from './aaa_account-profile';\r\n\r\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {extraPreferences &&\r\n extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {/*{links}*/}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC = props => {\r\n const {\r\n AccountProfile,\r\n accountProfileWrapper,\r\n heading,\r\n emailSection,\r\n nameSection,\r\n preferenceSection,\r\n customerAttributesWrapper,\r\n customerAttributesSection\r\n } = props;\r\n\r\n return (\r\n <>\r\n {heading}\r\n \r\n {accountProfileWrapper && (\r\n \r\n \r\n \r\n \r\n {nameSection.links}\r\n \r\n )}\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IAaaB2BOrderHistoryData } from './aaa_b2b_order_history.data';\r\nimport { IAaa_b2b_order_historyProps } from './aaa_b2b_order_history.props.autogenerated';\r\nimport { getOrderHistoryAsync } from '../../dataActions/DataActionExtension.g';\r\n\r\nexport interface IAaaB2BOrderHistoryViewProps extends IAaa_b2b_order_historyProps {\r\n currentPageItems: [];\r\n headers: [];\r\n total: number;\r\n totalItemPerPage: number;\r\n activePage: number;\r\n pageCount: number;\r\n handlePageItemsChange: any;\r\n handleMouseEnterEvent: any;\r\n handleMouseOutEvent: any;\r\n mouseOverIndex: number;\r\n handleOnChangeInput: any;\r\n onClickSearchBox: any;\r\n resetItems: any;\r\n searchString: string;\r\n isLoading: boolean;\r\n getOrderDetailPageUrl: any;\r\n}\r\nexport interface IAaaB2BOrderHistoryState {\r\n total: number;\r\n currentPageItems: [];\r\n headers: any;\r\n customerInfo: { AccountNumber: '' };\r\n totalItemPerPage: number;\r\n activePage: number;\r\n pageCount: number;\r\n mouseOverIndex: number;\r\n searchString: string;\r\n isLoading: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Aaa_b2b_order_history component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Aaa_b2b_order_history extends React.Component, IAaaB2BOrderHistoryState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n total: 0,\r\n currentPageItems: [],\r\n headers: ['Customer', 'Phone', 'Email', 'ConfirmationID', 'Order Number', 'Individual Price', 'Snapshot ID', 'Status', ''],\r\n customerInfo: { AccountNumber: '' },\r\n totalItemPerPage: this.props.config.totalItemPerPage ? this.props.config.totalItemPerPage : 8,\r\n activePage: 1,\r\n pageCount: 0,\r\n mouseOverIndex: 0,\r\n searchString: '',\r\n isLoading: true\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n await this.getRequestOrderList({ IncludeTotalCount: true }, this.state.activePage);\r\n }\r\n\r\n public getRequestOrderList = async (searchRequest: any, activePage: number) => {\r\n this.setState({ isLoading: true, currentPageItems: [] });\r\n const response: any = await getOrderHistoryAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n this.state.totalItemPerPage,\r\n activePage === 1 ? 0 : (activePage - 1) * this.state.totalItemPerPage,\r\n searchRequest\r\n );\r\n const data = { orders: response.Results, total: response.TotalRecords };\r\n // if manage orders length > 0 set active 1 per page 5,\r\n // divided mangage orders / per page 50/5=10 pagaes\r\n // if active is 1 page pick 0 to active -1 and push into cureent page items\r\n this.setState({\r\n currentPageItems: data.orders ? data.orders : [],\r\n isLoading: false,\r\n pageCount: data.total <= this.state.totalItemPerPage ? 1 : Math.ceil(data.total / this.state.totalItemPerPage),\r\n activePage: activePage,\r\n total: data.total\r\n });\r\n };\r\n private getOrderDetailPageUrl = (salesId: string, lineNum: number) => {\r\n const request = this.props.context.request;\r\n let orderDetailUrl = request.url.requestUrl.origin;\r\n if (request.sitePath) {\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n orderDetailUrl = orderDetailUrl + request.sitePath;\r\n }\r\n if (salesId && request && lineNum) {\r\n return `${orderDetailUrl}${this.props.config.redirectToOrderDetailUrl}?salesId=${salesId}&lineNum=${lineNum}`;\r\n }\r\n return '';\r\n };\r\n\r\n private handleMouseEnterEvent = (index: number) => {\r\n this.setState({ mouseOverIndex: index });\r\n };\r\n private handleMouseOutEvent = () => {\r\n this.setState({ mouseOverIndex: 0 });\r\n };\r\n private handlePageItemsChange = async (totalItemPerPage: any, activePage: number) => {\r\n if (this.state.searchString) {\r\n await this.getRequestOrderList({ IncludeTotalCount: true, SearchTxt: this.state.searchString }, activePage);\r\n } else {\r\n await this.getRequestOrderList({ IncludeTotalCount: true }, activePage);\r\n }\r\n };\r\n\r\n private handleOnChangeInput = (searchString: string) => {\r\n this.setState({ searchString: searchString.toLowerCase() });\r\n };\r\n private onClickSearchBox = async () => {\r\n if (this.state.searchString) {\r\n await this.getRequestOrderList({ IncludeTotalCount: true, SearchTxt: this.state.searchString }, 1);\r\n }\r\n };\r\n private resetItems = async () => {\r\n await this.getRequestOrderList({ IncludeTotalCount: true }, 1);\r\n this.setState({\r\n searchString: ''\r\n });\r\n };\r\n public render(): JSX.Element | null {\r\n const viewProps: IAaaB2BOrderHistoryViewProps = {\r\n ...(this.props as IAaa_b2b_order_historyProps),\r\n headers: this.state.headers,\r\n total: this.state.total,\r\n activePage: this.state.activePage,\r\n totalItemPerPage: this.state.totalItemPerPage,\r\n currentPageItems: this.state.currentPageItems,\r\n pageCount: this.state.pageCount,\r\n handlePageItemsChange: this.handlePageItemsChange,\r\n handleMouseEnterEvent: this.handleMouseEnterEvent,\r\n handleMouseOutEvent: this.handleMouseOutEvent,\r\n mouseOverIndex: this.state.mouseOverIndex,\r\n handleOnChangeInput: this.handleOnChangeInput,\r\n onClickSearchBox: this.onClickSearchBox,\r\n resetItems: this.resetItems,\r\n searchString: this.state.searchString,\r\n isLoading: this.state.isLoading,\r\n getOrderDetailPageUrl: this.getOrderDetailPageUrl\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default Aaa_b2b_order_history;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAaaB2BOrderHistoryViewProps } from './aaa_b2b_order_history';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\n\r\nexport default (props: IAaaB2BOrderHistoryViewProps) => {\r\n const style: any = {\r\n pagination: {\r\n marginRight: '70px',\r\n marginBottom: '20px'\r\n },\r\n a: {\r\n color: 'black',\r\n float: 'left',\r\n padding: '8px 16px',\r\n textDecoration: 'none',\r\n transition: 'background-color .3s',\r\n border: '1px solid #ddd',\r\n cursor: 'pointer'\r\n },\r\n active: {\r\n backgroundColor: '#031C36',\r\n color: 'white',\r\n border: '1px solid #031C36'\r\n },\r\n hover: {\r\n backgroundColor: '#ddd'\r\n },\r\n disabled: {\r\n backgroundColor: '#eeeeee',\r\n cursor: 'not-allowed'\r\n },\r\n searchInput: {\r\n height: '37px',\r\n width: '300px',\r\n marginRight: '10px'\r\n }\r\n };\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=100&h=100&m=6', w: 100, h: 100 },\r\n lg: { q: 'w=100&h=100&m=6', w: 100, h: 100 },\r\n xl: { q: 'w=100&h=100&m=6', w: 100, h: 100 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n const numberWithCommas = (x: number) => {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n };\r\n return (\r\n <>\r\n {!props.isLoading && (\r\n
\r\n props.handleOnChangeInput(event.target.value)}\r\n />\r\n props.onClickSearchBox()}\r\n >\r\n {'Search'}\r\n \r\n \r\n

\r\n {props.searchString ? `${props.currentPageItems.length} / ${props.total}` : props.total} Items Available\r\n

\r\n
\r\n )}\r\n
\r\n \r\n {props.currentPageItems.length > 0 && (\r\n \r\n ;\r\n })}\r\n \r\n )}\r\n {props.currentPageItems.map((line: any, index: number) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {line.LineStatusValue === 1 && }\r\n {line.LineStatusValue === 2 && }\r\n {line.LineStatusValue === 3 && }\r\n {line.LineStatusValue === 4 && }\r\n {line.LineStatusValue === 0 && }\r\n \r\n \r\n );\r\n })}\r\n
\r\n {props.headers.map((h: string, index: number) => {\r\n return {h}
\r\n \r\n {line.B2CCustomerName ? line.B2CCustomerName : '-'}{line.B2CPhone ? line.B2CPhone : '-'}{line.B2CEmail ? line.B2CEmail : '-'}{line.ConfirmationId ? line.ConfirmationId : '-'}\r\n {line.RequestOrderId ? `${line.SalesId}\\n${line.RequestOrderId}` : line.SalesId}\r\n {`${line.DetailName} - $${numberWithCommas(line.B2CPrice)}`}{line.BMASnapShotID ? line.BMASnapShotID : '-'}{'Open Order'}{'Delivered'}{'Invoiced'}{'Cancelled'}{'None'}\r\n {line.BMASnapShotID && (\r\n <>\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n {props.currentPageItems.length > 0 && !props.isLoading && (\r\n
\r\n \r\n {' '}\r\n \r\n props.activePage !== 1 ? props.handlePageItemsChange(props.totalItemPerPage, props.activePage - 1) : {}\r\n }\r\n >\r\n «\r\n \r\n \r\n {props.pageCount &&\r\n [...Array(props.pageCount)].map((p: number, index: number) => {\r\n return (\r\n 0 && props.mouseOverIndex === index + 1 ? style.hover : null)\r\n }}\r\n key={index + 1}\r\n onMouseEnter={() => props.handleMouseEnterEvent(index + 1)}\r\n onMouseLeave={() => props.handleMouseOutEvent()}\r\n onClick={() => props.handlePageItemsChange(props.totalItemPerPage, index + 1)}\r\n >\r\n {index + 1}\r\n \r\n );\r\n })}\r\n \r\n {' '}\r\n \r\n props.activePage !== props.pageCount\r\n ? props.handlePageItemsChange(props.totalItemPerPage, props.activePage + 1)\r\n : {}\r\n }\r\n >\r\n »\r\n \r\n \r\n
\r\n )}\r\n {props.isLoading &&
Loading...
}\r\n {!props.isLoading && (props.currentPageItems.length === 0 || props.currentPageItems.length === 0) && (\r\n
\r\n
\r\n

{'You currently do not have any Order History to view.'}

\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IAaaPricefactorgridData } from './aaa_pricefactorgrid.data';\r\nimport { IAaa_pricefactorgridProps } from './aaa_pricefactorgrid.props.autogenerated';\r\nimport {\r\n getBMAPriceFactorMatrixAsync,\r\n getBMAStockistAsync,\r\n updateBMAPriceFactorMatrixAsync\r\n} from '../../dataActions/DataActionExtension.g';\r\n\r\nexport interface IAaa_pricefactorgridState {\r\n priceFactorsData: any;\r\n editMode: boolean;\r\n isPriceFactorAvailable: boolean;\r\n}\r\nexport interface IAaa_pricefactorgridViewProps extends IAaa_pricefactorgridProps {\r\n handleChange: any;\r\n editMode: boolean;\r\n toggleEditMode: any;\r\n updatePriceFactor: any;\r\n priceFactors: any;\r\n isPriceFactorsNotAvailableText: string | undefined;\r\n isPriceFactorAvailable: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Aaa_pricefactorgrid component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Aaa_pricefactorgrid extends React.PureComponent, IAaa_pricefactorgridState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n priceFactorsData: [],\r\n editMode: false,\r\n isPriceFactorAvailable: true\r\n };\r\n }\r\n public componentDidMount() {\r\n void this.getBMAPriceFactors();\r\n }\r\n private getBMAPriceFactors = async () => {\r\n const customerInfo: any = this.props.context.actionContext.requestContext.user;\r\n if (customerInfo.isAuthenticated) {\r\n const stockistInfo: any = await getBMAStockistAsync({ callerContext: this.props.context.actionContext });\r\n const data = await getBMAPriceFactorMatrixAsync(\r\n { callerContext: this.props.context.actionContext },\r\n stockistInfo.BMARetailStockist\r\n );\r\n let isPriceFactorAvailable = true;\r\n if (data.Result?.length === 0) {\r\n isPriceFactorAvailable = false;\r\n }\r\n this.setState({ priceFactorsData: data.Result, isPriceFactorAvailable });\r\n }\r\n };\r\n private handleChange = (index: number, dataType: string, value: any) => {\r\n // update table row....\r\n const newState = this.state.priceFactorsData.map((item: any, i: number) => {\r\n if (i === index) {\r\n return { ...item, [dataType]: value };\r\n }\r\n return item;\r\n });\r\n\r\n this.setState({\r\n priceFactorsData: newState\r\n });\r\n };\r\n private updatePriceFactor = async () => {\r\n // update table row....\r\n console.log(this.state.priceFactorsData);\r\n await updateBMAPriceFactorMatrixAsync({ callerContext: this.props.context.actionContext }, this.state.priceFactorsData);\r\n this.toggleEditMode();\r\n };\r\n private toggleEditMode = () => {\r\n // update table row....\r\n this.setState({\r\n editMode: !this.state.editMode\r\n });\r\n };\r\n public render(): JSX.Element | null {\r\n const viewProps: IAaa_pricefactorgridViewProps = {\r\n ...(this.props as IAaa_pricefactorgridProps),\r\n handleChange: this.handleChange,\r\n updatePriceFactor: this.updatePriceFactor,\r\n toggleEditMode: this.toggleEditMode,\r\n editMode: this.state.editMode,\r\n priceFactors: this.state.priceFactorsData,\r\n isPriceFactorsNotAvailableText: this.props.config.priceFactorsNotAvailableText\r\n ? this.props.config.priceFactorsNotAvailableText\r\n : '',\r\n isPriceFactorAvailable: this.state.isPriceFactorAvailable\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default Aaa_pricefactorgrid;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAaa_pricefactorgridViewProps } from './aaa_pricefactorgrid';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IAaa_pricefactorgridViewProps) => {\r\n return props.priceFactors.length > 0 ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.priceFactors.map((row: any, index: number) => {\r\n return (\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 \r\n
DescriptionMarkup
{props.priceFactors[index].BMAPriceFactorDescription}\r\n {props.editMode ? (\r\n props.handleChange(index, 'BMAPriceFactorPercent', e.target.value)}\r\n type='number'\r\n step='1'\r\n min='0'\r\n className='form-control'\r\n value={props.priceFactors[index].BMAPriceFactorPercent}\r\n />\r\n ) : (\r\n props.priceFactors[index].BMAPriceFactorPercent\r\n )}\r\n
\r\n {props.editMode ? (\r\n <>\r\n {' '}\r\n props.updatePriceFactor()}\r\n >\r\n {'Save'}\r\n {' '}\r\n /\r\n props.toggleEditMode()}\r\n >\r\n {'Cancel'}\r\n \r\n \r\n ) : (\r\n props.toggleEditMode()}\r\n >\r\n {'Edit'}\r\n \r\n )}\r\n
\r\n \r\n ) : (\r\n

{!props.isPriceFactorAvailable && props.isPriceFactorsNotAvailableText}

\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\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 * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListData,\r\n IReviewsListResources,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Build Review Card.\r\n * @param props - Review Card ViewProps.\r\n * @param resources - Resource Strings.\r\n * @param isUserReview - User review flag.\r\n * @returns JSX Element.\r\n */\r\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\r\n return (\r\n \r\n \r\n
\r\n {props.rating}\r\n {props.date}\r\n
\r\n {props.name}\r\n
\r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {isUserReview ? undefined :

\r\n {resources.wasReviewHelpfulText}\r\n

}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review list ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review modal ViewProps.\r\n * @param state - Review List State.\r\n * @returns JSX Element.\r\n */\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * ReviewsList view.\r\n * @param props - Ratings ReviewsList ViewProps.\r\n * @returns ReviewsList view module.\r\n */\r\nconst ReviewsListview: React.FC> = props => {\r\n const {\r\n filterByDropdown,\r\n heading,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n sortByDropdown,\r\n state,\r\n userReview,\r\n resources\r\n } = props;\r\n\r\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview, resources, true)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review, resources, false);\r\n })}\r\n \r\n { !ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(props)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\n/**\n * CheckInConfirmation component Properties.\n */\nexport interface ICheckInConfirmationProps {\n /**\n * The confirmation text to show.\n */\n confirmationText: string;\n\n /**\n * Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n */\n shouldShowQrCode: boolean;\n\n /**\n * The label shows for channel reference ID.\n */\n channelReferenceIdLabel: string;\n\n /**\n * The channel reference ID to show. When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n */\n channelReferenceId?: string;\n}\n\n/**\n * CheckInConfirmation component for showing confirmation information after check-in succeed.\n * @param confirmationProps - The confirmation properties.\n * @param confirmationProps.confirmationText - The confirmation text.\n * @param confirmationProps.shouldShowQrCode - Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n * @param confirmationProps.channelReferenceIdLabel - The label shows for channel reference ID.\n * @param confirmationProps.channelReferenceId - The channel reference ID to show.\n * When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n * @returns The check-in confirmation component.\n */\nexport const CheckInConfirmationComponent: React.FC = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n
\n

{confirmationText}

\n {channelReferenceId && (\n

\n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n

\n )}\n {channelReferenceId && shouldShowQrCode && (\n \n \n \n )}\n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * Check-in error properties.\n */\nexport interface ICheckInErrorProps {\n errorMessage?: string;\n}\n\n/**\n * Check-in error.\n * @param errorProps - The error properties.\n * @param errorProps.errorMessage - The error message to show.\n * @returns The alert element showing check-in errors.\n */\nexport const CheckInErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary } from '@msdyn365-commerce/core';\nimport { CommerceProperty, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { CheckInConfirmationComponent } from './check-in-confirmation';\nimport { CheckInErrorComponent } from './check-in-error';\nimport { IAdditionalInformationKeysData, ICheckInForPickupConfig, ICheckInForPickupProps } from './check-in-for-pickup.props.autogenerated';\n\n/**\n * The interface representing a piece of additional information data.\n */\ninterface IAdditionalInformation {\n formKey: IAdditionalInformationKeysData;\n value: string;\n}\n\n/**\n * The state for check-in view.\n */\nexport interface ICheckInViewState {\n /**\n * If the module has header error to show.\n */\n isHeaderError: boolean;\n\n /**\n * If the customer has checked in.\n */\n isCheckedIn: boolean;\n\n /**\n * Additional information to capture.\n */\n additionalInformation: IDictionary[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise;\n}\n\n/**\n * The state of the CheckInForPickup module.\n */\nexport interface ICheckInForPickupState {\n /**\n * The header error message.\n */\n headerErrorMessage: string;\n\n /**\n * If the customer has checked in successfully.\n */\n isCheckedIn: boolean;\n}\n\n/**\n *\n * CheckIn component.\n * @extends {React.Component, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component, ICheckInForPickupState> {\n public constructor(props: ICheckInForPickupProps) {\n super(props);\n this.state = {\n headerErrorMessage: '',\n isCheckedIn: false\n };\n }\n\n public render(): JSX.Element | null {\n const isHeaderError: boolean = this.state.headerErrorMessage !== '';\n\n const viewProps = {\n ...this.props,\n headerError: ,\n confirmationComponent: (\n \n ),\n checkInForOrderPickup: this.checkInForOrderPickup,\n additionalInformationValues: this.props.config.additionalInformationKeys\n ? this.props.config.additionalInformationKeys.map(() => {\n return {};\n })\n : undefined,\n viewState: {\n isHeaderError,\n isCheckedIn: this.state.isCheckedIn\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public shouldComponentUpdate(nextProps: ICheckInForPickupProps, nextState: ICheckInForPickupState): boolean {\n if (\n this.props.config.additionalInformationHeading !== nextProps.config.additionalInformationHeading ||\n this.props.config.confirmationText !== nextProps.config.confirmationText\n ) {\n return true;\n }\n if (this.state.headerErrorMessage !== nextState.headerErrorMessage || this.state.isCheckedIn !== nextState.isCheckedIn) {\n return true;\n }\n return false;\n }\n\n public async componentDidMount(): Promise {\n await this._onInit();\n }\n\n /**\n * The async callback for submitting check-in.\n * @param additionalInformationList - The optional additional information captured.\n * @returns The async result.\n */\n public checkInForOrderPickup = async (additionalInformationList?: IAdditionalInformation[]): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query!.channelId, 10);\n const channelReferenceId: string = this.props.context.request.query!.channelReferenceId;\n const packingSlipId: string = this.props.context.request.query!.packingSlipId;\n\n const additionalInformationToSubmit: { formKey: string; value: string }[] | undefined = additionalInformationList?.map(\n additionalInformationKeyValuePair => {\n return {\n formKey: additionalInformationKeyValuePair.formKey.resourceId ?? '',\n value: additionalInformationKeyValuePair.value\n };\n }\n );\n const extensionPropertyList: CommerceProperty[] = [];\n if (!ObjectExtensions.isNullOrUndefined(additionalInformationToSubmit)) {\n for (const additionalInformation of additionalInformationToSubmit) {\n extensionPropertyList.push({\n Key: additionalInformation.formKey,\n Value: {\n StringValue: additionalInformation.value\n }\n });\n }\n }\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId,\n extensionPropertyList\n );\n } catch (error) {\n this.state = { headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false };\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n return Promise.resolve();\n };\n\n /**\n * The action performed on module initialization.\n * @returns The async result.\n */\n private readonly _onInit = async (): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query?.channelId ?? '', 10);\n const channelReferenceId: string | undefined = this.props.context.request.query?.channelReferenceId;\n const packingSlipId: string | undefined = this.props.context.request.query?.packingSlipId;\n if (Number.isNaN(channelId) || !channelReferenceId || !packingSlipId) {\n // No error message shown in editor mode.\n if (this.props.context.request.params.isEditor) {\n return Promise.resolve();\n } else if (this.props.context.request.params.isPreview) {\n this.setState({ headerErrorMessage: this.props.resources.requiredParameterMissingErrorMessage });\n } else {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage });\n }\n this.props.context.telemetry.error(\n 'One or more required URL parameters are missing. ' +\n 'Please make sure you have pass in channelId, channelReferenceId and packingSlipId through URL parameter.'\n );\n return Promise.resolve();\n }\n\n const { additionalInformationKeys } = this.props.config;\n\n const hasAdditionalInformation: boolean = ArrayExtensions.hasElements(additionalInformationKeys);\n\n // Call check-in-for-pickup directly if no additional information to capture.\n if (!hasAdditionalInformation) {\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n }\n return Promise.resolve();\n };\n}\n\nexport default CheckInForPickup;\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 { FormBuilder } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckInViewProps } from './check-in-for-pickup';\n\n/**\n * The check-in view for submitting check-in, capturing additional information, and showing check-in confirmation.\n * @param props - The check-in view properties.\n * @returns The check-in view as a react component.\n */\nconst CheckInViewComponent: React.FC = (props: ICheckInViewProps) => {\n const { headerError, checkInForOrderPickup, confirmationComponent, viewState } = props;\n return (\n <>\n {viewState.isHeaderError && headerError}\n {!viewState.isHeaderError && ArrayExtensions.hasElements(props.config.additionalInformationKeys) && (\n \n )}\n {!viewState.isHeaderError &&\n !ArrayExtensions.hasElements(props.config.additionalInformationKeys) &&\n viewState.isCheckedIn &&\n confirmationComponent}\n \n );\n};\n\nexport default CheckInViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\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 IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
\n
{buttonText}
\n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.subscribe({\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n });\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request).removeItemById(this.state.comparisonItemId);\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(this.props.context.request).hasItemById(\n comparisonItemId\n ),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\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 { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\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\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\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\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

{countTitle}

\n
\n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {renderCartLinesGroupHeader(\n cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\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
{props.slots.emptyCart}
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\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\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\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\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

\n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

\n );\n return (\n
\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \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 \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\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 IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Categories heading.\n * @param inCategoriesHeading - The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\n\n return
{categoryAutoSuggestionHeading}
;\n};\n\n/**\n * Render Categories suggestion result.\n * @param inCategoriesHeading - The Categories result heading.\n * @param noResultText - The \"No Result\" text.\n * @param props - The Categories suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const CategorySuggestionsComponent = (\n inCategoriesHeading: string,\n noResultText: string,\n props: ISearchViewProps & ISearchProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n
  • {noResultText}
  • \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n const imageSettings = {\n lazyload: true,\n viewports: {\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\n }\n };\n return (\n \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param props -The props.\n * @returns The JSX Element.\n */\nexport const MobileAutoSuggestEmptyComponent = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    \n
    {props.resources.emptyMobileSearchTextHeading}
    \n
    {props.resources.emptyMobileSearchText}
    \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\n\n/**\n * Render Clear button for mobile viewport.\n * @param clearSearchButtonText -The Clear button text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\n return (\n \n );\n};\n\n/**\n * Render Search form.\n * @param form -Form view props.\n * @param searchForm -Search Form props.\n * @param formWrapper -Form Wrapper props.\n * @param isMobile -Is mobile viewport flag.\n * @param clearSearchButtonText -The Clear button text.\n * @param props -The props for resource.\n * @param isSearchText -Is SearchText flag for input text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nexport const FormComponent = (\n form: ISearchFormViewProps,\n searchForm: INodeProps,\n formWrapper: INodeProps,\n isMobile: boolean,\n clearSearchButtonText: string,\n props: ISearchProps,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n \n );\n\n return isMobile ? (\n \n {form.cancelBtn}\n \n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n \n \n ) : (\n \n \n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Render keywords heading.\n * @param keywordsHeading -The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render keywords reults.\n * @param keywordSuggest -The Keywords suggest Node props.\n * @param ulKeyword -The List Node props.\n * @param keywordsHeading -The Keywords result heading.\n * @param noResultText -The \"No Result\" text.\n * @param keywordSuggestions -The Keywords suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns -The JSX Element.\n */\nexport const KeywordSuggestionsComponent = (\n keywordSuggest: INodeProps,\n ulKeyword: INodeProps,\n keywordsHeading: string,\n noResultText: string,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return keywordSuggestions ? (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n
  • {noResultText}
  • \n
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param productSuggestionsHeading -The products suggestion result heading.\n * @returns The JSX Element.\n */\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\n\n return
    {productAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n \n );\n};\n\n/**\n * Render Products No result section.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    {props.resources.noResultContentHeadingText}
    \n
    \n {props.resources.noResultContentParagraphText}\n
    \n
    \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param productSuggest -The product suggest Node props.\n * @param ulProduct -The List Node props.\n * @param props -The props.\n * @param productSuggestions -The Product suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const ProductSuggestionsComponent = (\n productSuggest: INodeProps,\n ulProduct: INodeProps,\n props: ISearchProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n const liProduct: INodeProps = {\n tag: 'li',\n className: 'msc-no-result-content'\n };\n return productSuggestions ? (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n ) : (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {renderProductNotFoundResults(props)}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\nimport { FormComponent } from './components/search.form';\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\n\n/**\n * Render Title for AutoSuggest.\n * @param searchSuggestionHeading -The heading resource string.\n * @param searchText -The search string.\n * @returns -The JSX Element.\n */\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\n const searchTextString = '\"'.concat(searchText.concat('\"'));\n const searchAutoSuggestionHeading = searchSuggestionHeading\n ? format(searchSuggestionHeading, searchTextString)\n : `Search for ${searchTextString}`;\n\n return {searchAutoSuggestionHeading};\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC> = (\n props: ISearchViewProps & ISearchProps\n): JSX.Element => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n UlKeyword,\n UlProduct,\n form,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n context,\n isLoadingAutoSuggest,\n isLoadingNode,\n callbacks: { handleCancelSearchFocused }\n } = props;\n\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\n\n const [searchTextString, setSearchTextString] = useState();\n const [isMobilePort, setIsMobile] = useState(false);\n\n useEffect(() => {\n setSearchTextString(searchText);\n }, [searchText]);\n\n /**\n * ClearSearch callback method to clear search string.\n */\n const clearSearch = (): void => {\n setSearchTextString('');\n\n const propsForm = props.form as ISearchFormViewProps;\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\n\n if (propsFormInputCurrent) {\n propsFormInputCurrent.value = '';\n }\n\n propsFormInput.value = '';\n props.searchText = '';\n props.FormWrapper.action = '';\n };\n\n const isMobileViewport = useCallback(() => {\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\n setIsMobile(isMobileView);\n }, [context]);\n\n useEffect(() => {\n window.addEventListener('resize', isMobileViewport);\n isMobileViewport();\n }, [isMobileViewport]);\n\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isMobileView = viewport === 'sm' || viewport === 'xs';\n\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\n ? `${AutoSuggest.className} show`\n : `${AutoSuggest.className} hide`;\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\n\n return (\n \n {label}\n {FormComponent(\n form as ISearchFormViewProps,\n SearchForm,\n FormWrapper,\n isMobilePort,\n clearSearchButtonText,\n props,\n isSearchText,\n clearSearch\n )}\n {!isMobileView && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n \n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n {isMobileView && props.isSearchFormExpanded && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n \n );\n};\nexport default SearchView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, 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 ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\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};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\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 } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
    \n
    \n or\n
    \n {B2BAccount(signInB2BAccount)}\n
    \n
    \n
    \n );\n};\n\nexport default SignInView;\n"],"names":["_ref","className","text","React","description","AccountAttributeDataTypeValue","AccountProfileAttributes","constructor","props","super","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","_renderAttributes","config","data","resources","this","accountProfileProps","attributeDefinitions","result","additionalInformationSectionHeading","elements","showAttributes","split","map","att","attributeDefinition","find","attribute","IsHidden","Name","toLocaleLowerCase","RecordId","_renderAttribute","customerInformation","IsB2b","splice","_renderBoutiqueAttribute","edit","state","editAttributes","payLoad","contentAction","etext","attributesEditButtonText","getTelemetryAttributes","telemetryContent","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","ref","attributesContainerRef","classnames","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","Button","Object","assign","onClick","_enableAttributes","innerRef","editRef","title","_saveAttributes","_disableAttributes","phoneSectionHeading","heading","replace","Text","tag","type","onChange","_onPhoneChange","value","phone","disabled","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","attributes","IsMandatory","isEnumeration","IsEnumeration","EnumerationDetails","hasNoValue","id","_onAttributeSelect","key","selected","option","EnumerationValue","stockistName","render","toggleState","arialabel","format","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","AttributeTypeName","subscribeToLivadiNewsText","DescriptionComponent","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","error","attributeError","StringExtensions","isNullOrWhitespace","role","attributePayloadData","name","isMandatory","event","target","setState","MsDyn365","isBrowser","setTimeout","current","getElementsByClassName","length","_setFocus","initialAttributes","initialPhone","initialVatNumber","_objectSpread","currentTarget","selectedOptions","index","selectedIndex","_getAttributes","showAttributesArray","customer","custmerAttributes","Attributes","forEach","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","Number","isNaN","typeError","attributeInputTypeErrorText","undefined","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","Attribute","recordId","Units","ExtensionProperties","NameTranslations","push","KeyName","Phone","VATNumber","VatNumber","async","context","input","updateCustomerAttributesInput","AccountNumber","request","apiSettings","updateCustomerAttributes","actionContext","initialCustomerAttributes","telemetry","exception","debug","element","focus","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","telemetryPageName","friendlyName","getTelemetryObject","getPayloadObject","componentDidMount","reaction","__decorate","observable","observer","_mapEditableLinks","linkdata","editableLinks","link","linkText","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","links","requestContext","onTextChange","Msdyn365","editProps","AccountProfile","isUpdatingPreference","handleHeadingChange","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","handleLinkTextChange","linkIndex","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","onEdit","buttonWrapper","buttonYesText","buttonNoText","button","toString","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","getStockistInfo","getBMAStockistAsync","callerContext","editButtonAriaLabel","shouldRenderAttributes","editLink","get","viewProps","moduleProps","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","FirstName","LastName","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","renderView","AccountProfileItem","LinksComponent","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","computed","AccountPreferencesSection","Node","AccountPreferenceSection","preferenceSecton","_ref2","AccountProfileSection","_ref3","Module","Aaa_b2b_order_history","getRequestOrderList","searchRequest","activePage","isLoading","currentPageItems","response","getOrderHistoryAsync","queryResultSettings","totalItemPerPage","orders","Results","total","TotalRecords","pageCount","Math","ceil","getOrderDetailPageUrl","salesId","lineNum","orderDetailUrl","url","requestUrl","origin","sitePath","redirectToOrderDetailUrl","handleMouseEnterEvent","mouseOverIndex","handleMouseOutEvent","handlePageItemsChange","searchString","IncludeTotalCount","SearchTxt","handleOnChangeInput","toLowerCase","onClickSearchBox","resetItems","headers","customerInfo","style","pagination","marginRight","marginBottom","a","color","float","padding","textDecoration","transition","border","cursor","active","backgroundColor","hover","searchInput","height","width","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","cropFocalRegion","placeholder","line","Image","altText","ProductName","src","ImageURL","fallBackSrc","gridSettings","imageSettings","loadFailureBehavior","B2CCustomerName","B2CPhone","B2CEmail","ConfirmationId","RequestOrderId","SalesId","DetailName","x","B2CPrice","BMASnapShotID","LineStatusValue","href","LineNum","disabledWrapper","Array","p","onMouseEnter","onMouseLeave","Aaa_pricefactorgrid","getBMAPriceFactors","user","isAuthenticated","_data$Result","stockistInfo","getBMAPriceFactorMatrixAsync","BMARetailStockist","isPriceFactorAvailable","Result","priceFactorsData","handleChange","dataType","newState","item","i","updatePriceFactor","console","log","updateBMAPriceFactorMatrixAsync","toggleEditMode","editMode","priceFactors","isPriceFactorsNotAvailableText","priceFactorsNotAvailableText","textAlign","row","BMAPriceFactorDescription","e","step","min","BMAPriceFactorPercent","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","_props$config$thumbna2","tabIndex","thumbnailImageSettings","defaultThumbnailImageSettings","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","items","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","image","imageId","modifiedActiveIndex","_props$config$thumbna","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","keyCode","KeyCodes","Enter","preventDefault","onKeyDown","fullScreenTitleText","CarouselProps","MediaGallery","Modal","buildReviewCard","isUserReview","cardProps","headerProps","rating","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","wasReviewHelpfulText","like","dislike","renderProductDescription","product","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","sm","md","renderProductImage","ItemId","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","ArrayExtensions","hasElements","isFilterApplied","review","reviewModal","modal","modalHeader","modalBody","form","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReviewModal","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","AccountProfileEdit","moduleClassName","onTextBoxChange","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","window","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","viewState","isShowLoading","accountProfileEdit","loading","isOpen","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","document","createElement","innerHTML","childNodes","nodeValue","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","AccountProfileEditInputComponent","AccountProfileEditItem","AccountProfileEditLoading","LocalAccount","errorClassName","GetMaxLength","parsedMaxLength","parseInt","htmlFor","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","clicked","IssueLoyaltyInput","issueLoyalty","then","location","catch","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","status","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","CheckInConfirmationComponent","confirmationText","shouldShowQrCode","channelReferenceIdLabel","channelReferenceId","QRCode","size","CheckInErrorComponent","CheckInForPickup","checkInForOrderPickup","channelId","query","packingSlipId","additionalInformationToSubmit","additionalInformationList","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","ObjectExtensions","isNullOrUndefined","additionalInformation","Key","SalesOrdersDataActions","headerErrorMessage","genericErrorMessage","isCheckedIn","Promise","resolve","_this$props$context$r","_this$props$context$r2","_this$props$context$r3","_this$props$context$r4","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","_this$props$context$r5","isHeaderError","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","additionalInformationHeading","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","requiredValueMissingErrorMessage","onSubmit","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","onTelemetryClick","CookieCompliance","_this$props$config$ac","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","bind","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","AlertProps","fade","Content","acceptButton","setConsentCookie","reload","Alert","OrderInfomation","orderInformationProps","receiptId","createdDate","count","amount","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","alert","orderInfomation","orderSummary","payment","help","ProductComparisonButton","_addToProductComparison","ProductComparisonItem","catalogId","ProductComparisonState","instance","addItem","_removeFromProductComparison","removeItemById","comparisonItemId","_getNewState","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","slots","productComparisonPreview","buttonText","isDisabled","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_items$filter","getCatalogId","filter","ProductComparisonButtonViewFunctionalComponent","TileList","_telemetryContent","Heading","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","tileListView","tileItem","keyIndex","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","PickupInStore","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","groupTitle","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","deliveryOption","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","updatedTitle","cartTitle","cart","totalItemsInCart","renderModuleAttributes","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","channel","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","searchForm","formWrapper","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","cancelBtnAriaLabel","cancelBtn","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","_item$id","LiProduct","AProduct","price","renderTitle","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","handleCancelSearchFocused","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","useEffect","propsFormInput","propsFormInputCurrent","action","isMobileViewport","useCallback","isMobileView","addEventListener","isNullOrEmpty","onBlur","isSearchFormExpanded","SignInLoading","SignInButton","signIn","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","forgetPassword","disclaimer","signInButton","socialAccounts","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","B2BAccount"],"sourceRoot":""}