{"version":3,"file":"static/js/10.bcf7f5c129ecb587d481.chunk.js","mappings":"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","sources":["webpack://nile.commerce.online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-links.tsx?6c7f","webpack://nile.commerce.online/./src/modules/account-loyalty-tile/account-loyalty-tile.tsx?7f29","webpack://nile.commerce.online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://nile.commerce.online/./src/modules/account-loyalty-tile/account-loyalty-tile.view.tsx?3547","webpack://nile.commerce.online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://nile.commerce.online/./src/modules/password-reset/password-reset.tsx?0983","webpack://nile.commerce.online/./src/modules/password-reset/password-reset.view.tsx?b341","webpack://nile.commerce.online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-header.component.tsx?3609","webpack://nile.commerce.online/./src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?3b33","webpack://nile.commerce.online/./src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?f1c7","webpack://nile.commerce.online/./src/modules/organization-users-tile/organization-users-tile.tsx?f5de","webpack://nile.commerce.online/./src/modules/check-in-for-pickup/check-in-confirmation.tsx?406f","webpack://nile.commerce.online/./src/modules/check-in-for-pickup/check-in-error.tsx?e789","webpack://nile.commerce.online/./src/modules/check-in-for-pickup/check-in-for-pickup.tsx?8686","webpack://nile.commerce.online/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://nile.commerce.online/./src/modules/content-block/components/links.tsx?abbf","webpack://nile.commerce.online/./src/modules/content-block/content-block.tsx?3084","webpack://nile.commerce.online/./src/modules/order-lookup/utilities/order-lookup-utility.tsx?c60b","webpack://nile.commerce.online/./src/modules/order-lookup/components/order-lookup-additional-fields.tsx?9951","webpack://nile.commerce.online/./src/modules/order-lookup/components/order-lookup-fields.tsx?297b","webpack://nile.commerce.online/./src/modules/order-lookup/order-lookup.tsx?72d3","webpack://nile.commerce.online/./src/modules/social-share/social-share.tsx?899b","webpack://nile.commerce.online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://nile.commerce.online/./src/themes/nile-theme/views/checkout-gift-card.view.tsx?097f","webpack://nile.commerce.online/./src/themes/nile-theme/views/checkout-loyalty.view.tsx?44cd","webpack://nile.commerce.online/./src/themes/nile-theme/views/k3-compositions.view.tsx?f300","webpack://nile.commerce.online/./src/themes/nile-theme/views/ratings-histogram.view.tsx?e731","webpack://nile.commerce.online/./src/themes/nile-theme/views/search-result-container.view.tsx?45ff","webpack://nile.commerce.online/./src/modules/organization-users-tile/organization-users-tile.view.tsx?bac2","webpack://nile.commerce.online/./src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?bd7a","webpack://nile.commerce.online/./src/modules/content-block/content-block.view.tsx?1773","webpack://nile.commerce.online/./src/modules/fabrikam/views/cart.view.tsx?ac8f","webpack://nile.commerce.online/./src/modules/fabrikam/views/order-history.view.tsx?a21d","webpack://nile.commerce.online/./src/modules/fabrikam/views/ratings-histogram.view.tsx?6e01","webpack://nile.commerce.online/./src/modules/fabrikam/views/reviews-list.view.tsx?cd2e","webpack://nile.commerce.online/./src/modules/order-lookup/order-lookup.view.tsx?b8e5","webpack://nile.commerce.online/./src/modules/social-share/social-share.view.tsx?dcdf","webpack://nile.commerce.online/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://nile.commerce.online/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://nile.commerce.online/./src/modules/adventureworks/views/checkout-customer-account-payment.view.tsx?0efc","webpack://nile.commerce.online/./src/modules/adventureworks/views/order-history.view.tsx?692d","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/search.categorysuggest.tsx?6bcf","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/search.mobile.empty.tsx?ff32","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/search.form.tsx?d41a","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/search.keywordsuggest.tsx?2724","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/search.productsuggest.tsx?6616","webpack://nile.commerce.online/./src/modules/adventureworks/views/search.view.tsx?bfa7","webpack://nile.commerce.online/./src/modules/adventureworks/views/sign-in.view.tsx?048a","webpack://nile.commerce.online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-description.tsx?c7bb","webpack://nile.commerce.online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://nile.commerce.online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://nile.commerce.online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://nile.commerce.online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://nile.commerce.online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://nile.commerce.online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://nile.commerce.online/./src/modules/password-reset/components/password-reset-button.tsx?a869","webpack://nile.commerce.online/./src/modules/password-reset/components/password-reset-error.tsx?fbfd","webpack://nile.commerce.online/./src/modules/password-reset/components/password-reset-input.tsx?20d9","webpack://nile.commerce.online/./src/modules/password-reset/components/password-reset-label.tsx?6ef1","webpack://nile.commerce.online/./src/modules/password-reset/components/password-reset-loading-icon.tsx?8828","webpack://nile.commerce.online/./src/modules/password-reset/components/password-reset-loading-message.tsx?a980"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountLoyaltyTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountLoyaltyTileLinks: React.FC<IAccountLoyaltyTileLinks> = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n <div className='ms-account-loyalty-tile__links'>\n {editableLinks && editableLinks.length > 0 ? (\n <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n ) : null}\n </div>\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-loyalty-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountLoyaltyTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileData } from './account-loyalty-tile.data';\nimport { IAccountLoyaltyTileProps } from './account-loyalty-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-loyalty-tile-description';\nimport LinksComponent from './components/account-loyalty-tile-links';\n\nexport interface IAccountLoyaltyTileViewProps extends IAccountLoyaltyTileProps<IAccountLoyaltyTileData> {\n AccountLoyaltyTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.PureComponent<IAccountLoyaltyTileProps<IAccountLoyaltyTileData>>}\n */\nclass AccountLoyaltyTile extends React.PureComponent<IAccountLoyaltyTileProps<IAccountLoyaltyTileData>> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountLoyaltyTileProps<IAccountLoyaltyTileData>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, data, resources, context } = this.props;\n const { className, heading, signUpLinkText, signUpLinkAriaLabel, viewLinkText, viewLinkAriaLabel } = config;\n const { accountLoyaltySummary, accountLoyaltyMemberSummary } = resources;\n const { loyaltyCard } = data;\n\n let description = accountLoyaltySummary;\n let url = Msdyn365.getUrlSync('loyaltyJoin', context.actionContext) || '';\n const link = { linkText: signUpLinkText, linkUrl: { destinationUrl: url }, ariaLabel: signUpLinkAriaLabel };\n\n if (loyaltyCard && loyaltyCard.result && loyaltyCard.result.CardNumber) {\n const decimalPrecision = 2;\n let points = 0;\n\n if (loyaltyCard.result.RewardPoints && loyaltyCard.result.RewardPoints.length > 0) {\n loyaltyCard.result.RewardPoints.forEach((rewardPoint: LoyaltyRewardPoint) => {\n points += rewardPoint.ActivePoints!;\n });\n }\n link.ariaLabel = viewLinkAriaLabel;\n link.linkText = viewLinkText;\n url = Msdyn365.getUrlSync('loyalty', context.actionContext) || '';\n link.linkUrl.destinationUrl = url;\n description = format(accountLoyaltyMemberSummary, points.toFixed(decimalPrecision));\n }\n\n const viewProps = {\n ...this.props,\n className,\n AccountLoyaltyTile: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty-tile', config.className)\n },\n heading: heading && (\n <Msdyn365.Text\n className='ms-account-loyalty-tile__heading'\n tag={heading.tag || 'h2'}\n text={heading.text}\n editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n />\n ),\n links: (\n <LinksComponent\n {...{\n links: [link],\n onTextChange: this.handleLinkTextChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n ),\n description: <DescriptionComponent description={description} />\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.signUpLinkText && this.props.config.viewLinkText) {\n this.props.config.viewLinkText = event.target.value;\n }\n };\n}\n\nexport default AccountLoyaltyTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * 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<IAccountProfileEditProps<IAccountProfileEditConfig>>}\n */\n@observer\nclass AccountProfileEdit extends React.Component<IAccountProfileEditProps<IAccountProfileEditConfig>> {\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<IAccountProfileEditConfig>) {\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<IAccountProfileEditConfig>,\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: <AccountProfileEditLoadingIconComponent className={this.moduleClassName} />,\n message: <AccountProfileEditLoadingMessageComponent className={this.moduleClassName} message={resources.loadingMessage} />\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 <Msdyn365.Text\n className={`${this.moduleClassName}__heading`}\n {...config.heading}\n editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\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<HTMLInputElement>) => {\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 <AccountProfileEditErrorComponent\n key='requiredFieldMissing'\n id='requiredFieldMissing'\n className={this.moduleClassName}\n message={resources.requiredFieldMissingSummaryError}\n />,\n <AccountProfileEditErrorComponent\n key='fieldIncorrect'\n id='fieldIncorrect'\n className={this.moduleClassName}\n message={resources.fieldIncorrectError}\n />,\n <AccountProfileEditErrorComponent\n key='claimVerificationServerError'\n id='claimVerificationServerError'\n className={this.moduleClassName}\n />\n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n <AccountProfileEditButtonComponent\n key='continue'\n id='continue'\n className={`${this.moduleClassName}__save-button`}\n ariaLabel={resources.saveButtonAriaLabel}\n text={resources.saveButtonText}\n telemetryContent={this.telemetryContent}\n />,\n <AccountProfileEditButtonComponent\n key='cancel'\n id='cancel'\n className={`${this.moduleClassName}__cancel-button`}\n ariaLabel={resources.cancelButtonText}\n text={resources.cancelButtonText}\n telemetryContent={this.telemetryContent}\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 <AccountProfileEditLabelComponent\n {...{\n id,\n forId: id,\n className,\n text: labelText\n }}\n />\n ),\n errorMessage: (\n <AccountProfileEditErrorComponent\n {...{\n className: this.moduleClassName,\n type: 'item'\n }}\n />\n ),\n input: (\n <AccountProfileEditInputComponent\n {...{\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange: this.onTextBoxChange\n }}\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 } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC<IAccountLoyaltyTileViewProps> = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n <Module {...AccountLoyaltyTile}>\n {heading}\n {description}\n {links}\n </Module>\n );\n};\n\nexport default AccountLoyaltyTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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<IAccountProfileEditItem> = ({ wrapper, label, errorMessage, input }) => {\n return (\n <Node {...wrapper}>\n {label}\n {errorMessage}\n {input}\n </Node>\n );\n};\n\nconst LocalAccount: React.FC<IAccountProfileEditLocalAccount> = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n <Node {...localAccount}>\n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return <AccountProfileEditItem {...item} />;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return <React.Fragment key={index}>{error}</React.Fragment>;\n })}\n <Node {...buttonsWrapper}>\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return <React.Fragment key={index}>{button}</React.Fragment>;\n })}\n </Node>\n\n <Node {...verificationSuccessModal}>\n <Node {...verificationSuccessModalMessage} />\n </Node>\n </Node>\n );\n};\n\nconst AccountProfileEditLoading: React.FC<IAccountProfileEditLoading> = ({ modal, modalBody, icon, message }) => {\n return (\n <Node {...modal}>\n <Node {...modalBody}>\n {icon}\n {message}\n </Node>\n </Node>\n );\n};\n\nconst AccountProfileEditView: React.FC<IAccountProfileEditViewProps> = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n <Module {...accountProfileEdit}>\n {viewState.isShowLoading && <Node {...defaultAADConainer} />}\n {viewState.isShowLoading && <AccountProfileEditLoading {...loading} />}\n <Node {...aadConainer}>\n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n </Node>\n </Module>\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetButtonComponent from './components/password-reset-button';\nimport PasswordResetErrorComponent from './components/password-reset-error';\nimport PasswordResetInputComponent from './components/password-reset-input';\nimport PasswordResetLabelComponent from './components/password-reset-label';\nimport PasswordResetLoadingIconComponent from './components/password-reset-loading-icon';\nimport PasswordResetLoadingMessageComponent from './components/password-reset-loading-message';\nimport { IPasswordResetConfig, IPasswordResetProps } from './password-reset.props.autogenerated';\n\nexport interface IPasswordResetViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetLocalAccount {\n localAccount: INodeProps;\n items: IPasswordResetItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetViewProps {\n className: string;\n viewState: IPasswordResetViewState;\n loading: IPasswordResetLoading;\n passwordReset: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetLocalAccount: IPasswordResetLocalAccount;\n}\n\n/**\n *\n * PasswordReset component.\n * @extends {React.Component<IPasswordResetProps<IPasswordResetConfig>>}\n */\n@observer\nclass PasswordReset extends React.Component<IPasswordResetProps<IPasswordResetConfig>> {\n private readonly moduleClassName: string = 'ms-password-reset';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetProps<IPasswordResetConfig>) {\n super(props);\n\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPasswordResetProps<IPasswordResetConfig>, nextState: IPasswordResetViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordReset: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: <PasswordResetLoadingIconComponent className={this.moduleClassName} />,\n message: <PasswordResetLoadingMessageComponent className={this.moduleClassName} message={resources.loadingMessage} />\n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n <Msdyn365.Text\n className={`${this.moduleClassName}__heading`}\n {...config.heading}\n editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n />\n ),\n passwordResetLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n switch (obj.ID.toLowerCase()) {\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n });\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IPasswordResetLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('newPassword', 'password', resources.newPasswordLabelText, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, this.reenterPasswordRegex)\n ],\n errorMessage: [\n <PasswordResetErrorComponent\n key='passwordEntryMismatch'\n id='passwordEntryMismatch'\n className={this.moduleClassName}\n message={resources.passwordEntryMismatchError}\n />,\n <PasswordResetErrorComponent\n key='requiredFieldMissing'\n id='requiredFieldMissing'\n className={this.moduleClassName}\n message={resources.requiredFieldMissingError}\n />,\n <PasswordResetErrorComponent\n key='email_fail_throttled'\n id='fieldIncorrect'\n className={this.moduleClassName}\n message={resources.fieldIncorrectError}\n />,\n <PasswordResetErrorComponent\n key='claimVerificationServerError'\n id='claimVerificationServerError'\n className={this.moduleClassName}\n />\n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n <PasswordResetButtonComponent\n key='continue'\n id='continue'\n className={`${this.moduleClassName}__continue-button`}\n ariaLabel={resources.saveButtonAriaLabel}\n text={resources.saveButtonText}\n telemetryContent={this.telemetryContent}\n />,\n <PasswordResetButtonComponent\n key='cancel'\n id='cancel'\n className={`${this.moduleClassName}__cancel-button`}\n ariaLabel={resources.cancelButtonText}\n text={resources.cancelButtonText}\n telemetryContent={this.telemetryContent}\n />\n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(id: string, type: string, labelText: string, pattern?: string): IPasswordResetItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n <PasswordResetLabelComponent\n {...{\n id,\n forId: id,\n className,\n text: labelText\n }}\n />\n ),\n errorMessage: (\n <PasswordResetErrorComponent\n {...{\n className: this.moduleClassName,\n type: 'item'\n }}\n />\n ),\n input: (\n <PasswordResetInputComponent\n {...{\n id,\n type,\n pattern,\n className\n }}\n />\n )\n };\n }\n}\n\nexport default PasswordReset;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps } from './password-reset';\n\nconst PasswordResetItem: React.FC<IPasswordResetItem> = ({ wrapper, label, errorMessage, input }) => {\n return (\n <Node {...wrapper}>\n {label}\n {errorMessage}\n {input}\n </Node>\n );\n};\n\nconst LocalAccount: React.FC<IPasswordResetLocalAccount> = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n <Node {...localAccount}>\n {items &&\n items.map((item: IPasswordResetItem) => {\n // eslint-disable-next-line react/jsx-key\n return <PasswordResetItem {...item} />;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return <React.Fragment key={index}>{error}</React.Fragment>;\n })}\n <Node {...buttonsWrapper}>\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return <React.Fragment key={index}>{button}</React.Fragment>;\n })}\n </Node>\n\n <Node {...verificationSuccessModal}>\n <Node {...verificationSuccessModalMessage} />\n </Node>\n </Node>\n );\n};\n\nconst PasswordResetLoading: React.FC<IPasswordResetLoading> = ({ modal, modalBody, icon, message }) => {\n return (\n <Node {...modal}>\n <Node {...modalBody}>\n {icon}\n {message}\n </Node>\n </Node>\n );\n};\n\nconst PasswordResetView: React.FC<IPasswordResetViewProps> = props => {\n const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n return (\n <Module {...passwordReset}>\n {viewState.isShowLoading && <Node {...defaultAADConainer} />}\n {viewState.isShowLoading && <PasswordResetLoading {...loading} />}\n <Node {...aadConainer}>\n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n </Node>\n </Module>\n );\n};\n\nexport default PasswordResetView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-header';\nconst headingClassName = `${componentClassName}__heading`;\nconst orderCountClassName = `${componentClassName}__order-count`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderResources {\n orderCountLabel: string;\n ordersCountLabel: string;\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderData interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderData {\n salesOrders: SalesOrder[];\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderProps\n extends Msdyn365.IComponentProps<IOrderHistoryWithSearchAndFiltersHeaderData> {\n className?: string;\n resources: IOrderHistoryWithSearchAndFiltersHeaderResources;\n textProps: Msdyn365.ITextProps;\n showOrderCount: boolean;\n extraActions?: React.ReactNode;\n onChange(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersHeader component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersHeaderFunctionalComponent: React.FC<IOrderHistoryWithSearchAndFiltersHeaderProps> = (\n props: IOrderHistoryWithSearchAndFiltersHeaderProps\n) => {\n const {\n resources,\n data: { salesOrders },\n textProps,\n showOrderCount,\n extraActions\n } = props;\n\n const orderCount = salesOrders?.length;\n const orderCountText = `(${orderCount} ${orderCount === 1 ? resources?.orderCountLabel : resources?.ordersCountLabel})`;\n\n return (\n <Node className={classnames(props.className, componentClassName)}>\n {textProps?.text && (\n <Msdyn365.Text\n {...textProps}\n className={headingClassName}\n tag={textProps.tag || 'h2'}\n editProps={{ onEdit: props.onChange, requestContext: props.context.request }}\n />\n )}\n {showOrderCount && <span className={orderCountClassName}>{orderCountText}</span>}\n {extraActions}\n </Node>\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersHeader component.\n */\nexport const OrderHistoryWithSearchAndFiltersHeaderComponent: React.FunctionComponent<IOrderHistoryWithSearchAndFiltersHeaderProps> = Msdyn365.msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersHeaderProps\n>('OrderHistoryWithSearchAndFiltersHeaderComponent', { component: OrderHistoryWithSearchAndFiltersHeaderFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC<IAccountOrganizationUsersTileDescription> = ({ description }) => (\n <p className='ms-account-organization-users-tile__description'>{description}</p>\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrganizationUsersTileLinks: React.FC<IAccountOrganizationUsersTileLinks> = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n <div className='ms-account-organization-users-tile__links'>\n {editableLinks && editableLinks.length > 0 ? (\n <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n ) : null}\n </div>\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps<IOrganizationUsersTileData> {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent<IOrganizationUsersTileProps<IOrganizationUsersTileData>>}\n */\nclass OrganizationUsersTile extends React.PureComponent<IOrganizationUsersTileProps<IOrganizationUsersTileData>> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps<IOrganizationUsersTileData>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription =\n numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n const customerInformation = data.customerInformation.result;\n\n // Organization-users tile will not be render for non-admin users.\n if (!customerInformation?.IsB2bAdmin) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n <Msdyn365.Text\n className='ms-account-organization-users-tile__heading'\n tag={heading.tag}\n text={heading.text}\n editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n />\n ),\n links: links && links.length > 0 && (\n <AccountOrganizationUsersTileLinks\n {...{\n links,\n onTextChange: this.handleLinkTextChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n ),\n description: (\n <AccountOrganizationUsersTileDescription description={format(accountOrganizationUsersTileDescription, numUsers || 0)} />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default OrganizationUsersTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport 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<ICheckInConfirmationProps> = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n <div className='msc-check-in-for-pickup__confirmation-section col-sm-12 col-md-4 offset-md-4'>\n <h2 className='msc-check-in-for-pickup__confirmation-heading'>{confirmationText}</h2>\n {channelReferenceId && (\n <p className='msc-check-in-for-pickup__confirmation-channel-reference-id'>\n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n </p>\n )}\n {channelReferenceId && shouldShowQrCode && (\n <span className='msc-check-in-for-pickup__confirmation-qr-code'>\n <QRCode value={channelReferenceId} size={80} />\n </span>\n )}\n </div>\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<ICheckInErrorProps> = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n <span className='msc-alert msc-alert-noborder msc-alert-danger'>\n <span className='msi-exclamation-triangle' aria-hidden='true' />\n <span>{errorMessage}</span>\n </span>\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<string>[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps<ICheckInForPickupConfig> {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise<void>;\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<ICheckInForPickupProps<ICheckInForPickupConfig>, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component<ICheckInForPickupProps<ICheckInForPickupConfig>, ICheckInForPickupState> {\n public constructor(props: ICheckInForPickupProps<ICheckInForPickupConfig>) {\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: <CheckInErrorComponent errorMessage={this.state.headerErrorMessage} />,\n confirmationComponent: (\n <CheckInConfirmationComponent\n confirmationText={this.props.resources.defaultConfirmationText}\n shouldShowQrCode={this.props.config.shouldShowQrCode as boolean}\n channelReferenceIdLabel={this.props.resources.confirmationIdLabel}\n channelReferenceId={this.props.context.request.query?.channelReferenceId}\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<ICheckInForPickupConfig>, 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<void> {\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<void> => {\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.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 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<void> => {\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n <Msdyn365.Text\n text={additionalContentHeading}\n tag='p'\n className='ms-content-block__details__additional-content__text'\n editProps={{\n /**\n * On edit event for heading text change.\n * @param event - Change event.\n */\n onEdit: event => {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n <Msdyn365.Text\n text={additionalContentParagraphText}\n tag='p'\n className='ms-content-block__details__additional-content__paragraph'\n editProps={{\n /**\n * On edit event for heading text change.\n * @param event - Change event.\n */\n onEdit: event => {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n <Msdyn365.Link\n key={linkIndex}\n link={editableLink}\n editProps={{\n /**\n * Handle additional Link Text change.\n * @param event - The keyboard event.\n */\n onTextChange: event => {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent<IContentCardLinks>}\n */\nexport class ContentCardLinks extends React.PureComponent<IContentCardLinks> {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n <div className='ms-content-block__cta'>\n {editableLinks && editableLinks.length > 0 ? (\n <Msdyn365.Links\n links={editableLinks}\n editProps={{ onTextChange: this.props.onTextChange, requestContext: this.props.requestContext }}\n />\n ) : null}\n </div>\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent<IContentBlockProps{}>}\n */\nexport class ContentBlock extends React.PureComponent<IContentBlockProps<{}>> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n <Msdyn365.Text\n className='ms-content-block__title'\n tag={heading.tag ?? 'h1'}\n text={heading.text}\n editProps={{ onEdit: this.handleTextChange, requestContext: this.props.context.request }}\n />\n );\n\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n <LinksComponent\n {...{\n links,\n onTextChange: this.handleLinkTextChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent,\n role: (this.props.config as IContentBlockFullConfig).msdyn365__moduleLayout === 'tile' ? 'link' : 'button'\n }}\n />\n );\n const contentBlockText = paragraph && (\n <Msdyn365.RichTextComponent\n text={paragraph}\n className='ms-content-block__text'\n editProps={{ onEdit: this.handleParagraphChange, requestContext: this.props.context.request }}\n />\n );\n\n let contentBlockImageSettings: Msdyn365.IImageSettings | undefined;\n\n if (image && image.imageSettings && !image.imageSettings.backgroundColor && this.props.config.backgroundColor) {\n contentBlockImageSettings = {\n ...image?.imageSettings,\n backgroundColor: this.props.config.backgroundColor\n };\n } else {\n contentBlockImageSettings = image?.imageSettings;\n }\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: contentBlockImageSettings\n };\n\n const contentBlockImage = (\n <Msdyn365.Image\n {...image}\n {...imageProps}\n requestContext={this.props.context.request}\n preserveImageSpace={true}\n editProps={{\n key: this.props.config.image ?? {},\n requestContext: this.props.context.request,\n moduleType: this.props.typeName,\n imagePropertyName: 'image',\n moduleId: this.props.id,\n layout: (this.props.config as IContentBlockFullConfig).msdyn365__moduleLayout\n }}\n shouldSkipToMainImage\n />\n );\n\n const contentBlockContainerStyle: React.CSSProperties | undefined = this.props.config.backgroundColor\n ? { backgroundColor: this.props.config.backgroundColor }\n : undefined;\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className),\n style: contentBlockContainerStyle\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ExtensibleEnumeration } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { IOrderLookupResources, IOrderLookupSearchAdditionalFieldsData } from '../order-lookup.props.autogenerated';\n\n/**\n * Render label.\n * @param className - Classname for label.\n * @param value - Text for label.\n * @returns -The JSX Element.\n */\nexport const labelGroup = (className: string, value: string): JSX.Element => {\n return <div className={className}>{value}</div>;\n};\n\n/**\n * Error label.\n * @param responseErrorMessage - Error message for label.\n * @param errorMessageClassName - Error message for class name.\n * @returns - Error ReactNode.\n */\nexport const renderErrorLabel = (responseErrorMessage: string, errorMessageClassName: string): React.ReactNode => {\n return responseErrorMessage && <div className={errorMessageClassName}>{responseErrorMessage}</div>;\n};\n\n/**\n * Registered user message.\n * @param resources - Resource values.\n * @param signInUrl - Signin url.\n * @param signInLinkClassName - Signin link classname.\n * @param registeredUserClassName - Registered user message classname.\n * @returns - ReactNode.\n */\nexport const renderRegisteredUserMessage = (\n resources: IOrderLookupResources,\n signInUrl: string,\n signInLinkClassName: string,\n registeredUserClassName: string\n): React.ReactNode => {\n const { orderLookupRegisteredUserText, orderLookupViewAccountText, orderLookupSignInLinkText } = resources;\n const message: string = orderLookupRegisteredUserText;\n const infoMessage: string = orderLookupViewAccountText;\n const signInText: string = orderLookupSignInLinkText;\n return (\n <div className={registeredUserClassName}>\n {message}\n <a className={signInLinkClassName} href={signInUrl}>\n {signInText}\n </a>\n {infoMessage}\n </div>\n );\n};\n\n/**\n * EmailValid submit.\n * @param email - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n};\n\n/**\n * Additional field validation for on submit.\n * @param name - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isAdditionalFieldValid = (name: string): boolean => {\n const regEx = new RegExp('^(?!\\\\s)[A-Za-z0-9\\\\s]+$', 'u');\n return regEx.test(name);\n};\n\n/**\n * Validate order lookup field against extensible enum.\n * @param orderStatusLookUpParameter - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupField = (\n orderStatusLookUpParameter: string,\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidField: boolean = false;\n for (const item of orderLookupExtensibleEnum) {\n if (item.Name.toLocaleLowerCase() === orderStatusLookUpParameter.toLocaleLowerCase()) {\n isValidField = true;\n return isValidField;\n }\n }\n return isValidField;\n};\n\n/**\n * Validate order lookup additional fields with proxy values.\n * @param value - Value to be validated.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateAdditionalFieldWithProxy = (value: string, orderLookupExtensibleEnum: ExtensibleEnumeration[]): boolean => {\n return !orderLookupExtensibleEnum.some(item => item.Name.toLocaleLowerCase() === value.toLocaleLowerCase());\n};\n\n/**\n * Validate order lookup additional fields against extensible enum.\n * @param orderStatusLookUpAdditionalParameters - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupAdditionalField = (\n orderStatusLookUpAdditionalParameters: IOrderLookupSearchAdditionalFieldsData[],\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidAdditionalField: boolean = false;\n if (ArrayExtensions.hasElements(orderStatusLookUpAdditionalParameters)) {\n orderStatusLookUpAdditionalParameters.map(item => {\n const fieldKey: string = item.fieldKey ?? '';\n if (!isValidAdditionalField) {\n isValidAdditionalField = validateAdditionalFieldWithProxy(fieldKey, orderLookupExtensibleEnum);\n }\n return isValidAdditionalField;\n });\n } else {\n isValidAdditionalField = false;\n }\n return isValidAdditionalField;\n};\n\n/**\n * Render validation message if field does not matches with extensible enum.\n * @param orderLookupFieldValidationErrorMessage - Order lookup validation message.\n * @returns - ReactNode.\n */\nexport const renderFieldErrors = (orderLookupFieldValidationErrorMessage: string): React.ReactNode => {\n return <div className='ms-order-lookup__field-value__error-message'>{orderLookupFieldValidationErrorMessage}</div>;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Additional input field props.\n */\nexport interface IOrderLookupAdditionalFieldInfoInput {\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n additionalFieldLabel: string;\n additionalFieldLabelClassName: string;\n isValidAdditionalFieldName: boolean;\n additionalFieldValidationMessage: string;\n onChange(event: React.ChangeEvent<HTMLInputElement>): void;\n}\n\n/**\n * Order lookup additional field props.\n */\nexport interface IOrderLookupAdditionalFieldInfo {\n additionalFieldLabel: React.ReactNode;\n additionalFieldInput: React.ReactNode;\n additionalFieldError: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupAdditionalFieldInput component.\n */\n@observer\nexport default class RenderOrderLookupAdditionalFieldInput extends React.Component<IOrderLookupAdditionalFieldInfoInput> {\n public constructor(props: IOrderLookupAdditionalFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupAdditionalFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n <div className='ms-order-lookup__details__form__additional-fields'>\n {this._getOrderLookupAdditionalFields().additionalFieldLabel}\n {this._getOrderLookupAdditionalFields().additionalFieldError}\n {this._getOrderLookupAdditionalFields().additionalFieldInput}\n </div>\n );\n }\n\n /**\n * Function to create the order lookup additional fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupAdditionalFields(): IOrderLookupAdditionalFieldInfo {\n return {\n additionalFieldLabel: labelGroup(this.props.additionalFieldLabelClassName, this.props.additionalFieldLabel),\n additionalFieldInput: (\n <div className='ms-order-lookup__details__form__additional-fields__input-detail'>\n <input\n type={this.props.inputType}\n onChange={this.props.onChange}\n aria-label={this.props.ariaLabel}\n value={this.props.value}\n name={this.props.name}\n />\n </div>\n ),\n additionalFieldError: (\n <div className='ms-order-lookup__details__form__additional-fields__input-error'>\n {!this.props.isValidAdditionalFieldName ? this.props.additionalFieldValidationMessage : ''}\n </div>\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 { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Input field props.\n */\nexport interface IOrderLookupFieldInfoInput {\n inputReference?: React.RefObject<HTMLInputElement>;\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n orderLookupLabel: string;\n orderLookupLabelClassName: string;\n fieldErrorClassName: string;\n isInputTypeError: boolean;\n isValidInputField: boolean;\n renderAlert(className: string): JSX.Element;\n onChange(event: React.ChangeEvent<HTMLInputElement>): void;\n}\n\n/**\n * Order lookup field props.\n */\nexport interface IOrderLookupFieldInfo {\n label: React.ReactNode;\n input: React.ReactNode;\n error: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupInputs component.\n */\n@observer\nexport default class RenderOrderLookupFormFields extends React.Component<IOrderLookupFieldInfoInput> {\n public constructor(props: IOrderLookupFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n <div className={this.props.className}>\n {this._getOrderLookupFields().label}\n {this._getOrderLookupFields().error}\n {this._getOrderLookupFields().input}\n </div>\n );\n }\n\n /**\n * Function to create the order lookup fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupFields(): IOrderLookupFieldInfo {\n return {\n label: labelGroup(this.props.orderLookupLabelClassName, this.props.orderLookupLabel),\n input: (\n <div className='ms-order-lookup__details__form__fields__input-detail'>\n <input\n ref={this.props.inputReference}\n type={this.props.inputType}\n onChange={this.props.onChange}\n aria-label={this.props.ariaLabel}\n value={this.props.value}\n name={this.props.name}\n />\n </div>\n ),\n error: (\n <div className={this.props.fieldErrorClassName}>\n {this.props.isInputTypeError ? this.props.renderAlert(this.props.name) : ''}\n {this.props.isValidInputField ? this.props.renderAlert(this.props.name) : ''}\n </div>\n )\n };\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { ExtensibleEnumeration, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport RenderOrderLookupAdditionalFieldInput from './components/order-lookup-additional-fields';\nimport RenderOrderLookupFormFields from './components/order-lookup-fields';\nimport {\n IOrderLookupProps,\n IOrderLookupSearchAdditionalFieldsData,\n orderStatusLookUpParametersType as orderStatusLookUpParametersTypes\n} from './order-lookup.props.autogenerated';\nimport {\n isAdditionalFieldValid,\n isEmailValid,\n renderErrorLabel,\n renderFieldErrors,\n renderRegisteredUserMessage,\n validateOrderLookupAdditionalField,\n validateOrderLookupField\n} from './utilities/order-lookup-utility';\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupViewProps extends IOrderLookupProps<{}> {\n additionalProperties: JSX.Element[] | undefined;\n orderLookup: IModuleProps;\n orderLookupContainer: INodeProps;\n orderLookupAdditionalFieldContainer: INodeProps;\n paragraph?: React.ReactNode;\n heading?: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n orderLookupForm?: INodeProps;\n renderOrderLookupInputField: JSX.Element | undefined;\n orderNumberInput?: JSX.Element | undefined;\n errorMessage?: React.ReactNode;\n fieldErrorMessage?: React.ReactNode;\n registeredUserMessage?: React.ReactNode;\n onChange?(event: React.ChangeEvent<HTMLInputElement>): void;\n submit?(): void;\n}\n\n/**\n * OrderLookupSearchValues -- supported values.\n */\nenum OrderLookupSearchValues {\n email = 'email',\n ordernumber = 'ordernumber'\n}\n\n/**\n * To render and handle state for additional order lookup fields.\n */\nexport interface IOrderLookupAdditionalFields {\n labelName: string;\n isValidFieldName: boolean;\n fieldValue: string;\n ariaLabel: string;\n additionalfieldErrorMessage: string;\n}\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupFormState {\n orderNumber: string;\n email: string;\n isOrdNumberError: boolean;\n isEmailError: boolean;\n isValidEmailError: boolean;\n isReqError: boolean;\n isDisabled: boolean;\n isValidLookupField: boolean;\n isValidAdditionalLookupField: boolean;\n responseErrorMessage: string;\n additionalProperties: IOrderLookupAdditionalFields[];\n}\n\n/**\n *\n * OrderLookup component.\n * @extends {React.PureComponent<IOrderLookupProps<{}>>}\n */\nclass OrderLookup extends React.PureComponent<IOrderLookupProps<{}>, IOrderLookupFormState> {\n public orderNumberInputRef: React.RefObject<HTMLInputElement>;\n\n public emailInputRef: React.RefObject<HTMLInputElement>;\n\n public isEmailValue: boolean = false;\n\n private requiredErrorMessage: string | undefined;\n\n private emailValidationErrorMessage: string | undefined;\n\n private isOrderNumberValue: boolean = false;\n\n private orderLookupExtensibleEnum: ExtensibleEnumeration[] = [];\n\n public constructor(props: IOrderLookupProps<{}>) {\n super(props);\n this.orderNumberInputRef = React.createRef();\n this.emailInputRef = React.createRef();\n const { config } = this.props;\n const { orderLookupSearchAdditionalFields } = config;\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n\n if (orderLookupSearchAdditionalFields) {\n for (const item of orderLookupSearchAdditionalFields) {\n additionalPropertyStates.push({\n labelName: item.labelName ?? '',\n isValidFieldName: true,\n fieldValue: '',\n ariaLabel: item.ariaLabel ?? '',\n additionalfieldErrorMessage: item.validationMessage ?? ''\n });\n }\n }\n\n this.state = {\n orderNumber: '',\n email: '',\n isOrdNumberError: false,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false,\n isDisabled: true,\n isValidLookupField: true,\n isValidAdditionalLookupField: false,\n responseErrorMessage: '',\n additionalProperties: additionalPropertyStates\n };\n }\n\n public render(): JSX.Element | null {\n const {\n config: { paragraph, heading },\n resources,\n context\n } = this.props;\n\n const {\n orderLookupDefaultHeadingText,\n orderLookupButtonLabel,\n orderLookupFormAriaLabel,\n orderLookupOrderNumberLabel,\n orderLookupOrderNumberAriaLabel,\n orderLookupSubmitAriaLabel,\n orderLookupFieldValidationErrorMessage\n } = resources;\n\n const { responseErrorMessage, isDisabled, orderNumber, isOrdNumberError } = this.state;\n\n const headingText = StringExtensions.isNullOrEmpty(heading?.text) ? orderLookupDefaultHeadingText : heading?.text;\n const headingTag = heading?.tag ?? 'h1';\n\n const moduleClassName = 'ms-order-lookup';\n const orderLookupContainerClassName = `${moduleClassName}__details`;\n const orderLookupHeadingClassName = `${orderLookupContainerClassName}__heading`;\n const orderLookupFormClassName = `${orderLookupContainerClassName}__form`;\n const orderLookupAdditionalFiledContainerClassName = `${orderLookupFormClassName}__additional-fields-container`;\n const orderLookupFormFieldsClassName = `${orderLookupFormClassName}__fields`;\n const orderNumberLabelClassName = `${orderLookupFormFieldsClassName}__order-number-label`;\n const orderNumberInputErrorClassName = `${orderLookupFormFieldsClassName}__order-number-input-error`;\n const submitButtonClassName = `${orderLookupFormClassName}__submit`;\n const labelErrorMessageClassName = `${moduleClassName}__error-message`;\n const registeredUserClassName = `${moduleClassName}__registered-user`;\n const signinLinkClassName = `${registeredUserClassName}__sign-in-link msc-btn`;\n\n const orderLookupHeading = (\n <Msdyn365.Text\n className={orderLookupHeadingClassName}\n tag={headingTag}\n text={headingText}\n editProps={{ onEdit: this.handleTextChange, requestContext: this.props.context.request }}\n />\n );\n\n const viewProps: IOrderLookupViewProps = {\n ...this.props,\n orderLookup: {\n moduleProps: this.props,\n className: moduleClassName\n },\n\n orderLookupContainer: {\n className: orderLookupContainerClassName\n },\n orderLookupAdditionalFieldContainer: {\n className: orderLookupAdditionalFiledContainerClassName\n },\n paragraph: paragraph && this._createParagraph(paragraph),\n heading: orderLookupHeading,\n\n renderOrderLookupInputField: this._renderOrderLookupInput(),\n orderLookupForm: {\n className: orderLookupFormClassName,\n tag: 'form',\n 'aria-label': orderLookupFormAriaLabel,\n name: 'orderLookupForm',\n role: 'form',\n autoComplete: 'off',\n onSubmit: this.handleSubmit\n },\n orderNumberInput: (\n <RenderOrderLookupFormFields\n inputReference={this.orderNumberInputRef}\n ariaLabel={orderLookupOrderNumberAriaLabel}\n className={orderLookupFormFieldsClassName}\n inputType='text'\n value={orderNumber}\n name={OrderLookupSearchValues.ordernumber}\n orderLookupLabel={orderLookupOrderNumberLabel}\n orderLookupLabelClassName={orderNumberLabelClassName}\n fieldErrorClassName={orderNumberInputErrorClassName}\n isInputTypeError={false}\n isValidInputField={isOrdNumberError}\n renderAlert={this._renderOrderNumberAlert}\n onChange={this.onChange}\n />\n ),\n\n submitButton: {\n className: submitButtonClassName,\n tag: Button,\n 'aria-label': orderLookupSubmitAriaLabel,\n type: 'submit',\n role: 'button',\n title: orderLookupButtonLabel,\n onClick: this.handleSubmit,\n disabled: isDisabled\n },\n\n submitButtonLabelText: orderLookupButtonLabel,\n errorMessage: renderErrorLabel(responseErrorMessage, labelErrorMessageClassName),\n fieldErrorMessage:\n (!this.state.isValidLookupField || this.state.isValidAdditionalLookupField) &&\n renderFieldErrors(orderLookupFieldValidationErrorMessage),\n registeredUserMessage: renderRegisteredUserMessage(\n resources,\n context.request.user.signInUrl ?? '',\n signinLinkClassName,\n registeredUserClassName\n ),\n onChange: this.onChange,\n submit: this.handleSubmit,\n additionalProperties: this._renderAdditionalFields()\n };\n return this.props.renderView(viewProps);\n }\n\n public async componentDidMount(): Promise<void> {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { orderStatusLookUpParametersType, orderLookupSearchAdditionalFields } = config;\n let isOrderLookupAdditionalFieldValid: boolean = false;\n let isOrderLookupFieldValid: boolean = false;\n\n const getExtensibleEnumerations = await StoreOperationsDataActions.getExtensibleEnumerationsAsync({ callerContext: actionContext });\n this.orderLookupExtensibleEnum =\n getExtensibleEnumerations.find(item => item.TypeName === 'OrderLookupAdditionalCriteriaType')?.ExtensibleEnumerations ?? [];\n\n const orderLookupParameter: string = orderStatusLookUpParametersType ?? '';\n const orderLookupAdditionalParameter: IOrderLookupSearchAdditionalFieldsData[] = orderLookupSearchAdditionalFields ?? [];\n\n isOrderLookupFieldValid = validateOrderLookupField(orderLookupParameter, this.orderLookupExtensibleEnum);\n isOrderLookupAdditionalFieldValid = validateOrderLookupAdditionalField(\n orderLookupAdditionalParameter,\n this.orderLookupExtensibleEnum\n );\n this.setLookupFieldState(isOrderLookupFieldValid, isOrderLookupAdditionalFieldValid);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n const { config } = this.props;\n config.paragraph = event.target.value;\n };\n\n /**\n * Sets isValidLookupField after validating with extensible emun.\n * @param isValidField - Sets the property.\n * @param isValidAdditionalField - Sets the additional field property.\n */\n public setLookupFieldState(isValidField: boolean, isValidAdditionalField: boolean): void {\n this.setState({ isValidLookupField: isValidField, isValidAdditionalLookupField: isValidAdditionalField });\n }\n\n /**\n * HandleSubmit submit.\n */\n public readonly handleSubmit = (): void => {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { additionalProperties, orderNumber, email } = this.state;\n const orderLookupValue = email;\n const { orderStatusLookUpParametersType } = config;\n const orderLookupName = orderStatusLookUpParametersType !== undefined ? orderStatusLookUpParametersType : '';\n const isValid: boolean = this._validateOrderLookupForm();\n if (isValid) {\n const actionContextValue: IActionContext = actionContext;\n const orderDetailsPath = Msdyn365.getUrlSync('orderDetails', actionContextValue) ?? '';\n if (orderDetailsPath) {\n const baseUrl = new URL(window.location.origin);\n const redirectUrl = new URL(orderDetailsPath, baseUrl);\n const searchParameters = redirectUrl.searchParams;\n\n searchParameters.set('confirmationId', orderNumber);\n searchParameters.set('propertyName', orderLookupName);\n searchParameters.set('propertyValue', orderLookupValue);\n\n if (ArrayExtensions.hasElements(additionalProperties)) {\n additionalProperties.map((item, index) => {\n const fieldName = !StringExtensions.isNullOrWhitespace(item.ariaLabel)\n ? item.ariaLabel.replace(' ', '').toLocaleLowerCase()\n : '';\n const fieldValue = !StringExtensions.isNullOrWhitespace(item.fieldValue) ? item.fieldValue : '';\n searchParameters.set(`field${index + 1}Name`, fieldName);\n searchParameters.set(`field${index + 1}Value`, fieldValue);\n return item;\n });\n }\n\n window.location.assign(redirectUrl.toString());\n }\n }\n };\n\n /**\n * OnChange event.\n * @param event - Value of input field.\n */\n public readonly onChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const { additionalProperties } = this.state;\n const { config } = this.props;\n const { orderStatusLookUpParametersType } = config;\n const name = event.target.name || '';\n const value = event.target.value || '';\n this.isOrderNumberValue = !StringExtensions.isNullOrWhitespace(this.orderNumberInputRef.current?.value);\n this.isEmailValue = !StringExtensions.isNullOrWhitespace(this.emailInputRef.current?.value);\n\n if (orderStatusLookUpParametersType?.toLocaleLowerCase() === 'none') {\n this.isEmailValue = true;\n }\n\n this.setState({ responseErrorMessage: '' });\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isAdditionalFieldError: boolean = true as boolean;\n let isKeyExistInAdditionalFieldArray: boolean = false as boolean;\n\n for (const item of additionalProperties) {\n const fieldName: string = item.ariaLabel.replace(' ', '');\n if (fieldName.toLocaleLowerCase() === name.toLocaleLowerCase()) {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: true,\n fieldValue: value,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n } else {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: item.isValidFieldName,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n if (fieldName.toLocaleLowerCase() === orderStatusLookUpParametersType?.toLocaleLowerCase()) {\n isKeyExistInAdditionalFieldArray = true;\n }\n }\n\n for (const items of additionalPropertyStates) {\n if (StringExtensions.isNullOrWhitespace(items.fieldValue)) {\n isAdditionalFieldError = false;\n }\n }\n\n this.setState({ additionalProperties: additionalPropertyStates });\n\n if (!isKeyExistInAdditionalFieldArray) {\n switch (name.toLocaleLowerCase()) {\n case OrderLookupSearchValues.ordernumber: {\n this.setState({\n orderNumber: value,\n isOrdNumberError: false,\n isReqError: false\n });\n break;\n }\n case OrderLookupSearchValues.email: {\n this.setState({\n email: value,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false\n });\n break;\n }\n default: {\n this.setState({ isReqError: false });\n }\n }\n }\n\n if (\n this.isOrderNumberValue &&\n this.isEmailValue &&\n isAdditionalFieldError &&\n this.state.isValidLookupField &&\n !this.state.isValidAdditionalLookupField\n ) {\n this.setState({ isDisabled: false });\n } else {\n this.setState({ isDisabled: true });\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n const { context } = this.props;\n const { request } = context;\n if (!text) {\n return null;\n }\n return (\n <Msdyn365.RichTextComponent\n text={text}\n className='ms-order-lookup__details__text'\n editProps={{ onEdit: this.handleParagraphChange, requestContext: request }}\n />\n );\n }\n\n /**\n * Render order lookup validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupEmailValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isEmailError, email, isValidEmailError, isReqError } = this.state;\n if (isEmailError) {\n this.requiredErrorMessage = orderLookupRequiredTextErrorMessage;\n }\n\n if (!StringExtensions.isNullOrEmpty(email) && isValidEmailError) {\n this.emailValidationErrorMessage = orderLookupEmailValidationErrorMessage;\n }\n\n const isRequireError = isReqError;\n const isEmailValidError = isValidEmailError;\n const isValidEmailInput = className.toLocaleLowerCase() === OrderLookupSearchValues.email;\n return (\n <>\n {isRequireError && (\n <span className={`${className}__alert`} role='alert'>\n {this.requiredErrorMessage}\n </span>\n )}\n {isEmailValidError && isValidEmailInput && (\n <span className={`${className}__alert`} role='alert'>\n {this.emailValidationErrorMessage}\n </span>\n )}\n </>\n );\n };\n\n /**\n * Render order number validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderOrderNumberAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupOrderNumberValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isOrdNumberError, isReqError } = this.state;\n return (\n <>\n {isReqError && (\n <span className={`${className}__alert`} role='alert'>\n {orderLookupRequiredTextErrorMessage}\n </span>\n )}\n {isOrdNumberError && (\n <span className={`${className}__alert`} role='alert'>\n {orderLookupOrderNumberValidationErrorMessage}\n </span>\n )}\n </>\n );\n };\n\n private _renderAdditionalFields(): JSX.Element[] | undefined {\n const { additionalProperties } = this.state;\n const additionalFieldsInput: JSX.Element[] = [];\n for (const item of additionalProperties) {\n const name: string = item.ariaLabel.replace(' ', '');\n additionalFieldsInput.push(\n <RenderOrderLookupAdditionalFieldInput\n className={name.toLocaleLowerCase()}\n ariaLabel={item.ariaLabel}\n inputType='text'\n value={item.fieldValue}\n name={name.toLocaleLowerCase()}\n additionalFieldLabel={item.labelName}\n additionalFieldLabelClassName='ms-order-lookup__details__form__additional-fields__label'\n isValidAdditionalFieldName={item.isValidFieldName}\n additionalFieldValidationMessage={item.additionalfieldErrorMessage}\n onChange={this.onChange}\n />\n );\n }\n return additionalFieldsInput;\n }\n\n /**\n * Render Input field for order lookup.\n * @returns - IOrderLookupFieldInfo.\n */\n private readonly _renderOrderLookupInput = (): JSX.Element | undefined => {\n const { email, isEmailError, isValidEmailError } = this.state;\n const {\n config: { orderStatusLookUpParametersType },\n resources: { orderLookupEmailLabel, orderLookupEmailAriaLabel }\n } = this.props;\n\n switch (orderStatusLookUpParametersType) {\n case orderStatusLookUpParametersTypes.none:\n return undefined;\n case orderStatusLookUpParametersTypes.email:\n default:\n return (\n <RenderOrderLookupFormFields\n inputReference={this.emailInputRef}\n ariaLabel={orderLookupEmailAriaLabel}\n className='ms-order-lookup__details__form__fields'\n inputType='text'\n value={email}\n name={OrderLookupSearchValues.email}\n orderLookupLabel={orderLookupEmailLabel}\n orderLookupLabelClassName='ms-order-lookup__details__form__fields__email-label'\n fieldErrorClassName='ms-order-lookup__details__form__fields__email-input-error'\n isInputTypeError={isEmailError}\n isValidInputField={isValidEmailError}\n renderAlert={this._renderAlert}\n onChange={this.onChange}\n />\n );\n }\n };\n\n /**\n * _validation for additional fields.\n * @returns - Returns IOrderLookupAdditionalFields[].\n */\n private readonly _additionalFieldValidation = (): IOrderLookupAdditionalFields[] => {\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n for (const item of this.state.additionalProperties) {\n const isFieldValid: boolean = !StringExtensions.isNullOrWhitespace(item.fieldValue) && isAdditionalFieldValid(item.fieldValue);\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: isFieldValid,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n return additionalPropertyStates;\n };\n\n /**\n * _validateOrderLookupForm submit.\n * @returns - Returns boolean.\n */\n private readonly _validateOrderLookupForm = (): boolean => {\n const { config } = this.props;\n const { orderNumber, email } = this.state;\n const { orderStatusLookUpParametersType } = config;\n let additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isValid = false;\n let isDisable = false;\n\n if (ArrayExtensions.hasElements(this.state.additionalProperties)) {\n additionalPropertyStates = this._additionalFieldValidation();\n for (const item of additionalPropertyStates) {\n if (!item.isValidFieldName) {\n isDisable = true;\n }\n }\n\n if (isDisable) {\n this.setState({\n additionalProperties: additionalPropertyStates,\n isDisabled: true\n });\n }\n }\n\n if (StringExtensions.isNullOrWhitespace(orderNumber)) {\n this.setState({\n isOrdNumberError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderNumber.trim() !== orderNumber) {\n this.setState({\n isOrdNumberError: true,\n isReqError: false,\n isDisabled: true\n });\n } else if (\n orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email &&\n StringExtensions.isNullOrWhitespace(email)\n ) {\n this.setState({\n isEmailError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email && !isEmailValid(email)) {\n this.setState({\n isValidEmailError: true,\n isDisabled: true\n });\n } else if (isDisable || !this.state.isValidLookupField || this.state.isValidAdditionalLookupField) {\n this.setState({\n isDisabled: true\n });\n } else {\n this.setState({\n isDisabled: false\n });\n isValid = true;\n }\n return isValid;\n };\n}\n\nexport default OrderLookup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps<ISocialShareConfig> {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent<ISocialShareProps<ISocialShareConfig>>}\n */\nclass SocialShare extends React.PureComponent<ISocialShareProps<ISocialShareConfig>> {\n constructor(props: ISocialShareProps<ISocialShareConfig>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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<ITileListProps<{}>>}\n */\nexport class TileList extends React.PureComponent<ITileListProps<{}>> {\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 <Heading headingTag={heading.tag} text={heading.text} className='ms-tile-list__title' />;\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<ISingleSlideCarouselProps> = {\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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-gift-card/./checkout-gift-card';\r\n\r\nexport const From: React.FC<IForm> = ({ formProps, label, inputPinLabel, inputExpLabel, alert, inputProps, inputNumProps,\r\n inputPinProps, inputExpProps, inputNumber, inputPin, inputExp, applyButton, supportExternalGiftCard, showGiftCardPinInput, showGiftCardExpInput, alertFieldLabel }) => (\r\n <Node {...formProps}>\r\n {supportExternalGiftCard ? \r\n <Node {...inputProps}>\r\n <Node {...inputNumProps}>\r\n {label}\r\n {alert}\r\n {inputNumber}\r\n </Node>\r\n {showGiftCardPinInput &&\r\n <Node {...inputPinProps}>\r\n {inputPinLabel}\r\n {inputPin}\r\n </Node>}\r\n {showGiftCardExpInput &&\r\n <Node {...inputExpProps}>\r\n {inputExpLabel}\r\n {inputExp}\r\n </Node>}\r\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\r\n \r\n {applyButton}\r\n </Node> : <>\r\n {label}\r\n {alert}\r\n {inputNumber}\r\n {applyButton}\r\n \r\n </>}\r\n </Node>\r\n);\r\n\r\nexport const SelectedGiftCard: React.FC<IItem> = ({ itemProps, selectedGiftCard, removeButton }) => (\r\n <Node {...itemProps}>\r\n {selectedGiftCard}\r\n {removeButton}\r\n </Node>\r\n);\r\n\r\nexport const GiftCardList: React.FC<IList> = ({ listProps, list }) => (\r\n <Node {...listProps}>\r\n {list.map(({ id, ...item }) => (\r\n <SelectedGiftCard key={id} {...item} />\r\n ))}\r\n </Node>\r\n);\r\n\r\nexport const AddResource: React.FC<IAddResource> = ({ form, list }) => (\r\n <>\r\n {form && <From {...form} />}\r\n {list && <GiftCardList {...list} />}\r\n </>\r\n);\r\n\r\n\r\nexport const ShowResource: React.FC<IShowResource> = ({ title, list }) => (\r\n <>\r\n {title}\r\n {list && <GiftCardList {...list} />}\r\n </>\r\n);\r\n\r\nconst CheckoutGiftCardView: React.FC<ICheckoutGiftCardViewProps> = props => {\r\n const { checkoutGiftCardProps, showGiftCard, addGiftCard } = props;\r\n return (\r\n <Module {...checkoutGiftCardProps}>\r\n {showGiftCard && <ShowResource {...showGiftCard} />}\r\n {addGiftCard && <AddResource {...addGiftCard} />}\r\n </Module>\r\n );\r\n};\r\n\r\nexport default CheckoutGiftCardView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow,\r\n ICheckoutLoyaltyViewProps\r\n} from '@msdyn365-commerce-modules/checkout/src/modules/checkout-loyalty/./checkout-loyalty';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { ICheckoutLoyaltyProps } from \"../definition-extensions/checkout-loyalty.ext.props.autogenerated\";\r\n\r\n\r\ninterface ICheckoutLoyaltyAddExtended extends ICheckoutLoyaltyAdd {\r\n notEnoughPointsErrorString: string;\r\n showNotEnoughPointsError: boolean;\r\n}\r\n\r\nconst AddCheckoutLoyalty: React.FC<ICheckoutLoyaltyAddExtended> = ({\r\n heading,\r\n cardNumber,\r\n drawer,\r\n rewardPoints,\r\n loyaltyAmountContainer,\r\n appliedLoyaltyAmountContainer,\r\n loyaltyAmountLabel,\r\n loyaltyAmountInput,\r\n loyaltyAmountApplyButton,\r\n showAppliedAmount,\r\n loyaltyAmountAppliedText,\r\n loyaltyAmountAppliedPrice,\r\n loyaltyAmountRemoveButton,\r\n notEnoughPointsErrorString,\r\n showNotEnoughPointsError\r\n}) => {\r\n return (\r\n <>\r\n {heading}\r\n {cardNumber}\r\n <Node {...drawer}>\r\n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\r\n return (\r\n <Node {...rewardPoint.checkoutLoyaltyRewardPoint} key={rewardPoint.key}>\r\n {rewardPoint.title}\r\n {rewardPoint.availablePointsText}\r\n {rewardPoint.activePoints}\r\n {rewardPoint.expiringPointsText}\r\n {rewardPoint.expiringPoints}\r\n </Node>\r\n );\r\n })}\r\n </Node>\r\n <Node {...loyaltyAmountContainer}>\r\n {loyaltyAmountLabel}\r\n {loyaltyAmountInput}\r\n {loyaltyAmountApplyButton}\r\n {\r\n showAppliedAmount &&\r\n <Node {...appliedLoyaltyAmountContainer}>\r\n {loyaltyAmountAppliedText}\r\n {loyaltyAmountAppliedPrice}\r\n {loyaltyAmountRemoveButton}\r\n </Node>\r\n }\r\n </Node>\r\n {showNotEnoughPointsError && <p>{notEnoughPointsErrorString}</p>}\r\n </>\r\n );\r\n};\r\n\r\nconst ShowCheckoutLoyalty: React.FC<ICheckoutLoyaltyShow> = ({\r\n heading,\r\n coveredAmountText,\r\n amount\r\n}) => {\r\n\r\n return (\r\n <>\r\n {heading}\r\n {coveredAmountText}\r\n {amount}\r\n </>\r\n );\r\n};\r\n\r\nconst CheckoutLoyaltyView: React.FC<ICheckoutLoyaltyViewProps & ICheckoutLoyaltyProps<{}>> = props => {\r\n const [ initialized , setInitialized ] = React.useState<boolean>(false);\r\n const [ showMinValueError , setShowMinvalueError ] = React.useState<boolean>(false);\r\n const { checkoutLoyalty,\r\n viewState,\r\n showLoyalty,\r\n addLoyalty,\r\n resources: {\r\n notEnoughPointsErrorString,\r\n notEnoughPointsMessage\r\n },\r\n config: {\r\n minLoyaltyRedeemAmount\r\n },\r\n context: {\r\n cultureFormatter: {\r\n formatCurrency\r\n }\r\n }\r\n } = props;\r\n const maxDollars = getMaxDollars(props);\r\n const minDollars = minLoyaltyRedeemAmount ? (minLoyaltyRedeemAmount * .10) : 0;\r\n const minPoints = minLoyaltyRedeemAmount || 0;\r\n if (MsDyn365.isBrowser && !initialized) {\r\n const input = document.querySelector<HTMLInputElement>('.ms-checkout-loyalty__amount-input');\r\n const btn = document.querySelector<HTMLButtonElement>('.ms-checkout-loyalty__amount-button');\r\n if (input && btn) {\r\n setInitialized(true);\r\n loyaltyGuard(minDollars, input, btn, setShowMinvalueError);\r\n }\r\n\r\n }\r\n\r\n const addLoyaltyExtended: ICheckoutLoyaltyAddExtended = {\r\n ...addLoyalty,\r\n notEnoughPointsErrorString: notEnoughPointsErrorString.replace('{0}', formatCurrency(minDollars)),\r\n showNotEnoughPointsError: showMinValueError\r\n }\r\n\r\n let cartDollars = props.data.checkout.result?.checkoutCart.cart.TotalAmount || 0;\r\n return (\r\n <Module {...checkoutLoyalty}>\r\n {minDollars > cartDollars ? (\r\n <>\r\n <p>{formatCartValueTooLowMessage(props.resources.cartValueTooLowMessage, minPoints.toString(), formatCurrency(minDollars), formatCurrency(cartDollars))}</p>\r\n </> \r\n ) : \r\n maxDollars >= minDollars || minDollars === 0 ? (\r\n <>\r\n {viewState.isShowLoyalty && <ShowCheckoutLoyalty {...showLoyalty} />}\r\n {viewState.isShowAddLoyalty && <AddCheckoutLoyalty {...addLoyaltyExtended} />}\r\n </>\r\n ) : (\r\n <>\r\n <p>{formatNotEnoughPointsMessage(notEnoughPointsMessage, minPoints.toString(), formatCurrency(minDollars), formatCurrency(maxDollars))}</p>\r\n </>)\r\n }\r\n\r\n </Module>\r\n );\r\n};\r\n\r\nconst formatNotEnoughPointsMessage = (message: string, minPoints:string, minDollars: string, maxDollars: string) =>\r\n message.replace('{0}', minPoints).replace('{1}', minDollars).replace('{2}', maxDollars);\r\n\r\n const formatCartValueTooLowMessage = (message: string, minPoints: string, equivalentDollars:string, cartDollars: string) =>\r\n formatNotEnoughPointsMessage(message, minPoints, equivalentDollars, cartDollars);\r\n\r\n\r\nconst getMaxDollars = (props: ICheckoutLoyaltyViewProps): number => {\r\n return props.data.loyaltyTransactionEstimation.result &&\r\n props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints ? props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints : 0;\r\n}\r\n\r\nconst loyaltyGuard = (minDollars: number, input: HTMLInputElement, button: HTMLButtonElement, setShowMinValueError: React.Dispatch<React.SetStateAction<boolean>>) => {\r\n input.addEventListener('keyup', (e) => {\r\n // @ts-ignore - yes it is\r\n const value = e.target?.value;\r\n if (value) {\r\n const parsedValue = parseFloat(value);\r\n const isError = parsedValue < minDollars;\r\n button.disabled = isError;\r\n setShowMinValueError(isError);\r\n }\r\n })\r\n}\r\n\r\nexport default CheckoutLoyaltyView;\r\n","import * as React from 'react';\r\nimport { IK3ProductCompositionTable, K3ProductCompositionTableExtensionClass } from '@k3-msdyn365-commerce-modules/k3.msdyn365.commerce.online/dist/types/actions/DataServiceEntities.g';\r\nimport { IK3CompositionsViewProps } from '@k3-msdyn365-commerce-modules/k3.msdyn365.commerce.online/dist/types/modules/k3-compositions/k3-compositions';\r\nimport { Drawer } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IK3CompositionsViewProps) => {\r\n const {\r\n data: { productCompositions, compositionTypes, fibres },\r\n productRecId\r\n } = props;\r\n\r\n let open = true;\r\n\r\n const [compositionState, setCompositionState] = React.useState<IK3ProductCompositionTable[] | undefined>(undefined);\r\n\r\n const _toggle = () => (): void => {\r\n open = !open;\r\n };\r\n\r\n const [hasSetValue, setHasSetValue] = React.useState<boolean>(false);\r\n\r\n if (!hasSetValue) {\r\n const renderModule =\r\n productRecId && !!productCompositions.result?.filter(composition => composition.Product === productRecId).length;\r\n\r\n if (renderModule) {\r\n const thatOne = productCompositions.result?.filter(\r\n composition => composition.Product === productRecId && composition.ItemDataAreaId === ''\r\n );\r\n if (thatOne && thatOne.length > 0) {\r\n setCompositionState(thatOne);\r\n setHasSetValue(true);\r\n }\r\n }\r\n }\r\n\r\n if (compositionState && compositionState.length) {\r\n const compositionMap = new Map();\r\n compositionState.forEach(cs => {\r\n const collection = compositionMap.get(cs.CompositionType);\r\n if (!collection) {\r\n compositionMap.set(cs.CompositionType, [cs]);\r\n } else {\r\n collection.push(cs);\r\n }\r\n });\r\n // console.log(compositionState);\r\n return (\r\n <Drawer\r\n key={'materialslot'}\r\n collapseProps={{\r\n timeout: 0,\r\n isOpen: true\r\n }}\r\n className='ms-product-specification__drawer'\r\n openGlyph='ms-product-specification__drawer-open'\r\n closeGlyph='ms-product-specification__drawer-close'\r\n glyphPlacement='end'\r\n toggleButtonText='Material'\r\n onToggle={_toggle}\r\n >\r\n <div className='ms-product-details'>\r\n <span className='compositions'>\r\n {[...compositionMap.values()].map((cm: K3ProductCompositionTableExtensionClass[]) => (\r\n <p key={cm[0].CompositionType}>\r\n {`${compositionTypes?.result?.find(el => el.RecId === cm[0].CompositionType)?.Description}: ` || ''}\r\n\r\n {cm.map((c: K3ProductCompositionTableExtensionClass) => (\r\n <span className='fibres' key={c.Fibre}>\r\n {`${c.Percent}% ${fibres?.result?.find(el => el.RecId === c.Fibre)?.Description}` || ''}\r\n <span className='comma'>, </span>\r\n </span>\r\n ))}\r\n </p>\r\n ))}\r\n </span>\r\n </div>\r\n </Drawer>\r\n );\r\n } else {\r\n return null;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst RatingsHistogramView: React.FC<IRatingsHistogramViewProps> = props => {\r\n const { heading, histogramItems, histogramProps, moduleProps } = props;\r\n return (\r\n <Module {...moduleProps}>\r\n {heading}\r\n <Node {...histogramProps}>\r\n {histogramItems.map(item => {\r\n return histogramItem(item);\r\n })}\r\n </Node>\r\n </Module>\r\n );\r\n};\r\n\r\nconst histogramItem = (props: IHistogramItemViewProps) => {\r\n return (\r\n <Node {...props.buttonProps} >\r\n {props.starLabel}\r\n {props.bar}\r\n {props.percentage}\r\n </Node>\r\n );\r\n};\r\n\r\nexport default RatingsHistogramView;\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 {\r\n ICategoryHierarchyViewProps,\r\n IRefineMenuViewProps,\r\n ISearchResultContainerViewProps,\r\n ISearchResultModalViewProps,\r\n ISortByViewProps,\r\n ITitleViewProps\r\n} from '@msdyn365-commerce-modules/search-result-container';\r\nimport {\r\n Module,\r\n Node,\r\n LabeledDropdown,\r\n ILabeledDropdownOption,\r\n ILabeledDropdownOnChangeNotification\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { transaction } from 'mobx';\r\nimport { useEffect } from 'react';\r\n\r\nconst SearchResultContainerView: React.FC<ISearchResultContainerViewProps> = (props: {\r\n context?: any;\r\n resources?: any;\r\n data?: any;\r\n telemetry?: any;\r\n SearchResultContainer?: any;\r\n products?: any;\r\n pagination?: any;\r\n ProductsContainer?: any;\r\n ProductSectionContainer?: any;\r\n choiceSummary?: any;\r\n isMobile?: any;\r\n modalToggle?: any;\r\n searchResultModal?: any;\r\n TitleViewProps?: any;\r\n refineMenu?: any;\r\n categoryHierarchy?: any;\r\n CategoryNavContainer?: any;\r\n RefineAndProductSectionContainer?: any;\r\n errorMessage?: any;\r\n FeatureSearchContainer?: any;\r\n similarLookProduct?: any;\r\n}) => {\r\n const {\r\n SearchResultContainer,\r\n products,\r\n pagination,\r\n ProductsContainer,\r\n ProductSectionContainer,\r\n choiceSummary,\r\n isMobile,\r\n modalToggle,\r\n searchResultModal,\r\n TitleViewProps,\r\n refineMenu,\r\n categoryHierarchy,\r\n CategoryNavContainer,\r\n RefineAndProductSectionContainer,\r\n errorMessage,\r\n FeatureSearchContainer,\r\n similarLookProduct\r\n } = props;\r\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\r\n\r\n const newOptions: ILabeledDropdownOption[] = [\r\n { key: 'Ranking-Desc', value: props.resources.sortByOptionRelevanceDesc },\r\n { key: 'BestSelling', value: props.resources.sortByOptionBestSelling },\r\n { key: 'NewScore', value: props.resources.sortByOptionNewScore }\r\n ];\r\n\r\n const parseQueryParam = (key: string, requestContext: IRequestContext): SortColumn[] | null => {\r\n if (requestContext.query && requestContext.query[key]) {\r\n return JSON.parse(decodeURIComponent(requestContext.query[key]));\r\n }\r\n return null;\r\n };\r\n\r\n useEffect(() => {\r\n swatchDisable();\r\n });\r\n\r\n let _sortAndFilterContainerRef: React.RefObject<LabeledDropdown> = React.createRef<LabeledDropdown>();\r\n\r\n let _getSortCriteriaColumn = (): SortColumn | undefined => {\r\n const sortCriteria = props.data.listPageState.result?.sortingCritera;\r\n if (ArrayExtensions.hasElements(sortCriteria?.Columns)) {\r\n return sortCriteria!.Columns[0];\r\n }\r\n\r\n const queryColumns = parseQueryParam('sorting', props.context.request);\r\n if (ArrayExtensions.hasElements(queryColumns)) {\r\n return queryColumns[0];\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n let _getCurrentlySelectedOption = (): ILabeledDropdownOption | undefined => {\r\n const activeSortColumn = _getSortCriteriaColumn();\r\n\r\n const searchConfiguration = props.data.searchConfiguration.result;\r\n\r\n if (!activeSortColumn || !searchConfiguration) {\r\n return undefined;\r\n }\r\n\r\n const activeMappedConfig = searchConfiguration.find(\r\n (mappedSearchConfig: { sortColumn: { ColumnName: string | undefined; IsDescending: boolean | undefined } }) =>\r\n mappedSearchConfig.sortColumn.ColumnName === activeSortColumn.ColumnName &&\r\n mappedSearchConfig.sortColumn.IsDescending === activeSortColumn.IsDescending\r\n );\r\n if (!activeMappedConfig) {\r\n return undefined;\r\n }\r\n\r\n return newOptions.find(dropdownOption => dropdownOption.key === activeMappedConfig.key);\r\n };\r\n\r\n const compressRefiners = (refiners: ProductRefinerValue[]) => {\r\n const compressedRefiners: (string | number)[][] = [];\r\n\r\n refiners.forEach(refiner => {\r\n const compressedRefiner: (string | number)[] = [];\r\n const compressedRefinerKeys = [\r\n 'DataTypeValue',\r\n 'LeftValueBoundString',\r\n 'RefinerRecordId',\r\n 'RefinerSourceValue',\r\n 'RightValueBoundString',\r\n 'UnitText'\r\n ];\r\n compressedRefinerKeys.forEach(refinerKey => {\r\n compressedRefiner.push(refiner[refinerKey]);\r\n });\r\n compressedRefiners.push(compressedRefiner);\r\n });\r\n\r\n return compressedRefiners;\r\n };\r\n\r\n const buildListPageUrl = (fullUrl: URL, refiners?: ProductRefinerValue[], sortingColumns?: SortColumn[], skipCount?: number) => {\r\n // Refiner Change flow\r\n if (refiners !== undefined) {\r\n if (refiners.length === 0) {\r\n fullUrl.searchParams.delete('refiners');\r\n } else {\r\n const sortedRefiners = refiners.sort((first, second) =>\r\n first.RefinerRecordId && second.RefinerRecordId && first.RefinerRecordId > second.RefinerRecordId ? 1 : -1\r\n );\r\n fullUrl.searchParams.set('refiners', JSON.stringify(compressRefiners(sortedRefiners)));\r\n }\r\n\r\n // Adding or removing a refiner means we want to always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (sortingColumns !== undefined) {\r\n if (sortingColumns.length === 0) {\r\n fullUrl.searchParams.delete('sorting');\r\n } else {\r\n fullUrl.searchParams.set('sorting', JSON.stringify(sortingColumns));\r\n }\r\n\r\n // Changing the sort means always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (skipCount) {\r\n fullUrl.searchParams.set('skip', skipCount.toString());\r\n }\r\n\r\n return fullUrl.href;\r\n };\r\n\r\n const getCurrentUrl = (requestContext: IRequestContext): URL => {\r\n if (MsDyn365.isBrowser) {\r\n return new URL(window.location.href);\r\n }\r\n\r\n // NOTE: Typing on requestURL is incorrect\r\n //@ts-ignore\r\n if (requestContext.url.requestUrl.href) {\r\n //@ts-ignore\r\n return new URL(requestContext.url.requestUrl.href);\r\n }\r\n // @ts-ignore\r\n return new URL(requestContext.url.requestUrl);\r\n };\r\n\r\n const _updateSortByDropdown = (notification: ILabeledDropdownOnChangeNotification): void => {\r\n const { context } = props;\r\n const requestContext = context && context.request;\r\n const actionContext = context && context.actionContext;\r\n\r\n if (!requestContext || !actionContext || !props.data.listPageState.result) {\r\n const error = `[sort-by-category] cannot sort without context: ${!requestContext ? 'requestContext ' : ''} ${\r\n !actionContext ? 'actionContext ' : ''\r\n } could not be found`;\r\n props.telemetry.warning(error);\r\n }\r\n\r\n window.history.pushState(\r\n {},\r\n '',\r\n buildListPageUrl(\r\n getCurrentUrl(props.context.request),\r\n undefined,\r\n [_getSortColumnFromSelectedOption(notification.selectedOption)],\r\n undefined\r\n )\r\n );\r\n transaction(() => {\r\n props.data.listPageState.result!.currentPageNumber = 0;\r\n props.data.listPageState.result!.sortingCritera = { Columns: [_getSortColumnFromSelectedOption(notification.selectedOption)] };\r\n });\r\n };\r\n\r\n const _getSortColumnFromSelectedOption = (option: ILabeledDropdownOption): SortColumn => {\r\n const { data } = props;\r\n if (!data.searchConfiguration.result) {\r\n return {};\r\n }\r\n const mappedConfiguration = data.searchConfiguration.result.find((searchConfiguration: { key: string }) => {\r\n return searchConfiguration.key === option.key;\r\n });\r\n if (mappedConfiguration) {\r\n return mappedConfiguration.sortColumn;\r\n }\r\n return {};\r\n };\r\n\r\n let state = {\r\n pending: false,\r\n selectedSortByOption: newOptions[0]\r\n };\r\n\r\n const activeDropdown = _getCurrentlySelectedOption() || state.selectedSortByOption;\r\n\r\n const newdd = (\r\n <LabeledDropdown\r\n labelClassname='reviews-list-sort-by'\r\n labelText={props.resources.sortByDropdownLabel}\r\n dropdownId='categorySortByDropdown'\r\n dropdownClassname='reviews-list-dropdown'\r\n toggleColor='link'\r\n dropdownOptions={newOptions}\r\n selectedOption={activeDropdown}\r\n onSelectOption={_updateSortByDropdown}\r\n ref={_sortAndFilterContainerRef}\r\n />\r\n );\r\n\r\n // props.data.listPageState;\r\n let newSortOptions: ISortByViewProps = {\r\n SortingContainer: { className: 'ms-search-result-container__Sort-by-category' },\r\n sortByDropDown: newdd\r\n };\r\n\r\n const swatchDisable = () => {\r\n if (document) {\r\n const _strikeSVG =\r\n 'data:image/svg+xml;utf8,' +\r\n \"<svg xmlns='http://www.w3.org/2000/svg' version='1.1' preserveAspectRatio='none' viewBox='0 0 100 100'>\" +\r\n \"<path d='M0 0 L100 100 ' stroke='white' stroke-width='5.5'/></svg>\";\r\n\r\n /* Task 1217 & 1312 */\r\n const imgCollect = document.querySelectorAll<HTMLImageElement>('img.msc-swatch-container__item__image');\r\n\r\n if (imgCollect.length > 0) {\r\n imgCollect.forEach(node => {\r\n if (node.classList.contains('msc-swatch-container__item__disabled')) {\r\n const thisColour = node.src;\r\n node.src = _strikeSVG;\r\n node.style.backgroundImage = node.style.backgroundImage = \"url('\" + thisColour + \"')\";\r\n if (isMobile) {\r\n node.style.maxWidth = '20px';\r\n } else {\r\n node.style.maxWidth = '30px';\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n if (isMobile) {\r\n return (\r\n <Module {...SearchResultContainer}>\r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n {modalToggle}\r\n {createSearchResultModal(searchResultModal, refineMenu, newSortOptions, isRecoSearchPage)}\r\n <Node {...FeatureSearchContainer}>{similarLookProduct}</Node>\r\n <Node {...ProductsContainer}>\r\n {errorMessage}\r\n {products}\r\n </Node>\r\n {pagination}\r\n </Module>\r\n );\r\n }\r\n return (\r\n <Module {...SearchResultContainer}>\r\n {categoryHierarchy && <Node {...CategoryNavContainer}>{renderCategoryHierarchy(categoryHierarchy)}</Node>}\r\n <Node {...RefineAndProductSectionContainer}>\r\n {refineMenu && renderRefiner(refineMenu)}\r\n <Node {...ProductSectionContainer}>\r\n <Node {...FeatureSearchContainer}>{similarLookProduct}</Node>\r\n <div className='ms-search-result-wrapper-title-choice-summary'>\r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n </div>\r\n <div className='ms-search-result-wrapper-sort-by-category'>\r\n {newSortOptions && !isRecoSearchPage && renderSort(newSortOptions)}\r\n </div>\r\n <Node {...ProductsContainer}>\r\n {errorMessage}\r\n {products}\r\n </Node>\r\n {pagination}\r\n </Node>\r\n </Node>\r\n </Module>\r\n );\r\n};\r\n\r\nconst createSearchResultModal = (\r\n modalProps: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string\r\n): JSX.Element => {\r\n return React.cloneElement(\r\n modalProps.modal,\r\n {},\r\n modalProps.modalHeader,\r\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\r\n modalProps.modalFooter\r\n );\r\n};\r\n\r\nconst createModalBody = (\r\n props: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string\r\n): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n <Node {...RefinerSectionContainer}>\r\n <Node {...RefineMenuContainer}>\r\n {refiners.map((submenu, index) => (\r\n <React.Fragment key={index}>{submenu}</React.Fragment>\r\n ))}\r\n </Node>\r\n </Node>\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown && !isRecoSearchPage) {\r\n return <Node {...SortingContainer}>{sortByDropDown}</Node>;\r\n }\r\n return null;\r\n};\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n <Node {...CategoryHierarchyContainer}>\r\n {categoryHierarchyList.map((category, index) => (\r\n <React.Fragment key={index}>\r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n </React.Fragment>\r\n ))}\r\n </Node>\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return (\r\n <Node {...TitleContainer}>\r\n <h2>\r\n {title.titlePrefix}\r\n {title.titleText}({title.titleCount})\r\n </h2>\r\n </Node>\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default SearchResultContainerView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC<IOrganizationUsersTileViewProps> = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n <Module {...OrganizationUsersTile}>\n {heading}\n {description}\n {links}\n </Module>\n );\n};\n\nexport default OrganizationUsersTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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<ICheckInViewProps> = (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 <FormBuilder\n heading={props.config.additionalInformationHeading ?? props.resources.additionalInformationDefaultHeading}\n submitButtonText={props.resources.additionalInformationSubmitButtonText}\n keys={props.config.additionalInformationKeys}\n requiredValueMissingErrorMessage={props.resources.requiredValueMissingErrorMessage}\n onSubmit={checkInForOrderPickup}\n confirmationComponent={confirmationComponent}\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n <Node {...additionalContent.additionalContentNode}>\n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n <Node {...item.additionalContentItemContainer}>\n {item.text}\n <Node {...item.additionalContentItemLinks}>{item.links}</Node>\n </Node>\n </>\n );\n })}\n </Node>\n );\n};\n\nconst ContentBlockView: React.FC<IContentBlockViewProps> = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n <Module {...contentBlockContainer}>\n <Node\n {...contentBlockAnchorTag}\n href={imageLink}\n className={contentBlockAnchorTag ? contentBlockAnchorTag.className : ''}\n aria-label={imageAriaLabel}\n >\n <Node {...imageContainer}>{image}</Node>\n </Node>\n <Node {...detailsContainer}>\n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n </Node>\n </Module>\n );\n }\n return (\n <Module {...contentBlockContainer}>\n <Node {...imageContainer}>{image}</Node>\n <Node {...detailsContainer}>\n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n </Node>\n </Module>\n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC<ICartViewProps> = (props: ICartViewProps) => (\n <div className={props.className} id={props.id} {...props.renderModuleAttributes(props)}>\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n <Node {...props.CartlinesWrapper}>\n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n </Node>\n )}\n {props.orderSummaryHeading && (\n <Node {...props.OrderSummaryWrapper}>\n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n <Node {...props.ExpressCheckoutSectionWrapper}>{props.expressCheckoutButton}</Node>\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n </Node>\n )}\n {props.storeSelector}\n </div>\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n <Node {...promotions.promotionMessageWrapper}>\n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n </Node>\n </>\n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus}</>;\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n <div className='msc-cart-lines-item' key={`${index}-${MsDyn365.isBrowser.toString()}`}>\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n <Node className='msc-cart-line-group__extra-actions'>\n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n </Node>\n ) : cartLine.addToOrderTemplate ? (\n <Node className='msc-cart-line__extra-actions'>\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n </Node>\n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n </>\n )}\n </div>\n );\n });\n }\n return cartDataResult ? (\n <div className='msc-cart__empty-cart'>\n <p className='msc-cart-line'>{emptyCartText}</p>\n {backToShoppingButton}\n </div>\n ) : (\n <>{waitingComponent}</>\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <Node {...cartLine.pickUpInStore.ContainerProps}>\n <div className='msc-cart-line__bopis-method'>\n {isBopisSelected ? (\n <span className='pick-up'>{pickUpAtStoreWithLocationText}</span>\n ) : (\n <span className='ship'>{shipToAddressDisplayText}</span>\n )}\n </div>\n {isBopisSelected && (\n <div className='msc-cart-line__bopis-fullfilment'>\n <span className='msc-cart-line__bopis-fullfilment-store'>{cartLine.pickUpInStore.orgUnitName}</span>\n <Button role='link' className='msc-cart-line__bopis-changestore' onClick={onChangeStoreHandler(cartLine)}>\n {changeStoreDisplayText}\n </Button>\n </div>\n )}\n <Button\n className='msc-cart-line__bopis-btn'\n {...puckUpinStoreAttribute}\n onClick={onToggleBopisHandler(cartLine, isBopisSelected)}\n >\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n </Button>\n </Node>\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n <Node {...errorData.Wrapper}>\n {errorData.header}\n {errorData.errors}\n </Node>\n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n <Node {...OrderSummaryItems}>\n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n </Node>\n );\n};\n\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n <Node {...OrderSummaryItems}>\n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n </Node>\n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n <div className='msc-cart-lines-group'>\n {props.cartLinesGroup.map(cartlines => {\n return (\n <div key={cartlines[0].cartlineId} className='msc-cart-lines-group-wraper'>\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n </div>\n );\n })}\n </div>\n );\n }\n return props.cartDataResult ? (\n <div className='msc-cartline-wraper'>\n <div className='msc-cart__empty-cart'>\n <p className='msc-cart-line'>{props.resources.emptyCartText}</p>\n {props.backToShoppingButton}\n </div>\n </div>\n ) : (\n <>{props.waitingComponent}</>\n );\n};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n <div className='msc-cart-lines-group-wraper__bopis-heading'>\n <p className={`msc-cart-lines-group-wraper__bopis-heading-${groupTitle.toLowerCase()}-icon`} />\n <p className={`msc-cart-lines-group-wraper__bopis-heading-${groupTitle.toLowerCase()}`}>{groupTitle}</p>\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n </div>\n </>\n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n <Button className='msc-cart-line__remove-item msc-btn' onClick={onChangeStoreHandler(cartLine)} aria-live='polite'>\n {changeStoreDisplayText}\n </Button>\n ) : null}\n <Button\n className='msc-cart-line__remove-item msc-btn'\n {...puckUpinStoreAttribute}\n onClick={onToggleBopisHandler(cartLine, isBopisSelected)}\n >\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n </Button>\n </>\n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n <Node className='msc-cart-lines-group-wraper__bopis-heading-title'>\n {isBopisSelected ? (\n <p className='msc-cart-lines-group-wraper__bopis-heading-title-st'>\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n </p>\n ) : null}\n <p className='msc-cart-lines-group-wraper__bopis-heading-title-ct'>\n ({count}\n {` `}\n {suffix})\n </p>\n </Node>\n </>\n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC<IOrderInformation> = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n <Node {...orderInformationProps}>\n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n </Node>\n);\n\nexport const OrderHistoryGroupDelivery: React.FC<IGroupDelivery> = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n <Node {...deliveryProps}>\n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n </Node>\n);\n\nexport const OrderHistoryGroup: React.FC<IGroup> = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n <Node {...groupProps}>\n {salesLines && (\n <Node {...salesLinesProps}>\n {salesLines.map(salesLine => (\n <React.Fragment key={salesLine.data.salesLine.LineId}>{salesLine.salesLine}</React.Fragment>\n ))}\n </Node>\n )}\n </Node>\n);\n\nexport const OrderHistoryGroups: React.FC<IGroups> = ({ groupsProps, groups }) => (\n <Node {...groupsProps}>\n {groups.map((group, index) => (\n <OrderHistoryGroup key={index} {...group} />\n ))}\n </Node>\n);\n\nexport const OrderHistoryHeader: React.FC<IHeader> = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n <Node {...headerProps}>\n {heading}\n {orderCountLabel}\n {extraActions}\n </Node>\n);\n\nexport const OrderHistorySalesOder: React.FC<ISalesOrder> = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n <Node {...salesOrderProps}>\n {orderInfomation && <OrderHistoryOrderInfomation {...orderInfomation} />}\n {groups && <OrderHistoryGroups {...groups} />}\n {expandProductsButton}\n {orderDetailsLink}\n </Node>\n);\n\nexport const OrderHistoryList: React.FC<IList> = ({ listProps, salesOrders }) => (\n <Node {...listProps}>\n {salesOrders && salesOrders.map((salesOrder, index) => <OrderHistorySalesOder key={index} {...salesOrder} />)}\n </Node>\n);\n\nconst OrderHistoryView: React.FC<IOrderHistoryViewProps> = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n <Module {...orderHistoryProps}>\n {header && <OrderHistoryHeader {...header} />}\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n </>\n )}\n {emptyMessage && (\n <Node className='ms-order-history__empty-message-container'>\n {emptyMessage}\n {backToShoppingLink}\n </Node>\n )}\n {list && <OrderHistoryList {...list} />}\n {table}\n {moreButton && moreButton}\n </Module>\n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC<IRatingsHistogramViewProps> = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n <Module {...moduleProps}>\n {heading}\n <Node {...histogramProps}>\n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n </Node>\n </Module>\n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n <Node {...props.buttonProps}>\n {props.starLabel}\n {props.bar}\n {props.percentage}\n </Node>\n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC<IReviewsListViewProps> = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return <Module {...moduleProps}>{noReviewsMessage}</Module>;\n }\n\n return (\n <Module {...moduleProps}>\n {averageRating}\n {reviewCount}\n <Node {...refineReviewsProps}>\n {sortByDropdown}\n {filterByDropdown}\n </Node>\n <Node {...reviewsListProps}>\n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n </Node>\n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n </Module>\n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n <Node {...props.cardProps}>\n <Node {...props.headerProps}>\n {props.rating}\n {props.name}\n {props.date}\n </Node>\n <Node {...props.cardBodyProps}>\n <Node {...props.reviewProps}>\n {props.reviewTitle}\n {props.reviewText}\n </Node>\n <Node {...props.responseProps}>\n {props.responseName}\n {props.responseDate}\n {props.responseText}\n </Node>\n <Node {...props.controlsProps}>\n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n </Node>\n </Node>\n </Node>\n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n <Module {...moduleProps} {...props.modal}>\n {props.modalHeader}\n <Node {...props.modalBody}>\n <Node {...props.form}>\n <Node {...props.inputRow}>\n {props.rating}\n {props.ratingLabel}\n </Node>\n <Node {...props.inputRow}>\n {props.titleLabel}\n {props.titleInput}\n </Node>\n <Node {...props.inputRow}>\n {props.textLabel}\n {props.textInput}\n </Node>\n {props.privacyPolicyUrl}\n {props.error}\n </Node>\n </Node>\n <Node {...props.modalFooter}>\n {props.submitButton}\n {props.cancelButton}\n </Node>\n </Module>\n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n <Node {...props.modal}>\n <Node {...props.modalHeader}>{state.reported ? props.headerSubmitted : props.header}</Node>\n <Node {...props.modalBody}>\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n </Node>\n <Node {...props.modalFooter}>{state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}</Node>\n </Node>\n );\n};\n\nexport default ReviewsListview;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderLookupViewProps } from './order-lookup';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns JSX Element.\n */\nexport const OrderLookupViewComponent: React.FC<IOrderLookupViewProps> = props => {\n const {\n orderLookup,\n orderLookupContainer,\n orderLookupAdditionalFieldContainer,\n heading,\n paragraph,\n orderLookupForm,\n renderOrderLookupInputField,\n orderNumberInput,\n errorMessage,\n submitButton,\n additionalProperties,\n registeredUserMessage,\n fieldErrorMessage\n } = props;\n return (\n <Module {...orderLookup}>\n <Node {...orderLookupContainer}>\n {heading}\n {paragraph}\n <Node className={orderLookupForm?.className ?? ''}>\n {orderNumberInput}\n {renderOrderLookupInputField}\n {ArrayExtensions.hasElements(additionalProperties) && (\n <Node {...orderLookupAdditionalFieldContainer}>\n {additionalProperties.map((item: JSX.Element) => (\n <React.Fragment key=''>{item}</React.Fragment>\n ))}\n </Node>\n )}\n {fieldErrorMessage}\n <Node {...submitButton} className={submitButton?.className ?? ''}>\n {props.submitButtonLabelText}\n </Node>\n {errorMessage}\n </Node>\n {registeredUserMessage}\n </Node>\n </Module>\n );\n};\n\nexport default OrderLookupViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC<ISocialShareViewProps> = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n <Module {...SocialShare}>\n <Node {...SocialShareList}>\n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n <Node {...SocialShareItem} key={index}>\n {SocialShareElement}\n </Node>\n );\n })}\n </Node>\n </Module>\n );\n};\n\nexport default SocialShareView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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<ITileListViewProps> = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n <Node {...tileListContainer}>\n <Node {...tileListHeading}>{title}</Node>\n <Node {...singleSlideCarouselComponentProps}>\n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n <Node {...tileItemContainer} key={keyIndex}>\n {tileItem}\n </Node>\n );\n })}\n </Node>\n </Node>\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 { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC<IB2bRequestsStatusViewProps & IB2bRequestsStatusProps<IB2bRequestsStatusResources>> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n <Module {...b2bRequestsStatus}>\n {heading}\n <Node className=''>\n <div className='ms-account-b2b-requests__empty-list'>\n <h2 className='ms-account-b2b-requests__empty-list-heading'>{props.resources.headingForEmptyRequestStatus}</h2>\n <p className='ms-account-b2b-requests__empty-list-text'>{props.resources.textForEmptyRequestStatus}</p>\n <Node className='ms-account-b2b-requests__empty-list__btn-section'>\n <Button\n role='button'\n title={continueShoppingButtonTitle}\n aria-label={continueShoppingButtonTitle}\n className='ms-account-b2b-requests__empty-list__btn-backtoshopping'\n href={getUrlSync('home', props.context.actionContext)}\n >\n {continueShoppingButtonTitle}\n </Button>\n </Node>\n </div>\n </Node>\n </Module>\n );\n }\n return (\n <Module {...b2bRequestsStatus}>\n {heading}\n {table}\n </Module>\n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC<IAccountPaymentSummaryViewForm> = ({\n formProps,\n label,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n}) => (\n <Node {...formProps}>\n <>\n {label}\n {paymentAmountInput}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n </>\n </Node>\n);\n\nexport const EditForm: React.FC<IAccountPaymentEditViewForm> = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n <Node {...formProps}>\n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n </>\n </Node>\n);\n\nconst CheckoutCustomerAccountView: React.FC<ICheckoutCustomerAccountPaymentViewProps> = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n <Module {...checkoutCustomerAccount} ref={checkoutErrorRef}>\n {alert}\n {moduleState.isReady && summaryView && <SummaryForm {...summaryView} />}\n {!moduleState.isReady && editView && <EditForm {...editView} />}\n </Module>\n );\n};\n\nexport default CheckoutCustomerAccountView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC<IOrderInformation> = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n <Node {...orderInformationProps}>\n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n </Node>\n);\n\nexport const OrderHistoryGroupDelivery: React.FC<IGroupDelivery> = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n <Node {...deliveryProps}>\n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n </Node>\n);\n\nexport const OrderHistoryGroup: React.FC<IGroup> = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n <Node {...groupProps}>\n {salesLines && (\n <Node {...salesLinesProps}>\n {salesLines.map(salesLine => (\n <React.Fragment key={salesLine.data.salesLine.LineId}>{salesLine.salesLine}</React.Fragment>\n ))}\n </Node>\n )}\n </Node>\n);\n\nexport const OrderHistoryGroups: React.FC<IGroups> = ({ groupsProps, groups }) => (\n <Node {...groupsProps}>\n {groups.map((group, index) => (\n <OrderHistoryGroup key={index} {...group} />\n ))}\n </Node>\n);\n\nexport const OrderHistoryHeader: React.FC<IHeader> = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n <Node {...headerProps}>\n {heading}\n {orderCountLabel}\n {extraActions}\n </Node>\n);\n\nexport const OrderHistorySalesOder: React.FC<ISalesOrder> = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n <Node {...salesOrderProps}>\n <div>\n {orderInfomation.placedBy && <React.Fragment>{orderInfomation.placedBy}</React.Fragment>}\n <div>{orderInfomation && <OrderHistoryOrderInfomation {...orderInfomation} />}</div>\n </div>\n {groups && <OrderHistoryGroups {...groups} />}\n {expandProductsButton}\n {orderDetailsLink}\n </Node>\n);\n\nexport const OrderHistoryList: React.FC<IList> = ({ listProps, salesOrders }) => (\n <Node {...listProps}>\n {salesOrders && salesOrders.map((salesOrder, index) => <OrderHistorySalesOder key={index} {...salesOrder} />)}\n </Node>\n);\n\nconst OrderHistoryView: React.FC<IOrderHistoryViewProps> = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n <Module {...orderHistoryProps}>\n {header && <OrderHistoryHeader {...header} />}\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n </>\n )}\n {emptyMessage && (\n <Node className='ms-order-history__empty-message-container'>\n {emptyMessage}\n {backToShoppingLink}\n </Node>\n )}\n {list && <OrderHistoryList {...list} />}\n {table}\n {moreButton && moreButton}\n </Module>\n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 <div className='msc-autoSuggest__categoryResults-title'>{categoryAutoSuggestionHeading}</div>;\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<ISearchData>,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n <Node {...props.CategorySuggest}>\n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n <Node {...props.UlCategory}>\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n </Node>\n </Node>\n ) : (\n <Node {...props.CategorySuggest}>\n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n <Node {...props.UlCategory}>\n <li className='msc-autoSuggest__categoryResults-no-results'>{noResultText}</li>\n </Node>\n </Node>\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<ISearchData>): 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 <Image\n altText={noSearchResultImage.altText}\n className='msc-autoSuggest__productResults-no-results-image-img'\n gridSettings={props.context.request.gridSettings!}\n src={noSearchResultImage.src}\n requestContext={props.context.request}\n imageSettings={imageSettings}\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<ISearchData>): JSX.Element => {\n return (\n <Node className='msc-autoSuggest__productResults-empty-mobile-content'>\n <div className='msc-autoSuggest__productResults-empty-mobile-no-results-image'>{renderProductNotFoundResultsImage(props)}</div>\n <div className='msc-autoSuggest__productResults-empty-mobile-text-content'>\n <div className='msc-autoSuggest__productResults-empty-mobile-heading'>{props.resources.emptyMobileSearchTextHeading}</div>\n <div className='msc-autoSuggest__productResults-empty-mobile-text'>{props.resources.emptyMobileSearchText}</div>\n </div>\n </Node>\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 <Button className='ms-search__form-control__clear' title={clearSearchButtonText || 'Clear'} onClick={clearSearch}>\n {clearSearchButtonText || 'Clear'}\n </Button>\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<ISearchData>,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n <Button\n className='ms-search__form-cancelSearch'\n aria-label={props.resources.cancelBtnAriaLabel}\n onClick={clearSearch}\n type='button'\n />\n );\n\n return isMobile ? (\n <Node {...searchForm}>\n {form.cancelBtn}\n <Node {...formWrapper}>\n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n </Node>\n </Node>\n ) : (\n <Node {...searchForm}>\n <Node {...formWrapper}>\n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\n </Node>\n </Node>\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 <div className='msc-autoSuggest_keywordsResults-title'>{categoryAutoSuggestionHeading}</div>;\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 <Node {...keywordSuggest}>\n {renderKeywordSuggestionsTitle(keywordsHeading)}\n <Node {...ulKeyword}>\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n </Node>\n </Node>\n ) : (\n <Node {...keywordSuggest}>\n {renderKeywordSuggestionsTitle(keywordsHeading)}\n <Node {...ulKeyword}>\n <li className='msc-autoSuggest__keywordResults-no-results'>{noResultText}</li>\n </Node>\n </Node>\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 <div className='msc-autoSuggest__productResults-title'>{productAutoSuggestionHeading}</div>;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps<ISearchData>): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n <Image\n altText={noSearchResultImage.altText}\n className='msc-autoSuggest__productResults-no-results-image-img'\n gridSettings={props.context.request.gridSettings!}\n src={noSearchResultImage.src}\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<ISearchData>): JSX.Element => {\n return (\n <Node className='msc-autoSuggest__productResults-no-results-content'>\n <div className='msc-autoSuggest__productResults-no-results-image'>{renderProductNotFoundResultsImage(props)}</div>\n <div className='msc-autoSuggest__productResults-no-results-content-title'>{props.resources.noResultContentHeadingText}</div>\n <div className='msc-autoSuggest__productResults-no-results-content-paragraph'>\n {props.resources.noResultContentParagraphText}\n </div>\n </Node>\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<ISearchData>,\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 <Node {...productSuggest}>\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n <Node {...ulProduct}>\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n <Node {...item.LiProduct} key={item.id ?? index}>\n <Node {...item.AProduct}>\n {item.thumbnail}\n {item.text}\n {item.price}\n </Node>\n </Node>\n );\n })}\n </Node>\n </Node>\n ) : (\n <Node {...productSuggest}>\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n <Node {...ulProduct}>\n <Node {...liProduct}>{renderProductNotFoundResults(props)}</Node>\n </Node>\n </Node>\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 <Node className='msc-autoSuggest__search-title'>{searchAutoSuggestionHeading}</Node>;\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC<ISearchViewProps & ISearchProps<ISearchData>> = (\n props: ISearchViewProps & ISearchProps<ISearchData>\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<string>();\n const [isMobilePort, setIsMobile] = useState<boolean>(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<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject<HTMLInputElement>).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 <Module {...Search}>\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 <Node {...AutoSuggest}>\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <Node {...AutoSuggestAriaLabel}>{AutoSuggestAriaLabelText}</Node>\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n <Node className='msc-autoSuggest__search-title-container'>\n <Button\n className='ms-search__form-cancelSearch'\n aria-label={props.resources.cancelBtnAriaLabel}\n onClick={clearSearch}\n onBlur={handleCancelSearchFocused}\n type='button'\n />\n {renderTitle(searchSuggestionHeading, searchText)}\n </Node>\n <Node className='msc-autoSuggest__results-container'>\n <Node className='msc-autoSuggest__results'>\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 </Node>\n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n </Node>\n </>\n ) : null}\n </Node>\n )}\n {isMobileView && props.isSearchFormExpanded && (\n <Node {...AutoSuggest}>\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <Node {...AutoSuggestAriaLabel}>{AutoSuggestAriaLabelText}</Node>\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n <Node className='msc-autoSuggest__search-title-container'>\n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n </Node>\n <Node className='msc-autoSuggest__results-container'>\n <Node className='msc-autoSuggest__results'>\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 </Node>\n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n </Node>\n </>\n ) : null}\n </Node>\n )}\n </Module>\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<ISignInLocalAccount> = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n <Node {...localAccount}>\n {items &&\n items.map((item: ISignInItem) => {\n return (\n <Node key={item.key} {...item.wrapper}>\n {item.label}\n {item.error}\n {item.input}\n </Node>\n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n </Node>\n );\n};\n\nconst SocialAccount: React.FC<ISignInSocialAccount> = ({ socialAccounts, items }) => {\n return (\n <Node {...socialAccounts}>\n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n <Node key={item.key} {...item.button}>\n {item.image}\n {item.text}\n </Node>\n );\n })}\n </Node>\n );\n};\n\nconst B2BAccount: React.FC<ISignInB2BAccount> = ({ socialAccounts, items }) => {\n return (\n <Node {...socialAccounts}>\n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n <Node key={item.key} {...item.button}>\n {item.text}\n </Node>\n )\n );\n })}\n </Node>\n );\n};\n\nconst SignInLoading: React.FC<ISignInLoading> = ({ modal, modalBody, icon, message }) => {\n return (\n <Node {...modal}>\n <Node {...modalBody}>\n {icon}\n {message}\n </Node>\n </Node>\n );\n};\nconst SignInButton: React.FC<ISignInButton> = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n <a id={id} className={className} aria-label={ariaLabel} onClick={onClick} {...attributes}>\n {text}\n </a>\n );\n};\n\nconst signUpButton: React.FC<ISignInViewProps & ISignInProps<ISignInResources>> = (\n props: ISignInViewProps & ISignInProps<ISignInResources>\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 <SignInButton\n id='createAccount'\n {...attributes}\n className={`ms-sign-in__sign-up-link msc-btn`}\n ariaLabel={resources.b2bSignUpButtonAriaLabel}\n text={resources.b2bSignUpButtonText}\n telemetryContent={telemetryContent}\n />\n );\n};\n\nconst SignInView: React.FC<ISignInViewProps & ISignInProps<ISignInResources>> = 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 <Module {...signIn}>\n {viewState.isShowLoading && <Node {...defaultAADConainer} />}\n {viewState.isShowLoading && <SignInLoading {...loading} />}\n <Node {...aadConainer}>\n <Node {...signInSection}>\n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n </Node>\n <Node {...signUpSection}>\n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n </Node>\n <div className='ms-sign-in__employee-sign-in-section'>\n <div className='ms-sign-in__employee-sign-in-section__line-strike'>\n <span>or</span>\n </div>\n {B2BAccount(signInB2BAccount)}\n </div>\n </Node>\n </Module>\n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountLoyaltyTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountLoyaltyTileDescription: React.FC<IAccountLoyaltyTileDescription> = ({ description }) => (\n <p className='ms-account-loyalty-tile__description'>{description}</p>\n);\n\nexport default IAccountLoyaltyTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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<HTMLElement>): void;\n}\n\nconst AccountProfileEditButton: React.FC<IAccountProfileEditButton> = ({\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 <Button id={id} className={className} aria-label={ariaLabel} disabled={disabled} onClick={onClick} {...attributes}>\n {text}\n </Button>\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<IAccountProfileEditErrorProps> = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n <div id={id} className={classnames(errorClassName, 'error', `${type}Level`)} role='alert' aria-live='assertive' aria-hidden='true'>\n <p className={`${errorClassName}-text`}>{message}</p>\n </div>\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<HTMLInputElement>): 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<IAccountProfileEditInputProps> = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n <input\n id={id}\n type={type}\n value={value}\n className={`${className}-input ${className}-${id}`}\n pattern={pattern !== '' ? pattern : undefined}\n aria-required='true'\n maxLength={GetMaxLength(maxLength)}\n onChange={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<IAccountProfileEditLabel> = ({ id, forId, className, text }) => (\n <label id={`${id}_label`} className={`${className}-label`} htmlFor={forId}>\n {text}\n </label>\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<IAccountProfileEditLoadingIcon> = ({ className }) => (\n <div className={`${className}__loading-icon`} />\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<IAccountProfileEditLoadingMessage> = ({ className, message }) => (\n <div className={`${className}__loading-message`}>{message}</div>\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 { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent<HTMLElement>): void;\n}\n\nconst PasswordResetButton: React.FC<IPasswordResetButton> = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n <Button id={id} className={className} aria-label={ariaLabel} disabled={disabled} onClick={onClick} {...attributes}>\n {text}\n </Button>\n );\n};\n\nexport default PasswordResetButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetError: React.FC<IPasswordResetErrorProps> = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n <div id={id} className={classnames(errorClassName, 'error', `${type}Level`)} role='alert' aria-live='assertive' aria-hidden='true'>\n <p className={`${errorClassName}-text`}>{message}</p>\n </div>\n );\n};\n\nexport default PasswordResetError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface IPasswordResetInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetInput: React.FC<IPasswordResetInputProps> = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n <input\n id={id}\n type={type}\n value={value}\n className={`${className}-input ${className}-${id}`}\n pattern={pattern !== '' ? pattern : undefined}\n aria-required='true'\n maxLength={GetMaxLength(maxLength)}\n onChange={onChange}\n />\n);\n\nexport default PasswordResetInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetLabel: React.FC<IPasswordResetLabel> = ({ id, forId, className, text }) => (\n <label id={`${id}_label`} className={`${className}-label`} htmlFor={forId}>\n {text}\n </label>\n);\n\nexport default PasswordResetLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingIcon {\n className: string;\n}\n\nconst PasswordResetLoadingIcon: React.FC<IPasswordResetLoadingIcon> = ({ className }) => <div className={`${className}__loading-icon`} />;\n\nexport default PasswordResetLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetLoadingMessage: React.FC<IPasswordResetLoadingMessage> = ({ className, message }) => (\n <div className={`${className}__loading-message`}>{message}</div>\n);\n\nexport default PasswordResetLoadingMessage;\n"],"names":["_mapEditableLinks","linkdata","telemetryContent","length","editableLinks","payLoad","getPayloadObject","forEach","link","index","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","ariaLabel","className","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","push","_ref","links","onTextChange","requestContext","React","Msdyn365","editProps","AccountLoyaltyTile","constructor","props","super","handleHeadingChange","event","this","config","heading","text","target","value","handleLinkTextChange","linkIndex","signUpLinkText","viewLinkText","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","render","data","resources","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","description","url","actionContext","result","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","format","toFixed","viewProps","_objectSpread","moduleProps","classnames","tag","onEdit","LinksComponent","Object","assign","DescriptionComponent","renderView","AccountProfileEdit","moduleClassName","onTextBoxChange","id","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","invalidEmailAddressError","map","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","viewState","isShowLoading","accountProfileEdit","loading","modal","Modal","isOpen","modalBody","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","e","document","createElement","innerHTML","childNodes","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","key","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","undefined","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","__decorate","observable","observer","Module","AccountProfileEditItem","Node","AccountProfileEditLoading","_ref3","_ref2","item","error","button","LocalAccount","PasswordReset","newPasswordRegex","reenterPasswordRegex","PasswordRegex","passwordReset","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","passwordResetLocalAccount","newPasswordLabelText","confirmPasswordLabelText","PasswordResetErrorComponent","passwordEntryMismatchError","PasswordResetButtonComponent","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","componentClassName","headingClassName","orderCountClassName","OrderHistoryWithSearchAndFiltersHeaderComponent","createComponent","component","salesOrders","textProps","showOrderCount","extraActions","orderCount","orderCountText","orderCountLabel","ordersCountLabel","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","OrganizationUsersTile","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","customerInformation","IsB2bAdmin","CheckInConfirmationComponent","confirmationText","shouldShowQrCode","channelReferenceIdLabel","channelReferenceId","QRCode","size","CheckInErrorComponent","CheckInForPickup","checkInForOrderPickup","async","channelId","Number","parseInt","query","packingSlipId","additionalInformationToSubmit","additionalInformationList","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","ObjectExtensions","isNullOrUndefined","additionalInformation","Key","Value","StringValue","SalesOrdersDataActions","callerContext","queryResultSettings","setState","headerErrorMessage","genericErrorMessage","isCheckedIn","Promise","resolve","_this$props$context$r","_this$props$context$r2","_this$props$context$r3","_this$props$context$r4","isNaN","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","ArrayExtensions","hasElements","_this$props$context$r5","isHeaderError","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","additionalInformationHeading","assembleNode","itemIndex","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","ctaLink","renderLinks","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentCardLinks","btnClass","onClick","onTelemetryClick","ContentBlock","handleTextChange","handleParagraphChange","paragraph","_heading$tag","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","contentBlockLinks","msdyn365__moduleLayout","contentBlockText","contentBlockImageSettings","imageSettings","backgroundColor","imageProps","gridSettings","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","shouldSkipToMainImage","contentBlockContainerStyle","contentBlockviewProps","title","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","labelGroup","renderErrorLabel","responseErrorMessage","errorMessageClassName","renderRegisteredUserMessage","signInUrl","signInLinkClassName","registeredUserClassName","orderLookupRegisteredUserText","orderLookupViewAccountText","orderLookupSignInLinkText","infoMessage","signInText","href","renderFieldErrors","orderLookupFieldValidationErrorMessage","RenderOrderLookupAdditionalFieldInput","_getOrderLookupAdditionalFields","additionalFieldLabel","additionalFieldError","additionalFieldInput","additionalFieldLabelClassName","inputType","name","isValidAdditionalFieldName","additionalFieldValidationMessage","RenderOrderLookupFormFields","_getOrderLookupFields","orderLookupLabelClassName","orderLookupLabel","ref","inputReference","fieldErrorClassName","isInputTypeError","renderAlert","isValidInputField","OrderLookupSearchValues","OrderLookup","isEmailValue","isOrderNumberValue","orderLookupExtensibleEnum","handleSubmit","orderNumber","orderLookupValue","orderStatusLookUpParametersType","orderLookupName","_validateOrderLookupForm","_Msdyn365$getUrlSync","actionContextValue","orderDetailsPath","baseUrl","URL","location","origin","redirectUrl","searchParameters","searchParams","set","fieldName","StringExtensions","isNullOrWhitespace","replace","toLocaleLowerCase","fieldValue","toString","_this$orderNumberInpu","_this$emailInputRef$c","orderNumberInputRef","current","emailInputRef","additionalPropertyStates","isAdditionalFieldError","isKeyExistInAdditionalFieldArray","labelName","isValidFieldName","additionalfieldErrorMessage","ordernumber","isOrdNumberError","isReqError","isEmailError","isValidEmailError","isValidLookupField","isValidAdditionalLookupField","isDisabled","_renderAlert","orderLookupEmailValidationErrorMessage","orderLookupRequiredTextErrorMessage","requiredErrorMessage","isNullOrEmpty","emailValidationErrorMessage","isRequireError","isEmailValidError","isValidEmailInput","_renderOrderNumberAlert","orderLookupOrderNumberValidationErrorMessage","_renderOrderLookupInput","orderLookupEmailLabel","orderLookupEmailAriaLabel","_additionalFieldValidation","isFieldValid","RegExp","test","isValid","isDisable","trim","isEmailValid","orderLookupSearchAdditionalFields","_item$labelName","_item$ariaLabel","_item$validationMessa","validationMessage","_context$request$user","orderLookupDefaultHeadingText","orderLookupButtonLabel","orderLookupFormAriaLabel","orderLookupOrderNumberLabel","orderLookupOrderNumberAriaLabel","orderLookupSubmitAriaLabel","headingText","headingTag","orderLookupContainerClassName","orderLookupFormClassName","orderLookupAdditionalFiledContainerClassName","orderLookupFormFieldsClassName","orderNumberLabelClassName","orderNumberInputErrorClassName","submitButtonClassName","signinLinkClassName","orderLookupHeading","orderLookup","orderLookupContainer","orderLookupAdditionalFieldContainer","_createParagraph","renderOrderLookupInputField","orderLookupForm","autoComplete","onSubmit","orderNumberInput","submitButton","Button","disabled","submitButtonLabelText","fieldErrorMessage","registeredUserMessage","user","submit","_renderAdditionalFields","_getExtensibleEnumera","_getExtensibleEnumera2","isOrderLookupAdditionalFieldValid","isOrderLookupFieldValid","getExtensibleEnumerations","StoreOperationsDataActions","find","TypeName","ExtensibleEnumerations","orderLookupAdditionalParameter","validateOrderLookupField","orderStatusLookUpParameter","isValidField","Name","validateOrderLookupAdditionalField","orderStatusLookUpAdditionalParameters","isValidAdditionalField","_item$fieldKey","fieldKey","validateAdditionalFieldWithProxy","some","setLookupFieldState","additionalFieldsInput","SocialShare","slots","socialShareItems","cookies","isConsentGiven","viewprops","SocialShareList","caption","orientation","SocialShareItem","tabIndex","SocialShareItemElements","TileList","_telemetryContent","Heading","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","content","From","formProps","inputPinLabel","inputExpLabel","alert","inputProps","inputNumProps","inputPinProps","inputExpProps","inputNumber","inputPin","inputExp","applyButton","supportExternalGiftCard","showGiftCardPinInput","showGiftCardExpInput","alertFieldLabel","SelectedGiftCard","itemProps","selectedGiftCard","removeButton","GiftCardList","listProps","list","_ref4","_objectWithoutProperties","_excluded","AddResource","_ref5","form","ShowResource","_ref6","checkoutGiftCardProps","showGiftCard","addGiftCard","AddCheckoutLoyalty","cardNumber","drawer","rewardPoints","loyaltyAmountContainer","appliedLoyaltyAmountContainer","loyaltyAmountLabel","loyaltyAmountInput","loyaltyAmountApplyButton","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","notEnoughPointsErrorString","showNotEnoughPointsError","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","expiringPointsText","expiringPoints","ShowCheckoutLoyalty","coveredAmountText","amount","formatNotEnoughPointsMessage","minPoints","minDollars","maxDollars","formatCartValueTooLowMessage","equivalentDollars","cartDollars","getMaxDollars","loyaltyTransactionEstimation","MaxCurrencyValueOfLoyaltyPoints","loyaltyGuard","setShowMinValueError","addEventListener","_e$target","isError","parseFloat","_props$data$checkout$","initialized","setInitialized","showMinValueError","setShowMinvalueError","checkoutLoyalty","showLoyalty","addLoyalty","notEnoughPointsMessage","minLoyaltyRedeemAmount","cultureFormatter","formatCurrency","MsDyn365","isBrowser","querySelector","btn","addLoyaltyExtended","checkout","checkoutCart","cart","TotalAmount","cartValueTooLowMessage","isShowLoyalty","isShowAddLoyalty","productCompositions","compositionTypes","fibres","productRecId","open","compositionState","setCompositionState","_toggle","hasSetValue","setHasSetValue","_productCompositions$","filter","composition","Product","_productCompositions$2","thatOne","ItemDataAreaId","compositionMap","Map","cs","collection","get","CompositionType","Drawer","collapseProps","timeout","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","values","cm","_compositionTypes$res","el","RecId","Description","c","_fibres$result","Fibre","Percent","histogramItem","buttonProps","starLabel","bar","percentage","histogramItems","histogramProps","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modalHeader","createModalBody","modalFooter","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","isMobile","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","recommendation","newOptions","sortByOptionRelevanceDesc","sortByOptionBestSelling","sortByOptionNewScore","useEffect","swatchDisable","_sortAndFilterContainerRef","_getSortCriteriaColumn","_props$data$listPageS","sortCriteria","listPageState","sortingCritera","Columns","queryColumns","JSON","parse","decodeURIComponent","parseQueryParam","_getSortColumnFromSelectedOption","option","searchConfiguration","mappedConfiguration","sortColumn","pending","selectedSortByOption","activeDropdown","_getCurrentlySelectedOption","activeSortColumn","activeMappedConfig","mappedSearchConfig","ColumnName","IsDescending","dropdownOption","newSortOptions","LabeledDropdown","labelClassname","sortByDropdownLabel","dropdownId","dropdownClassname","toggleColor","dropdownOptions","selectedOption","onSelectOption","notification","warning","history","pushState","buildListPageUrl","fullUrl","sortingColumns","skipCount","delete","sortedRefiners","sort","first","second","RefinerRecordId","stringify","compressedRefiners","refiner","compressedRefiner","refinerKey","compressRefiners","requestUrl","getCurrentUrl","transaction","currentPageNumber","_strikeSVG","imgCollect","querySelectorAll","node","classList","contains","thisColour","src","backgroundImage","maxWidth","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","keys","requiredValueMissingErrorMessage","renderAdditionalContent","_additionalContent$ad","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","_props$cart","_props$cart2","renderModuleAttributes","promotionOptions","hasInvoiceLine","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","headerProps","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","salesOrder","_ref8","orderHistoryProps","emptyMessage","backToShoppingLink","table","moreButton","buildReviewCard","cardProps","rating","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","cancelButton","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","OrderLookupViewComponent","_orderLookupForm$clas","_submitButton$classNa","SocialShareView","SocialShareElement","tileListView","tileItem","keyIndex","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","SummaryForm","addPaymentButton","appliedLine","bottomBorder","paymentAmountInput","EditForm","inputLabel","inputAmount","customerName","customerAccountNumber","customerSince","accountCredit","accountDetails","checkoutCustomerAccount","checkoutErrorRef","summaryView","editView","moduleState","isReady","placedBy","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","Image","altText","lazyload","viewports","xs","w","h","q","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","thumbnail","price","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","handleCancelSearchFocused","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","propsFormInput","propsFormInputCurrent","action","isMobileViewport","useCallback","isMobileView","variant","VariantType","Browser","viewport","onBlur","isSearchFormExpanded","SignInLoading","SignInButton","signIn","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","forgetPassword","disclaimer","signInButton","socialAccounts","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","signUpButton","B2BAccount","errorClassName","GetMaxLength","parsedMaxLength","htmlFor"],"sourceRoot":""}