{"version":3,"file":"static/js/15.200d9ca7e96b5dd226b9.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.tsx?6583","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.view.tsx?7490","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode.tsx?83e6","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode.tsx?5675","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/checkout-customer-account-payment.tsx?de67","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-group.tsx?9de7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-utility.ts?b7eb","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-date-dropdown.tsx?e5a3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-timeslot-dropdown.tsx?aef8","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/checkout-pickup.tsx?28aa","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.check-box.tsx?3b17","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-message.tsx?c6a5","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-title.tsx?f908","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx?9243","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/components/gdn-product-specification-table-stucture.tsx?4a02","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/gdn-product-specification.props.autogenerated.ts?a9af","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/gdn-product-specification.tsx?d2a0","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-product-specification/gdn-product-specification.view.tsx?2eee","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/checkout-shipping-address.view.tsx?5402","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/media-gallery.view.tsx?87fd","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/order-history.view.tsx?e453","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/checkout-shipping-address.view.tsx?885a","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/media-gallery.view.tsx?0cc7","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/order-history.view.tsx?d255","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.tsx?79c6","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/checkout-pickup.view.tsx?d64e","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.tsx?26e8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../src/checkout-utilities.data.ts?b2cc","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/common/error.tsx?096f","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { Alert, Button, INodeProps, NodeTag, getLocaleBasedCustomizedPrice, ILocalizedPrice } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentResources } from '../checkout-customer-account-payment.props.autogenerated';\n\nexport interface IGetAccountPaymentEditViewFormInput {\n resources: ICheckoutCustomerAccountPaymentResources;\n customizedAmt: string;\n amount: number;\n amountVariable: string;\n maxAmount: number;\n customer: Customer | undefined;\n customerCreatedDate: string;\n availableCredit: string;\n showCreditLimit: boolean;\n errorMessage: string | undefined;\n creditSectionIsExpanded: boolean;\n orderTotal: string;\n excessCredit: string | undefined;\n appliedAmount: string | undefined;\n locale: string;\n onAddPayment(): Promise;\n onChangePaymentAmount(customizedAmt: string, paymentAmount: number, amountVariable: string): void;\n onToggleCreditSection(): void;\n onRemovePayment(): Promise;\n skipOnChangeLogic?: boolean;\n}\n\nexport interface IAccountPaymentEditViewForm {\n formProps: INodeProps;\n inputLabel: React.ReactNode;\n inputAmount: React.ReactNode;\n addPaymentButton: React.ReactNode;\n customerName: React.ReactNode;\n customerAccountNumber: React.ReactNode;\n customerSince: React.ReactNode;\n accountCredit: React.ReactNode;\n alert: React.ReactNode;\n accountDetails: React.ReactNode;\n appliedLine: React.ReactNode;\n bottomBorder: React.ReactNode;\n}\n\n/**\n * On Add Account Payment Function.\n * @param onAddPayment -On Add Payment Function.\n * @returns Call of Add payment function.\n */\nconst onAddAccountPayment = (onAddPayment: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onAddPayment();\n};\n\n/**\n * On Change Amount Function.\n * @param onChangePaymentAmount -On Change Payment Amount Function.\n * @returns Call of Change payment Amount function.\n */\nconst onChangeAmountHandler = (\n customizedAmt: string,\n paymentAmount: number,\n amountVariable: string,\n locale: string,\n onChangePaymentAmount: (customizedAmt: string, paymentAmount: number, amountVariable: string) => void\n) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const customState: ILocalizedPrice = {\n customizedAmount: customizedAmt,\n amountVariable: amountVariable,\n paymentAmount: paymentAmount\n };\n const returnModifiedState = getLocaleBasedCustomizedPrice(value, customState, locale, keyCode);\n customizedAmt = returnModifiedState.customizedAmount as string;\n paymentAmount = returnModifiedState.paymentAmount as number;\n amountVariable = returnModifiedState.amountVariable as string;\n onChangePaymentAmount(customizedAmt, paymentAmount, amountVariable);\n keyCode = 0;\n};\n\nlet keyCode: number = 0;\nexport const getAccountPaymentFormEditMode = (options: IGetAccountPaymentEditViewFormInput): IAccountPaymentEditViewForm => {\n const {\n resources,\n onAddPayment,\n amount,\n customizedAmt,\n amountVariable,\n onChangePaymentAmount,\n maxAmount,\n customer,\n customerCreatedDate,\n availableCredit,\n showCreditLimit,\n errorMessage,\n onToggleCreditSection,\n creditSectionIsExpanded,\n orderTotal,\n excessCredit,\n onRemovePayment,\n appliedAmount,\n locale,\n skipOnChangeLogic\n } = options;\n\n const {\n addPaymentButtonLabel,\n inputAmountLabel,\n inputAmountAriaLabel,\n customerSinceLabel,\n accountCreditLabel,\n creditDetailsSectionLabel,\n orderTotalLabel,\n availableCreditLabel,\n creditExcessLabel,\n appliedCustomerAccountPaymentLabel,\n removeCustomerAccountPaymentLabel,\n accountCreditDetails\n } = resources;\n\n const inputLabel = (\n \n {inputAmountLabel}\n \n );\n\n const formProps = {\n className: 'ms-checkout-customer-account__form-edit',\n onSubmit: onAddAccountPayment(onAddPayment),\n tag: 'form' as NodeTag\n };\n\n const addPaymentButton = (\n maxAmount || amount < 0 || Number.isNaN(amount)}\n >\n {addPaymentButtonLabel}\n \n );\n\n const inputAmount = (\n onChangePaymentAmount(value, Number(value), value)\n : onChangeAmountHandler(customizedAmt, amount, amountVariable, locale, onChangePaymentAmount)\n }\n onKeyDown={event => (keyCode = event.which)}\n aria-label={inputAmountAriaLabel}\n aria-valuemin={0}\n aria-valuemax={maxAmount}\n aria-valuenow={amount}\n min={0}\n max={maxAmount}\n />\n );\n\n const customerName =
{customer?.Name}
;\n\n const customerAccountNumber =
#{customer?.AccountNumber}
;\n\n const customerSince = (\n
\n {customerSinceLabel}\n {customerCreatedDate}\n
\n );\n\n const accountCredit = (\n <>\n {accountCreditLabel}\n {showCreditLimit && {availableCredit}}\n \n \n );\n\n const accountDetails = creditSectionIsExpanded ? (\n
\n <>\n
\n \n \n {creditDetailsSectionLabel}\n \n
\n \n
\n {availableCreditLabel}\n {availableCredit}\n
\n
\n {orderTotalLabel}\n {orderTotal}\n
\n
\n {creditExcessLabel}\n {excessCredit ?? '0'}\n
\n
\n ) : (\n undefined\n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const appliedLine = appliedAmount ? (\n
\n {appliedCustomerAccountPaymentLabel}\n {appliedAmount}\n \n {removeCustomerAccountPaymentLabel}\n \n
\n ) : (\n undefined\n );\n\n const bottomBorder =
;\n\n return {\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentResources } from '../checkout-customer-account-payment.props.autogenerated';\n\nexport interface IGetAccountPaymentSummaryViewFormInput {\n resources: ICheckoutCustomerAccountPaymentResources;\n amount: number;\n appliedAmount: string | undefined;\n}\n\nexport interface IAccountPaymentSummaryViewForm {\n formProps: INodeProps;\n label: React.ReactNode;\n paymentAmount: React.ReactNode;\n addPaymentButton: React.ReactNode;\n appliedLine: React.ReactNode;\n bottomBorder: React.ReactNode;\n alert?: React.ReactNode;\n paymentAmountInput?: React.ReactNode;\n}\n\nexport const getAccountPaymentFormSummaryMode = (options: IGetAccountPaymentSummaryViewFormInput): IAccountPaymentSummaryViewForm => {\n const { resources, amount, appliedAmount } = options;\n\n const { addPaymentButtonLabel, inputAmountSummaryLabel, appliedCustomerAccountPaymentLabel, inputAmountAriaLabel } = resources;\n\n const label = (\n \n );\n\n const formProps = {\n className: 'ms-checkout-customer-account__form-summary',\n tag: 'form' as NodeTag\n };\n\n const paymentAmount = ;\n\n const paymentAmountInput = (\n \n );\n\n const addPaymentButton = (\n \n );\n\n const appliedLine = appliedAmount ? (\n
\n {appliedCustomerAccountPaymentLabel}\n {appliedAmount}\n
\n ) : (\n undefined\n );\n\n const bottomBorder =
;\n\n return {\n formProps,\n label,\n paymentAmount,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateManager, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentData } from './checkout-customer-account-payment.data';\nimport { ICheckoutCustomerAccountPaymentProps } from './checkout-customer-account-payment.props.autogenerated';\nimport { getAccountPaymentFormEditMode, IAccountPaymentEditViewForm } from './components/get-account-payment-form-edit-mode';\nimport { getAccountPaymentFormSummaryMode, IAccountPaymentSummaryViewForm } from './components/get-account-payment-form-summary-mode';\nimport { ErrorComponent } from '../../common/error';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutCustomerAccountPaymentViewProps\n extends ICheckoutCustomerAccountPaymentProps {\n checkoutCustomerAccount: IModuleProps;\n summaryView: IAccountPaymentSummaryViewForm;\n editView: IAccountPaymentEditViewForm;\n moduleState: IModuleStateManager;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\nexport interface ICheckoutCustomerAccountPaymentState {\n paymentAmount: number;\n isCreditSectionExpanded: boolean;\n customizedAmt: string;\n amountVariable: string;\n errorMessage?: string;\n handleSaveAndContinue?: boolean;\n}\n\n/**\n *\n * CheckoutCustomerAccount component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nexport class CheckoutCustomerAccountPayment extends React.Component<\n ICheckoutCustomerAccountPaymentViewProps,\n ICheckoutCustomerAccountPaymentState\n> {\n private readonly defaultLocale: string = 'en-us';\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerInfo = get(this.props, 'data.customerInformation.result');\n const request = get(this.props, 'context.request');\n const b2bChannel = isChannelTypeB2B(request);\n const platform = get(this.props, 'context.request.app.platform');\n\n return (\n customerInfo &&\n customerInfo.AllowOnAccountPayment === true &&\n platform &&\n (platform.enableCustomerAccountPayment === 'all' ||\n (platform.enableCustomerAccountPayment === 'b2b' && b2bChannel) ||\n (platform.enableCustomerAccountPayment === 'b2c' && !b2bChannel))\n );\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get maxPaymentAmount(): number {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return 0;\n }\n\n // Use customer account after loyalty.\n const amountDue = Math.max(0, (cart.TotalAmount || 0) - this.getLoyaltyAmount);\n\n // If the user has a mandatory credit limit, then the max amount must not be more than that\n if (this.props.data.customerInformation?.result?.MandatoryCreditLimit) {\n return Math.min(this.getAvailableCredit(this.props.data.creditBalances?.result), amountDue);\n }\n return amountDue;\n }\n\n @computed get errorMessage(): string | undefined {\n if (this.state.paymentAmount > this.maxPaymentAmount) {\n return this.props.resources.invalidAmountExceedAmountDueMessage;\n }\n\n if (this.state.paymentAmount < 0) {\n return this.props.resources.invalidAmountNegativeMessage;\n }\n\n return undefined;\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n @computed get availableCredit(): number {\n const creditBalances = get(this.props, 'data.creditBalances.result');\n\n return creditBalances ? this.getAvailableCredit(creditBalances) : 0;\n }\n\n @computed get orderTotal(): number {\n const orderTotal = get(this.props, 'data.checkout.result.checkoutCart.cart.TotalAmount');\n\n return orderTotal ? orderTotal : 0;\n }\n\n @computed get formattedExcessCredit(): string | undefined {\n const excessCredit = this.availableCredit - this.orderTotal;\n return excessCredit < 0 ? this.props.context.cultureFormatter.formatCurrency(excessCredit, this.currencyCode) : undefined;\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n private readonly baseClassName: string = 'ms-checkout-customer-account';\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutCustomerAccountPaymentViewProps) {\n super(props);\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\n this.state = {\n paymentAmount: this.maxPaymentAmount,\n isCreditSectionExpanded: false,\n customizedAmt: new Intl.NumberFormat(locale).format(this.maxPaymentAmount),\n amountVariable: this.maxPaymentAmount.toString(),\n handleSaveAndContinue: false\n };\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n // When the cart.TotalAmount gets updated (like if selecting the delivery option adds a charge) we need to update the amount based on the new total amount.\n reaction(\n () =>\n this.props.data.checkout.result &&\n this.props.data.checkout.result.checkoutCart.cart &&\n this.props.data.checkout.result.checkoutCart.cart.TotalAmount,\n totalAmount => {\n this.updateMaxAmount(this.maxPaymentAmount);\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutCustomerAccountPayment &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutCustomerAccountPayment) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutCustomerAccountPaymentProps,\n nextState: ICheckoutCustomerAccountPaymentState\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 | null {\n const customerInfo = this.props.data.customerInformation?.result;\n\n if (!this.isCustomerAccountPaymentEnabled) {\n this.props.context.telemetry.information(\n 'customer account payments will not display, because the feature is disabled or not enabled for this type of customer'\n );\n return null;\n }\n\n const checkoutState = this.props.data.checkout.result;\n const cart = checkoutState ? checkoutState.checkoutCart.cart : undefined;\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n const creditBalances = this.props.data.creditBalances.result;\n\n if (!cart || hasInvoiceLine) {\n return null;\n }\n const resources = this.props.resources;\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\n\n const customerSinceDate = new Date(customerInfo?.CreatedDateTime || 0).toLocaleDateString(locale);\n\n const hasError = this.props.moduleState.hasError;\n const errorMessage = this.state.errorMessage;\n\n const props = {\n ...this.props,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCustomerAccount: {\n moduleProps: this.props,\n className: classnames(this.baseClassName)\n },\n alert: hasError && errorMessage && (\n \n ),\n editView: getAccountPaymentFormEditMode({\n onAddPayment: this.addPayment,\n resources,\n customizedAmt: this.state.customizedAmt,\n amountVariable: this.state.amountVariable,\n amount: this.state.paymentAmount,\n onChangePaymentAmount: this.onChangePaymentAmount,\n maxAmount: this.maxPaymentAmount,\n customer: customerInfo,\n customerCreatedDate: customerSinceDate,\n availableCredit: this.props.context.cultureFormatter.formatCurrency(\n this.getAvailableCredit(creditBalances),\n this.currencyCode\n ),\n showCreditLimit: customerInfo?.MandatoryCreditLimit || false,\n errorMessage: this.errorMessage,\n onToggleCreditSection: this.toggleCreditSection,\n creditSectionIsExpanded: this.state.isCreditSectionExpanded,\n orderTotal: this.props.context.cultureFormatter.formatCurrency(this.orderTotal, this.currencyCode),\n excessCredit: this.formattedExcessCredit,\n onRemovePayment: this.removePayment,\n appliedAmount:\n checkoutState && checkoutState.customerAccountAmount > 0\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\n : undefined,\n locale:\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : this.defaultLocale,\n skipOnChangeLogic: this.props.context.request.features?.skipCheckoutOnChangeLogic\n }),\n summaryView: getAccountPaymentFormSummaryMode({\n resources,\n amount: this.state.paymentAmount,\n appliedAmount:\n checkoutState && checkoutState.customerAccountAmount > 0\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\n : undefined\n })\n };\n\n return this.props.renderView(props) as React.ReactElement;\n }\n\n private readonly getAvailableCredit = (creditBalances: CustomerBalances | undefined) => {\n let availableCredit = 0;\n\n if (!creditBalances) {\n return 0;\n }\n\n if (creditBalances.InvoiceAccountCreditLimit === 0) {\n availableCredit = creditBalances.CreditLimit - creditBalances.Balance - creditBalances.PendingBalance;\n } else {\n availableCredit =\n creditBalances.InvoiceAccountCreditLimit -\n creditBalances.InvoiceAccountBalance -\n creditBalances.InvoiceAccountPendingBalance;\n }\n\n return availableCredit;\n };\n\n private readonly addPayment = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n this.props.context.telemetry.error('checkout state not found');\n return;\n }\n\n this.setState({ handleSaveAndContinue: true });\n this._clearError();\n await checkoutState.updateCustomerAccountAmount({ newAmount: this.state.paymentAmount });\n this.props.context.telemetry.information('customer account payment amount updated');\n };\n\n private readonly toggleCreditSection = (): void => {\n this.setState({\n isCreditSectionExpanded: !this.state.isCreditSectionExpanded\n });\n };\n\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onCancel: this.handleCancelOrSubmit,\n onSubmit: this.handleCancelOrSubmit,\n onEdit: this.onEdit\n });\n\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount !== 0) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onChangePaymentAmount = (customizedAmt: string, paymentAmount: number, amountVariable: string): void => {\n this.setState({\n customizedAmt: customizedAmt,\n paymentAmount: paymentAmount,\n amountVariable: amountVariable\n });\n };\n\n private readonly updateMaxAmount = (newAmount: number): void => {\n // If the user has already set an amount, we should not override that in the UI because it will be confusing.\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount === 0) {\n this.setState({\n // We should never allow a negative amount.\n paymentAmount: Math.max(0, newAmount),\n customizedAmt: Math.max(0, newAmount).toString()\n });\n }\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section customer account payment onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly handleCancelOrSubmit = () => {\n const checkoutState = this.props.data.checkout.result;\n if (checkoutState && checkoutState.customerAccountAmount > 0) {\n this.setState({ handleSaveAndContinue: false });\n this.props.telemetry.information('Payment section customer account payment onSubmit is called.');\n\n if (\n Msdyn365.isOboRequest(this.props.context.request) &&\n checkoutState?.customerAccountAmount !== checkoutState?.checkoutCart.cart.TotalAmount\n ) {\n this._setErrorMessage(this.props.resources.invalidAmountForOBOMessage);\n } else {\n this.props.moduleState.onReady();\n }\n } else if (\n checkoutState?.customerAccountAmount === 0 &&\n !this.state.handleSaveAndContinue &&\n this.props.config.isCheckoutCustomerAccountPaymentRequired\n ) {\n this._setErrorMessage(this.props.resources.customerAccountCreditErrorMessage);\n } else {\n this.props.telemetry.information('Payment section customer account payment onCancel is called.');\n\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly removePayment = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n this.props.context.telemetry.error('checkout state not found');\n return;\n }\n\n this.setState({\n paymentAmount: 0\n });\n\n this.onChangePaymentAmount('', NaN, '0');\n\n this._clearError();\n await checkoutState.updateCustomerAccountAmount({ newAmount: 0 });\n this.props.context.telemetry.information('customer account payment removed');\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutCustomerAccountPayment;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IModule } from '@msdyn365-commerce/core';\nimport {\n Address,\n CartLine,\n LineDeliverySpecification,\n PickupTimeslotAvailability,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ICheckoutPickupGroupKey {\n pickupStoreId: string;\n deliveryMode: string;\n}\n\nexport interface ICheckoutPickupGroup extends ICheckoutPickupGroupKey {\n pickupModeName: string;\n storeName: string;\n pickupAddress?: Address;\n availabilityState: PickupTimeslotAvailabilityState;\n groupErrorMessage?: string;\n dateErrorMessage?: string;\n timeslotErrorMessage?: string;\n lineDeliverySpecs: LineDeliverySpecification[];\n cartLines: ICartLineWithProduct[];\n\n availableDates: Date[];\n availableTimeslots: PickupTimeslotAvailability[];\n\n selectedDate?: Date;\n selectedTimeslot?: PickupTimeslotAvailability;\n}\n\nexport enum PickupTimeslotAvailabilityState {\n None,\n Available,\n NotDefined,\n NotAvailable // All slots occupied\n}\n\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\nexport interface ICheckoutPickupGroupViewProps {\n moduleProps: IModule;\n\n pickupGroupContainer: INodeProps;\n dateTimeslotContainer: INodeProps;\n\n pickupStoreId: string;\n pickupModeName: string;\n deliveryMode: string;\n\n groupDivider: React.ReactNode;\n groupHeader: React.ReactNode;\n groupErrorMessage: React.ReactNode;\n cartLineImages: React.ReactNode;\n pickupDateDropdown: React.ReactNode;\n pickupTimeslotDropdown: React.ReactNode;\n\n selectedDateTimeslot: React.ReactNode;\n pickupAddress: React.ReactNode;\n}\n\nexport interface ICheckoutPickupErrorProps {\n errorMessage?: string;\n}\n\nexport const CheckoutPickupError: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n\nexport interface ICheckoutPickupGroupHeaderProps {\n moduleClassName: string;\n storeInfo: string;\n items: string;\n}\n\nexport const CheckoutPickupGroupHeader: React.FC = ({ moduleClassName, storeInfo, items }) => {\n return (\n
\n
{storeInfo}
\n
{items}
\n
\n );\n};\n\nexport interface ICheckoutPickupTimeslotInfoProps {\n moduleClassName: string;\n title: string;\n content: string;\n}\n\nexport const CheckoutPickupTimeslotInfo: React.FC = ({ moduleClassName, title, content }) => {\n return (\n
\n
{title}
\n
{content}
\n
\n );\n};\n\nexport interface ICheckoutPickupAddressProps {\n moduleClassName: string;\n title: string;\n address?: Address;\n}\n\nexport const CheckoutPickupAddress: React.FC = ({ moduleClassName, title, address }) => {\n if (!address) {\n return null;\n }\n\n return (\n
\n
{title}
\n {address.Name && {address.Name}}\n <>\n {address.Street && {address.Street}}\n {address.City && {address.City}}\n {address.State && {`, ${address.State}`}}\n {address.County && {`, ${address.County}`}}\n {address.ZipCode && {` ${address.ZipCode}`}}\n {address.ThreeLetterISORegionName && (\n \n {` ${address.ThreeLetterISORegionName}`}\n \n )}\n \n
\n );\n};\n\nexport interface ICheckoutPickupCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\nexport interface ICheckoutPickupCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutPickupCartLineInfo[];\n}\n\nexport const CheckoutPickupCartLines: React.FC = ({ moduleClassName, cartLines }) => {\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n return (\n
\n {cartLines.map(prop => {\n const showQty = prop.quantity > 1;\n let className = `${moduleClassName}__group-product-image`;\n if (showQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {showQty &&
{prop.quantity}
}\n
\n );\n })}\n
\n );\n};\n\nexport const DefaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg\"', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format } from '@msdyn365-commerce-modules/utilities';\n\nexport function getDate(date: Date | undefined, locale: string): string {\n if (!date) {\n return '';\n }\n const options: Intl.DateTimeFormatOptions = {\n timeZone: 'UTC'\n };\n const formatter = new Intl.DateTimeFormat(locale, options);\n return formatter.format(new Date(date));\n}\n\nexport const getTimeslot = (\n placeHolder: string,\n startDate: Date | undefined,\n endDate: Date | undefined,\n locale: string,\n useHour12TimeFormat?: boolean\n): string => {\n if (!startDate || !endDate) {\n return '';\n }\n let options: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' };\n options = useHour12TimeFormat\n ? { hour: 'numeric', minute: 'numeric', timeZone: 'UTC' }\n : { hour: 'numeric', minute: 'numeric', timeZone: 'UTC', hour12: true };\n const formatter = new Intl.DateTimeFormat(locale, options);\n return format(placeHolder, formatter.format(new Date(startDate)), formatter.format(new Date(endDate)));\n};\n\nexport const getUTCDateWithoutTime = (input: Date): Date => {\n const date: Date = new Date(input);\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0));\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\nimport {\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { CheckoutPickupError } from './checkout-pickup-group';\nimport { getDate } from './checkout-pickup-utility';\n\nexport interface IPickupDropdownProps {\n pickupStoreId: string;\n deliveryMode: string;\n\n className: string;\n labelClassname?: string;\n labelText: string;\n defaultText: string;\n errorMessage?: string;\n\n locale: string;\n\n // Props for the LabeledDropdown component\n dropdownId: string;\n controlledByParent: boolean;\n toggleColor?: string;\n dropdownClassname?: string;\n}\n\nexport interface IPickupDateDropdownProps extends IPickupDropdownProps {\n availableDates: Date[];\n selectedDate?: Date;\n setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): void;\n}\n\n/**\n *\n * CheckoutPickupDateDropdown component.\n * @extends {React.Component}\n */\nexport class CheckoutPickupDateDropdown extends React.PureComponent {\n private readonly defaultKey: number = -1;\n\n private readonly defaultOption: ILabeledDropdownOption;\n\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\n @computed get getDateMap(): Map {\n const map = new Map();\n this.props.availableDates.forEach((value, index) => {\n map.set(index.toString(), value);\n });\n return map;\n }\n\n constructor(props: IPickupDateDropdownProps) {\n super(props);\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\n this.updateDateSelection = this.updateDateSelection.bind(this);\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n labelClassname,\n labelText,\n errorMessage,\n dropdownId,\n availableDates,\n selectedDate,\n controlledByParent,\n toggleColor,\n dropdownClassname\n } = this.props;\n\n const { dropdownOptions, selectedOption } = this.mapDatesToOptions(availableDates, selectedDate);\n\n return (\n
\n \n \n \n
\n );\n }\n\n private readonly updateDateSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\n const { pickupStoreId, deliveryMode, setDateHandler } = this.props;\n const date: Date | undefined = this.getDate(notification);\n setDateHandler(pickupStoreId, deliveryMode, date);\n };\n\n private readonly getDate = (notification: ILabeledDropdownOnChangeNotification): Date | undefined => {\n const key: string = notification.selectedOption.key;\n if (key === this.defaultKey.toString() || !this.getDateMap.has(key)) {\n return undefined;\n }\n return this.getDateMap.get(key);\n };\n\n private readonly mapDatesToOptions = (\n dates: Date[],\n selectedDate: Date | undefined\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\n const { locale } = this.props;\n let options: ILabeledDropdownOption[] = [];\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\n\n options = dates.map((value: Date, index: number) => {\n return {\n key: index.toString(),\n value: getDate(value, locale)\n };\n });\n options.unshift(this.defaultOption);\n\n const index: number = dates.findIndex((value: Date) => selectedDate !== undefined && selectedDate.getTime() === value.getTime());\n if (index >= 0 && selectedDate) {\n selectedOption = {\n key: index.toString(),\n value: getDate(selectedDate, locale)\n };\n }\n\n return {\n dropdownOptions: options,\n selectedOption\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 { PickupTimeslotAvailability } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\nimport {\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { IPickupDropdownProps } from './checkout-pickup-date-dropdown';\nimport { CheckoutPickupError } from './checkout-pickup-group';\nimport { getTimeslot } from './checkout-pickup-utility';\n\nexport interface IPickupTimeslotDropdownProps extends IPickupDropdownProps {\n availableTimeslots: PickupTimeslotAvailability[];\n selectedTimeslot?: PickupTimeslotAvailability;\n timeslotPlaceHolder: string;\n setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void;\n useHour12TimeFormat?: boolean;\n}\n\n/**\n *\n * CheckoutPickupTimeslotDropdown component.\n * @extends {React.Component}\n */\nexport class CheckoutPickupTimeslotDropdown extends React.PureComponent {\n private readonly defaultKey: number = -1;\n\n private readonly defaultOption: ILabeledDropdownOption;\n\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\n @computed get getTimeslotMap(): Map {\n const map = new Map();\n this.props.availableTimeslots.forEach((value, index) => {\n map.set(index.toString(), value);\n });\n return map;\n }\n\n constructor(props: IPickupTimeslotDropdownProps) {\n super(props);\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\n this.updateTimeslotSelection = this.updateTimeslotSelection.bind(this);\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n labelClassname,\n labelText,\n errorMessage,\n dropdownId,\n availableTimeslots,\n selectedTimeslot,\n controlledByParent,\n toggleColor,\n dropdownClassname\n } = this.props;\n\n const { dropdownOptions, selectedOption } = this.mapTimeslotsToOptions(availableTimeslots, selectedTimeslot);\n\n return (\n
\n \n \n \n
\n );\n }\n\n private readonly updateTimeslotSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\n const { pickupStoreId, deliveryMode, setTimeslotHandler } = this.props;\n const timeslot: PickupTimeslotAvailability | undefined = this.getTimeslot(notification);\n setTimeslotHandler(pickupStoreId, deliveryMode, timeslot);\n };\n\n private readonly getTimeslot = (notification: ILabeledDropdownOnChangeNotification): PickupTimeslotAvailability | undefined => {\n const key: string = notification.selectedOption.key;\n if (key === this.defaultKey.toString() || !this.getTimeslotMap.has(key)) {\n return undefined;\n }\n return this.getTimeslotMap.get(key);\n };\n\n private readonly mapTimeslotsToOptions = (\n timeslots: PickupTimeslotAvailability[],\n selectedTimeslot: PickupTimeslotAvailability | undefined\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\n const { timeslotPlaceHolder, locale, useHour12TimeFormat } = this.props;\n let options: ILabeledDropdownOption[] = [];\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\n\n options = timeslots.map((value: PickupTimeslotAvailability, index: number) => {\n return {\n key: index.toString(),\n value: getTimeslot(timeslotPlaceHolder, value.StartDateTime, value.EndDateTime, locale, useHour12TimeFormat)\n };\n });\n options.unshift(this.defaultOption);\n\n const index: number = timeslots.findIndex(\n value =>\n selectedTimeslot !== undefined &&\n selectedTimeslot.StartDateTime?.getTime() === value.StartDateTime?.getTime() &&\n selectedTimeslot.EndDateTime?.getTime() === value.EndDateTime?.getTime()\n );\n if (index >= 0 && selectedTimeslot) {\n selectedOption = {\n key: index.toString(),\n value: getTimeslot(\n timeslotPlaceHolder,\n selectedTimeslot.StartDateTime,\n selectedTimeslot.EndDateTime,\n locale,\n useHour12TimeFormat\n )\n };\n }\n\n return {\n dropdownOptions: options,\n selectedOption\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 { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { getEstimatedPickupTimeslotAvailabilitiesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CartLine,\n LineDeliverySpecification,\n OrgUnitLocation,\n PickupTimeslotAvailability,\n PickupTimeslotAvailabilitySearchCriteria,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, IModuleProps, isNullOrWhiteSpace, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutPickupData } from './checkout-pickup.data';\nimport { ICheckoutPickupProps } from './checkout-pickup.props.autogenerated';\nimport {\n CheckoutPickupDateDropdown,\n CheckoutPickupError,\n CheckoutPickupTimeslotDropdown,\n getDate,\n getTimeslot,\n getUTCDateWithoutTime\n} from './components';\nimport {\n CheckoutPickupAddress,\n CheckoutPickupCartLines,\n CheckoutPickupGroupHeader,\n CheckoutPickupTimeslotInfo,\n DefaultImageSettings,\n ICheckoutPickupAddressProps,\n ICheckoutPickupCartLineInfo,\n ICheckoutPickupCartLinesProps,\n ICheckoutPickupGroup,\n ICheckoutPickupGroupHeaderProps,\n ICheckoutPickupGroupViewProps,\n ICheckoutPickupTimeslotInfoProps,\n PickupTimeslotAvailabilityState\n} from './components/checkout-pickup-group';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutPickupModuleProps extends ICheckoutPickupProps, IModuleStateProps {}\n\nexport interface ICheckoutPickupState {\n pickupGroups: ICheckoutPickupGroup[];\n}\n\nexport interface ICheckoutPickupViewState {\n isLoading: boolean;\n isHeaderError: boolean;\n isShowDropdown: boolean;\n isShowSelected: boolean;\n}\n\nexport interface ICheckoutPickupViewProps extends ICheckoutPickupProps<{}> {\n checkoutPickup: IModuleProps;\n viewState: ICheckoutPickupViewState;\n headerError: React.ReactNode;\n waiting: React.ReactNode;\n pickupGroups: ICheckoutPickupGroupViewProps[];\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutPickup component.\n * @extends {React.Component}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutPickup extends React.Component {\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isLoading: boolean = false;\n\n @observable private headerErrorMessage?: string;\n\n @computed get isDataReady(): boolean {\n return (\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\n (this.props.data.orgUnitLocations.result && this.props.data.orgUnitLocations.status) === 'SUCCESS'\n );\n }\n\n constructor(props: ICheckoutPickupModuleProps) {\n super(props);\n this.state = { pickupGroups: [] };\n\n this.setDateHandler = this.setDateHandler.bind(this);\n this.setTimeslotHandler = this.setTimeslotHandler.bind(this);\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n async () => {\n await this.initPickupGroup();\n this.initModuleState();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutPickup && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutPickup) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutPickupModuleProps, nextState: ICheckoutPickupState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this.isDataReady || !this.canPickup()) {\n return null;\n }\n\n const { resources, config, context } = this.props;\n\n const {\n pickupDateLabel,\n pickupTimeslotLabel,\n pickupDateDefaultText,\n pickupTimeslotDefaultText,\n itemsText,\n singleItemText,\n pickupDateTimeslotText,\n pickupTimeslotPlaceHolder,\n pickupLocationLabel\n } = resources;\n\n const { locale } = context.request;\n const { className, imageSettings, useHour12TimeFormat } = config;\n const defaultClassName = 'ms-checkout-pickup';\n const groupsViewProps: ICheckoutPickupGroupViewProps[] = [];\n\n this.state.pickupGroups.forEach((value, index) => {\n // Divider line for each pickup group\n const groupDivider: React.ReactNode = index !== 0 &&
;\n\n // Line images\n const cartlines: ICheckoutPickupCartLineInfo[] = value.cartLines\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId || '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: `${defaultClassName}__group-line-image`,\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl || '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings || DefaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity || 0\n }));\n\n // Heading for each group\n const numberOfCartLines = this._countItems(cartlines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n const headerProps: ICheckoutPickupGroupHeaderProps = {\n moduleClassName: defaultClassName,\n storeInfo: `${value.pickupModeName}, ${value.storeName}`,\n items: itemTitle\n };\n const groupHeader: React.ReactNode = ;\n\n const lineImageProps: ICheckoutPickupCartLinesProps = {\n moduleClassName: defaultClassName,\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x))\n };\n const cartLineImages: React.ReactNode = ;\n\n // Selected pickup date and timeslot node\n const dateString = getDate(value.selectedDate, locale);\n const timeslotString = getTimeslot(\n pickupTimeslotPlaceHolder,\n value.selectedTimeslot?.StartDateTime,\n value.selectedTimeslot?.EndDateTime,\n locale,\n useHour12TimeFormat\n );\n const timeslotInfoProps: ICheckoutPickupTimeslotInfoProps = {\n moduleClassName: defaultClassName,\n title: pickupDateTimeslotText,\n content: `${dateString} ${timeslotString}`\n };\n const selectedDateTimeslotNode: React.ReactNode = ;\n\n // Pickup address\n const addressProps: ICheckoutPickupAddressProps = {\n moduleClassName: defaultClassName,\n title: pickupLocationLabel,\n address: value.pickupAddress\n };\n const pickupAddress: React.ReactNode = ;\n\n // Pickup date and timeslot dropdown list\n const dropdownClassName = `${defaultClassName}__group-datetime-dropdown`;\n const labelClassName = `${dropdownClassName}-label`;\n const dropdownSelectClassName = `${dropdownClassName}-select`;\n const dateDropdownNode: React.ReactNode = (\n \n );\n\n const timeslotDropdownNode: React.ReactNode = (\n \n );\n\n const viewProp: ICheckoutPickupGroupViewProps = {\n moduleProps: { ...this.props },\n pickupGroupContainer: { className: `${defaultClassName}__group` },\n dateTimeslotContainer: { className: `${defaultClassName}__group-datetime` },\n pickupStoreId: value.pickupStoreId,\n pickupModeName: value.pickupModeName,\n deliveryMode: value.deliveryMode,\n groupDivider,\n groupHeader,\n groupErrorMessage: ,\n cartLineImages,\n pickupDateDropdown: dateDropdownNode,\n pickupTimeslotDropdown: timeslotDropdownNode,\n selectedDateTimeslot: selectedDateTimeslotNode,\n pickupAddress\n };\n\n groupsViewProps.push(viewProp);\n });\n\n const {\n moduleState: { isReady, hasError }\n } = this.props;\n const isHeaderError = !this.isLoading && this.headerErrorMessage !== undefined;\n const isShowDropdown = !this.isLoading && !isReady;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n\n const viewProps: ICheckoutPickupViewProps = {\n ...this.props,\n checkoutPickup: {\n moduleProps: this.props,\n className: classname(defaultClassName, className)\n },\n viewState: {\n isLoading: this.isLoading,\n isHeaderError,\n isShowSelected,\n isShowDropdown\n },\n headerError: ,\n waiting: ,\n pickupGroups: groupsViewProps,\n checkoutErrorRef: this.checkoutErrorRef\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n public async setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): Promise {\n const oldGroup = this.state.pickupGroups.find(\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\n );\n if (!oldGroup) {\n return;\n }\n\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\n newGroup.selectedDate = pickupDate;\n newGroup.selectedTimeslot = undefined; // Clear the selected timeslot in any case\n newGroup.timeslotErrorMessage = undefined; // Clear the timeslot error message if any\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\n if (lineSpec.DeliverySpecification) {\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = undefined;\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = undefined;\n }\n });\n\n if (pickupDate) {\n // Date is set\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n StartDate: pickupDate,\n EndDate: pickupDate,\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\n };\n const timeslotResults: PickupTimeslotAvailability[] = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\n searchCriteria\n );\n\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\n newGroup.dateErrorMessage =\n newGroup.availableTimeslots.length === 0 ? this.props.resources.noAvailableTimeslotError : undefined;\n } else {\n // Date is not set\n newGroup.availableTimeslots = [];\n newGroup.dateErrorMessage = undefined;\n }\n\n const groups = this.state.pickupGroups.map(group => {\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\n return newGroup;\n }\n return group;\n });\n\n this.setState({ pickupGroups: groups });\n }\n\n @action\n public setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void {\n const oldGroup = this.state.pickupGroups.find(\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\n );\n if (!oldGroup) {\n return;\n }\n\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\n\n newGroup.selectedTimeslot = pickupTimeslot;\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\n if (lineSpec.DeliverySpecification) {\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = pickupTimeslot?.StartDateTime;\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = pickupTimeslot?.EndDateTime;\n }\n });\n\n if (pickupTimeslot) {\n newGroup.timeslotErrorMessage = undefined;\n }\n\n const groups = this.state.pickupGroups.map(group => {\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\n return newGroup;\n }\n return group;\n });\n\n this.setState({ pickupGroups: groups });\n }\n\n @action\n private readonly initModuleState = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onSubmit: this.onSubmit,\n status: this.canPickup() ? (this.isPickupTimeSlotSet() ? 'ready' : 'updating') : 'disabled'\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly onReady = (): void => {\n this.props.moduleState.onReady();\n };\n\n private readonly onPending = (): void => {\n this.props.moduleState.onPending();\n };\n\n private readonly onSubmit = async (): Promise => {\n await this.updateCartLinePickupDateTimeslot();\n };\n\n private readonly setError = (errorMessage: string, isHeaderError: boolean = true): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n if (isHeaderError) {\n this.headerErrorMessage = errorMessage;\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.headerErrorMessage = undefined;\n };\n\n @action\n private readonly initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this.getCartLinesforPickup();\n let products: SimpleProduct[] = [];\n try {\n products = await this.getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n const pickupGroups: ICheckoutPickupGroup[] = [];\n const locations: OrgUnitLocation[] = this.props.data.orgUnitLocations.result || [];\n this.isLoading = true;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState, deliveryOptions } = this.props?.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n for (const line of pickupCartLines) {\n const group: ICheckoutPickupGroup | undefined = pickupGroups.find(\n x => x.pickupStoreId === line.FulfillmentStoreId && x.deliveryMode === line.DeliveryMode\n );\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n const lineDeliverySpecification: LineDeliverySpecification = {\n LineId: line.LineId,\n DeliverySpecification: {\n DeliveryModeId: line.DeliveryMode,\n DeliveryPreferenceTypeValue: 2,\n PickUpStoreId: line.FulfillmentStoreId,\n PickupTimeslotStartDateTime: line.PickupTimeslotStartDateTime,\n PickupTimeslotEndDateTime: line.PickupTimeslotEndDateTime,\n DeliveryAddress: line.ShippingAddress\n }\n };\n if (group) {\n group.lineDeliverySpecs.push(lineDeliverySpecification);\n group.cartLines.push({ cartLine: line, product });\n } else {\n // Group not exists yet\n const location: OrgUnitLocation | undefined = locations.find(x => x.OrgUnitNumber === line.FulfillmentStoreId);\n const storeName: string = this.getStoreName(location, line);\n const selectedDate: Date | undefined =\n line.PickupTimeslotStartDateTime && getUTCDateWithoutTime(line.PickupTimeslotStartDateTime);\n const selectedTimeslot =\n line.PickupTimeslotStartDateTime && line.PickupTimeslotEndDateTime\n ? { StartDateTime: line.PickupTimeslotStartDateTime, EndDateTime: line.PickupTimeslotEndDateTime }\n : undefined;\n const newGroup: ICheckoutPickupGroup = {\n pickupModeName: retailMultiplePickUpOptionEnabled\n ? this.getPickupModeDescription(\n this.props.resources.generalPickupText,\n line.DeliveryMode,\n deliveryOptions?.result,\n product\n )\n : this.props.resources.generalPickupText,\n pickupStoreId: line.FulfillmentStoreId || '',\n deliveryMode: line.DeliveryMode || '',\n storeName,\n pickupAddress: line.ShippingAddress,\n availabilityState: PickupTimeslotAvailabilityState.None,\n lineDeliverySpecs: [lineDeliverySpecification],\n cartLines: [{ cartLine: line, product }],\n availableDates: [],\n availableTimeslots: [],\n selectedDate,\n selectedTimeslot\n };\n\n let dailyGroupingResults: PickupTimeslotAvailability[] = [];\n try {\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n SearchOptionValue: 1 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.DailyGroupingTimeslotOnly\n };\n dailyGroupingResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n searchCriteria\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n newGroup.availabilityState = this.getPickupTimeslotAvailabilityState(dailyGroupingResults);\n if (newGroup.availabilityState === PickupTimeslotAvailabilityState.NotAvailable) {\n newGroup.groupErrorMessage = this.props.resources.noAvailableDateError;\n this.setError(newGroup.groupErrorMessage, false);\n }\n dailyGroupingResults.forEach(value => {\n if (value.StartDateTime && (value.AvailableCapacity || 0) > 0) {\n newGroup.availableDates.push(getUTCDateWithoutTime(value.StartDateTime));\n }\n });\n\n if (selectedDate) {\n let timeslotResults: PickupTimeslotAvailability[] = [];\n try {\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n StartDate: selectedDate,\n EndDate: selectedDate,\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\n };\n timeslotResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\n searchCriteria\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\n }\n pickupGroups.push(newGroup);\n }\n }\n\n const filteredPickupGroups = pickupGroups.filter(\n group =>\n group.availabilityState === PickupTimeslotAvailabilityState.Available ||\n group.availabilityState === PickupTimeslotAvailabilityState.NotAvailable\n );\n\n if (!ArrayExtensions.hasElements(filteredPickupGroups)) {\n this.props.context.telemetry.error('Data is not ready or pickup group is empty, module wont render.');\n }\n this.isLoading = false;\n this.setState({ pickupGroups: filteredPickupGroups });\n };\n\n @action\n private readonly updateCartLinePickupDateTimeslot = async (): Promise => {\n if (!this.validateTimeslot()) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n\n this.state.pickupGroups.forEach(group => {\n lineSpecs = lineSpecs.concat(group.lineDeliverySpecs);\n });\n\n this.clearError();\n this.onPending();\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinePickupDateTimeslot({ lineDeliverySpecifications: lineSpecs });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n private readonly validateTimeslot = (): boolean => {\n let validationResult = true;\n this.state.pickupGroups.forEach(group => {\n switch (group.availabilityState) {\n case PickupTimeslotAvailabilityState.NotAvailable:\n // Need customer to select another store in this case\n validationResult = false;\n break;\n case PickupTimeslotAvailabilityState.Available:\n if (!group.selectedDate || !group.selectedTimeslot) {\n if (!group.selectedDate) {\n group.dateErrorMessage = this.props.resources.pickupDateRequired;\n }\n if (!group.selectedTimeslot) {\n group.timeslotErrorMessage = this.props.resources.pickupTimeslotRequired;\n }\n this.setError(this.props.resources.pickupDateTimeslotRequired, false);\n validationResult = false;\n } else {\n group.dateErrorMessage = undefined;\n group.timeslotErrorMessage = undefined;\n }\n break;\n\n // We consider timeslot not defined as fallback case\n case PickupTimeslotAvailabilityState.NotDefined:\n default:\n }\n });\n\n return validationResult;\n };\n\n private readonly getStoreName = (orgUnitLocation: OrgUnitLocation | undefined, cartLine: CartLine): string => {\n return orgUnitLocation?.OrgUnitName || cartLine.ShippingAddress?.Name || cartLine.FulfillmentStoreId || '';\n };\n\n private readonly canPickup = (): boolean => {\n return ArrayExtensions.hasElements(this.state.pickupGroups);\n };\n\n private readonly isPickupTimeSlotSet = (): boolean => {\n return (\n ArrayExtensions.hasElements(this.state.pickupGroups) &&\n this.state.pickupGroups.every(\n group =>\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.StartDateTime) &&\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.EndDateTime)\n )\n );\n };\n\n private readonly getCartLinesforPickup = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this.isPickupLine(line)) || [];\n };\n\n private readonly isPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props?.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.includes(deliveryMode);\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode === pickupDeliveryModeCode;\n };\n\n private readonly isPickupLine = (line: CartLine): boolean => {\n return (\n this.isPickupMode(line.DeliveryMode) && line.FulfillmentStoreId !== undefined && !isNullOrWhiteSpace(line.FulfillmentStoreId)\n );\n };\n\n private readonly getPickupModeDescription = (\n resourceString: string,\n deliveryMode?: string,\n deliveryOptions?: ProductDeliveryOptions[],\n product?: SimpleProduct\n ): string => {\n let deliveryOption: string = resourceString;\n if (ArrayExtensions.hasElements(deliveryOptions) && product !== undefined) {\n let foundProductDeliveryOption;\n foundProductDeliveryOption = deliveryOptions?.find(deliveryO => {\n return deliveryO && deliveryO.ProductId === product.RecordId;\n });\n const deliveryDesc = foundProductDeliveryOption?.DeliveryOptions\n ? foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === deliveryMode)?.Description\n : resourceString;\n if (deliveryDesc !== undefined) {\n deliveryOption = deliveryDesc;\n }\n }\n return deliveryOption;\n };\n\n private readonly getPickupTimeslotAvailabilityState = (dailyResult: PickupTimeslotAvailability[]) => {\n let state: PickupTimeslotAvailabilityState = PickupTimeslotAvailabilityState.None;\n if (!ArrayExtensions.hasElements(dailyResult)) {\n state = PickupTimeslotAvailabilityState.NotDefined;\n } else if (dailyResult.every(date => (date.AvailableCapacity || 0) <= 0)) {\n state = PickupTimeslotAvailabilityState.NotAvailable;\n } else {\n state = PickupTimeslotAvailabilityState.Available;\n }\n return state;\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout pickup cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutPickupCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutPickup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\n isChecked: boolean;\n ariaLabel?: string;\n disabled: boolean;\n id?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.ariaLabel\n * @param root0.disabled\n * @param root0.telemetryContent\n * @param root0.onChange\n * @param root0.id\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\n isChecked,\n ariaLabel,\n disabled,\n telemetryContent,\n onChange,\n id\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n \n \n );\n};\n\nexport default CheckoutTermsAndConditionsCheckbox;\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 ICheckoutTermsAndConditionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorMessage;\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 ICheckoutTermsAndConditionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorTitle;\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 { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutTermsAndConditionsData } from './checkout-terms-and-conditions.data';\nimport { ICheckoutTermsAndConditionsProps } from './checkout-terms-and-conditions.props.autogenerated';\nimport CheckboxComponent from './components/checkout-terms-and-conditions.check-box';\nimport ErrorMessageComponent from './components/checkout-terms-and-conditions.error-message';\nimport ErrorTitleComponent from './components/checkout-terms-and-conditions.error-title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutTermsAndConditionsModuleProps\n extends ICheckoutTermsAndConditionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutTermsAndConditions {\n termsAndConditionAcceptance: INodeProps;\n checkBox: React.ReactNode;\n description: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsError {\n error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsViewState {\n isError: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutTermsAndConditionsViewProps extends ICheckoutTermsAndConditionsProps<{}> {\n checkoutTermsAndConditions: IModuleProps;\n isTermsAccepted: boolean;\n errorMessageData: string;\n viewState: ICheckoutTermsAndConditionsViewState;\n termsAndConditionsContent: ICheckoutTermsAndConditions;\n errorMessage?: ICheckoutTermsAndConditionsError;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutTermsAndConditions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutTermsAndConditions extends React.Component {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isTermsAccepted: boolean = true;\n\n @observable private errorMessage?: string;\n\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\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 @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get isShowButtons(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\n }\n\n @computed get isAutoSave(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\n }\n\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\n const { showCheckbox } = this.props.config;\n return !showCheckbox;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\n async () => {\n this.isTermsAccepted =\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutTermsAndConditions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutTermsAndConditions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutTermsAndConditionsModuleProps,\n nextState: ICheckoutTermsAndConditionsViewState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady, hasError },\n config: { className }\n } = this.props;\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\n const isError = hasError;\n const isShowContent = !isReady;\n const isShowSelected = !hasError && isReady;\n\n const viewProps = {\n ...this.props,\n ...this.state,\n isTermsAccepted: this.isTermsAccepted,\n errorMessageData: this.errorMessage,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isError,\n isShowSaveButton: isShowContent && this.isShowButtons,\n isShowEditButton: isShowSelected && this.isShowButtons,\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\n },\n checkoutTermsAndConditions: {\n moduleProps: this.props,\n className: classname('ms-checkout-terms-and-conditions', className)\n },\n termsAndConditionsContent: this.getTermsAndConditions(),\n errorMessage: this.getErrorMessage(),\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSubmit,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onChange: this.onChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\n\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\n const {\n moduleState: { isReady },\n config: { showCheckbox, description }\n } = this.props;\n const isDisabled = isReady && !this.isAutoSave;\n const isTermsAndConditionAccepted = this.isTermsAccepted;\n const { checkboxAriaLabel } = this.props.resources;\n return {\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\n checkBox: showCheckbox && (\n \n ),\n description: (\n \n )\n };\n };\n\n @action\n private readonly init = async (): Promise => {\n const {\n data,\n config: { showCheckbox }\n } = this.props;\n\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(true);\n this.isTermsAccepted = true;\n } else if (showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(false);\n this.isTermsAccepted = false;\n }\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\n });\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\n return (\n \n {cancelBtnLabel}\n \n );\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\n return (\n \n {editBtnLabel}\n \n );\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Terms and conditions onEdit is called.');\n\n this.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\n\n if (!this.isTermsAccepted) {\n if (this.isAutoSave) {\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n } else {\n this.setError(this.props.resources.errorMessage);\n this.props.moduleState.setHasError(true);\n }\n } else {\n this.clearError();\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Terms and conditions onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\n if (!isTermsAccepted) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onChange = async (event: React.ChangeEvent) => {\n const checked = event.target.checked;\n this.isTermsAccepted = checked;\n\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\n }\n\n if (this.isAutoSave) {\n await this.onSubmit();\n }\n };\n}\n\nexport default CheckoutTermsAndConditions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
\n
{buttonText}
\n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Product specification table row.\r\n */\r\nexport interface IProductSpecificationTableRow {\r\n productName?: string;\r\n cellData?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Product specification table row component.\r\n * @param props - For product specification table row.\r\n * @param props.productName - Product name.\r\n * @param props.cellData - Cell data.\r\n * @param props.className - Class name.\r\n * @returns - Returns JSX element.\r\n */\r\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\r\n \r\n \r\n {/* eslint-disable-next-line react/no-danger */}\r\n \r\n \r\n {cellData}\r\n \r\n);\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IGdnProductSpecification contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum displayStyle {\r\n accordion = 'accordion',\r\n table = 'table'\r\n}\r\n\r\nexport interface IGdnProductSpecificationConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n displayStyle?: displayStyle;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface IGdnProductSpecificationResources {\r\n trueValueText: string;\r\n falseValueText: string;\r\n additionalDownloadsText: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IGdnProductSpecificationProps extends Msdyn365.IModule {\r\n resources: IGdnProductSpecificationResources;\r\n config: IGdnProductSpecificationConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '@msdyn365-commerce-modules/product-specification';\r\nimport { ProductSpecificationTableRow } from './components/gdn-product-specification-table-stucture';\r\nimport { IGdnProductSpecificationData } from './gdn-product-specification.data';\r\nimport { displayStyle, IGdnProductSpecificationProps } from './gdn-product-specification.props.autogenerated';\r\n\r\n/**\r\n * Maintain Drawer State.\r\n */\r\nexport interface IProductSpecificationState {\r\n isDrawerOpen: boolean;\r\n isAdditionalMediaDrawerOpen: boolean;\r\n drawerListId: number | undefined;\r\n}\r\n\r\n/**\r\n * Product specification view props.\r\n */\r\nexport interface IProductSpecificationViewProps extends IGdnProductSpecificationProps<{}> {\r\n ProductSpecification: IModuleProps;\r\n ProductSpecificationTableProps: INodeProps;\r\n ProductSpecificationTableBodyProps: INodeProps;\r\n productSpecificationResult?: (JSX.Element | null)[];\r\n\r\n title?: React.ReactNode;\r\n isAccrodion?: boolean;\r\n handleText?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\n/**\r\n * Check for display style either accordion or table.\r\n */\r\nexport interface IProductSpecificationExtentedProps extends IGdnProductSpecificationProps {\r\n displayStyle?: displayStyle;\r\n}\r\n\r\n/**\r\n *\r\n * ProductSpecification component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass ProductSpecification extends React.Component {\r\n public constructor(props: IProductSpecificationExtentedProps) {\r\n super(props);\r\n this.state = {\r\n isDrawerOpen: false,\r\n isAdditionalMediaDrawerOpen: false,\r\n drawerListId: undefined\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const { context, data, telemetry } = this.props;\r\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\r\n validateCatalogId(catalogId);\r\n reaction(\r\n () => (data.product.result ? data.product.result.RecordId : null),\r\n () => {\r\n if (context && data.product.result) {\r\n const actionInput = new AttributesForSelectedVariantInput(\r\n data.product.result.RecordId,\r\n\r\n +context.actionContext.requestContext.apiSettings.channelId,\r\n data.product.result,\r\n catalogId\r\n );\r\n\r\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to update attributes for Product');\r\n telemetry.error(error.message);\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n let data: IGdnProductSpecificationData;\r\n try {\r\n data = this.props.data;\r\n } catch (error) {\r\n this.props.telemetry.error(`Something went wrong ------${error}`);\r\n return
{error}
;\r\n }\r\n\r\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\r\n this.props.telemetry.error('Product specification content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const { heading, className } = this.props.config;\r\n const { productSpecificationData } = this.props.data;\r\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\r\n const viewProps = {\r\n ...this.props,\r\n handleText: this.handleHeadingChange,\r\n ProductSpecification: {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification', className)\r\n },\r\n ProductSpecificationTableProps: isAccrodion\r\n ? {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification__accordion', className)\r\n }\r\n : {\r\n className: classnames('ms-product-specification__table table-striped table-bordered'),\r\n tag: 'table'\r\n },\r\n isAccrodion,\r\n ProductSpecificationTableBodyProps: isAccrodion\r\n ? {}\r\n : {\r\n className: '',\r\n tag: 'tbody'\r\n },\r\n title: heading?.text && (\r\n \r\n ),\r\n productSpecificationResult:\r\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\r\n } as IProductSpecificationViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle Heading Text Change.\r\n * @param event - Current event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n private _createTableBody(content: IGdnProductSpecificationData): (JSX.Element | null)[] {\r\n // if there's more than 1 'Description', make the first instance 'Product Name'\r\n const descriptionCount = content.productSpecificationData.result!.filter(product => product.Name === 'Description').length;\r\n let isFirstDescription = true;\r\n\r\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\r\n let productName = product.Name;\r\n if (productName === 'Description' && descriptionCount > 1 && isFirstDescription) {\r\n productName = 'Product name';\r\n isFirstDescription = false;\r\n }\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n\r\n if (!cellData || product.Name === 'Staff favorites' || product.Name === 'Customer favorites' || product.Name === 'New') {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n });\r\n\r\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\r\n tableRows.push(this._createAdditionalMediaDrawer());\r\n }\r\n\r\n return tableRows;\r\n }\r\n\r\n private _createDrawerBody(content: IGdnProductSpecificationData): (JSX.Element | null)[] {\r\n const accordionItemContainer: IModuleProps = {\r\n moduleProps: this.props,\r\n className: 'ms-product-specification-title'\r\n };\r\n\r\n const drawers = content.productSpecificationData.result!.map(product => {\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n if (!cellData) {\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n
{cellData}
\r\n \r\n
\r\n );\r\n });\r\n\r\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\r\n drawers.push(this._createAdditionalMediaDrawer());\r\n }\r\n\r\n return drawers;\r\n }\r\n private _createAdditionalMediaDrawer(): JSX.Element {\r\n const accordionItemContainer: IModuleProps = {\r\n moduleProps: this.props,\r\n className: 'ms-product-specification-title'\r\n };\r\n\r\n return (\r\n \r\n {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\r\n }));\r\n }}\r\n >\r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\r\n if (this.state.drawerListId !== drawerListId) {\r\n this.setState({ drawerListId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\r\n switch (product.DataTypeValue) {\r\n case 0: // None\r\n // Return span here instead of null so the row still shows\r\n return ;\r\n case 1: // Currency\r\n return this._renderCurrencyCell(product);\r\n case 2: // DateTime\r\n return this._renderDateTimeCell(product);\r\n case 3: // Decimal\r\n return this._renderDecimalCell(product);\r\n case 4: // Integer\r\n return this._renderIntegerCell(product);\r\n case 5: // Text\r\n return this._renderTextCell(product);\r\n case 6: // TrueFalse\r\n return this._renderTrueFalseCell(product);\r\n case 40: // Video\r\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\r\n return null;\r\n case 41: // Image\r\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\r\n return null;\r\n default:\r\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\r\n return null;\r\n }\r\n }\r\n\r\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\r\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\r\n return (\r\n \r\n {product.CurrencyCode}\r\n {product.CurrencyValue}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\r\n if (product.DateTimeOffsetValue?.toUTCString) {\r\n return {product.DateTimeOffsetValue.toUTCString()};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\r\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\r\n return {product.IntegerValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\r\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\r\n return {product.FloatValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\r\n if (product.TextValue !== null && product.TextValue !== undefined) {\r\n // eslint-disable-next-line react/no-danger\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\r\n // TODO 20369885 setting to default value is needed to work around a platform bug where\r\n // config string value does not get its default value.\r\n if (product.BooleanValue) {\r\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\r\n }\r\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\r\n }\r\n}\r\n\r\nexport default ProductSpecification;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from './gdn-product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n const rowdata =\r\n productSpecificationResult &&\r\n ArrayExtensions.hasElements(productSpecificationResult) &&\r\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\r\n\r\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n \r\n {props.title}\r\n \r\n {rowdata}\r\n \r\n \r\n ) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address';\r\nimport {\r\n ICheckoutShippingAddressConfig,\r\n ICheckoutShippingAddressProps\r\n} from '../definition-extensions/checkout-shipping-address.ext.props.autogenerated';\r\n// import AdressDropdownComponent from './address-dropdown';\r\n\r\ninterface IAddressAddUpdateExtProps extends IAddressAddUpdateProps {\r\n shipUsaOnlyMessageText: string;\r\n allowInternationalShipping: boolean;\r\n}\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n shipUsaOnlyMessageText,\r\n allowInternationalShipping\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {!allowInternationalShipping && renderDeliveryLimitationMessage(shipUsaOnlyMessageText)}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n // if the address item is the country input, do not render.\r\n if (!allowInternationalShipping) {\r\n if (key === 'ThreeLetterISORegionName') return <>;\r\n } else {\r\n // filter to only USA and Canada\r\n if (key === 'ThreeLetterISORegionName') {\r\n if (React.isValidElement(input)) {\r\n const filteredCountries = [\r\n { key: 'CAN', value: 'Canada' },\r\n { key: 'USA', value: 'United States' }\r\n ];\r\n const clonedInput = React.cloneElement(input, { ...input.props, displayData: filteredCountries });\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {clonedInput}\r\n \r\n );\r\n }\r\n }\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst renderDeliveryLimitationMessage = (shipUsaOnlyMessageText: string) => (\r\n
\r\n
\r\n \r\n {shipUsaOnlyMessageText}\r\n
\r\n
\r\n);\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC> = props => {\r\n const {\r\n CheckoutShippingAddress,\r\n checkoutErrorRef,\r\n alert,\r\n viewState,\r\n showAddress,\r\n showAddressSelect,\r\n showAddOrUpdateAddress,\r\n cartLineImages,\r\n resources,\r\n config\r\n } = props;\r\n\r\n return (\r\n \r\n {alert}\r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount\r\n // channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {/* {channelReferenceId} */}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\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 { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-add';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-select';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-show';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/./checkout-shipping-address';\r\nimport GetProductEligibilityAction, {\r\n GetProductEligibilityInput\r\n} from \"../../../actions/get-product-eligibility.action\";\r\nimport { CommercePropertyValueEnum } from \"../../../modules/allowable-freight/utils/CommercePropertyValueEnum\";\r\nimport { CommerceProperty } from \"@msdyn365-commerce/retail-proxy\";\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n {item.input}\r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n const address = props.data.checkout.result?.shippingAddress;\r\n const [ nonEligibleItems, setnonEligibleItems ] = React.useState([]);\r\n React.useEffect(() => {\r\n void checkEligibilityForShippingAddress();\r\n }, [address])\r\n React.useEffect(() => {\r\n props.moduleState.setHasError(true);\r\n }, [])\r\n\r\n const _getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n\r\n const checkEligibilityForShippingAddress = async () => {\r\n const notEligibleList: string[] = [];\r\n const cart = props.data.checkout.result?.checkoutCart?.cart;\r\n if (cart && address) {\r\n const itemIds = cart.CartLines?.map(cl => cl.ItemId!) || [];\r\n const addressCountry = address.ThreeLetterISORegionName || null;\r\n const addressState = address.State || null;\r\n const addressRegion = address.County || null;\r\n const input = new GetProductEligibilityInput(itemIds, true, cart.Id || '', addressCountry, addressState, addressRegion);\r\n const eligibilityData = await GetProductEligibilityAction(input, props.context.actionContext);\r\n if (eligibilityData.length) {\r\n eligibilityData.forEach((i: any) => {\r\n const id = _getExtensionPropertyValueByKey(i.ExtensionProperties, 'ItemId', CommercePropertyValueEnum.string);\r\n if (!i.IsEligible) {\r\n notEligibleList.push(id as string);\r\n }\r\n });\r\n }\r\n }\r\n setnonEligibleItems(notEligibleList);\r\n props.moduleState.setHasError(notEligibleList.length > 0);\r\n }\r\n\r\n const renderCartError = () => {\r\n if (!nonEligibleItems.length) {\r\n return null;\r\n }\r\n return (\r\n
\r\n

\r\n The following items are not eligible for your current shipping address. Please remove them from the cart or change your address:\r\n

\r\n {nonEligibleItems.map(i => {\r\n const item = getCartLineFromItemId(i);\r\n return

{item?.ItemId} - {item?.Description}

\r\n })}\r\n \r\n
\r\n )\r\n }\r\n\r\n const removeIneligibleItems = async () => {\r\n const cartState = props.data.cart.result;\r\n const checkoutState = props.data.checkout.result;\r\n const badCartLines: string[] = [];\r\n cartState!.cart.CartLines!.forEach(cl => {\r\n if (nonEligibleItems.includes(cl.ItemId!)) {\r\n badCartLines.push(cl.LineId!);\r\n }\r\n })\r\n await checkoutState!.checkoutCart.removeCartLines({cartLineIds: badCartLines});\r\n await cartState!.removeCartLines({cartLineIds: badCartLines});\r\n window.location.reload();\r\n }\r\n\r\n const getCartLineFromItemId = (itemId: string) => props.data.checkout.result?.checkoutCart.cart.CartLines?.find(i => i.ItemId === itemId)\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n {renderCartError()}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\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, IAccountPaymentEditViewForm, IAccountPaymentSummaryViewForm } from './index';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n paymentAmount,\n addPaymentButton,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {label}\n {paymentAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutPickupGroupViewProps, ICheckoutPickupViewProps } from './index';\n\nconst CheckoutPickupView: React.FC = props => {\n const { checkoutPickup, checkoutErrorRef, viewState, headerError, waiting, pickupGroups } = props;\n\n return (\n \n {viewState.isLoading && waiting}\n {viewState.isHeaderError && headerError}\n {pickupGroups.map(\n (pickupGroupViewProps: ICheckoutPickupGroupViewProps, index: number): React.ReactElement => {\n const {\n pickupGroupContainer,\n dateTimeslotContainer,\n groupDivider,\n groupHeader,\n groupErrorMessage,\n cartLineImages,\n pickupDateDropdown,\n pickupTimeslotDropdown,\n selectedDateTimeslot,\n pickupAddress\n } = pickupGroupViewProps;\n\n return (\n \n {groupDivider}\n {groupHeader}\n {groupErrorMessage}\n {cartLineImages}\n {viewState.isShowDropdown && (\n \n {pickupDateDropdown}\n {pickupTimeslotDropdown}\n \n )}\n {viewState.isShowSelected && pickupAddress}\n {viewState.isShowSelected && selectedDateTimeslot}\n \n );\n }\n )}\n \n );\n};\n\nexport default CheckoutPickupView;\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 ICheckoutTermsAndConditions,\n ICheckoutTermsAndConditionsError,\n ICheckoutTermsAndConditionsViewProps\n} from './checkout-terms-and-conditions';\n\nconst TermsAndCondition: React.FC = ({ termsAndConditionAcceptance, checkBox, description }) => {\n return (\n \n {checkBox}\n {description}\n \n );\n};\n\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\n return (\n \n {title}\n {message}\n \n );\n};\n\nconst CheckoutTermsAndConditionsView: React.FC = props => {\n const {\n checkoutTermsAndConditions,\n checkoutErrorRef,\n viewState,\n termsAndConditionsContent,\n errorMessage,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isError && errorMessage && }\n \n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutTermsAndConditionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport {\n CheckoutModule,\n ErrorCode,\n ErrorLocation,\n ErrorMessageResource,\n getCheckoutState,\n ICheckoutError,\n ICheckoutState\n} from '@msdyn365-commerce/global-state/';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- create global class\nexport class CheckoutErrors {\n public static readonly ActionError: ICheckoutError = {\n errorCode: ErrorCode.ActionError,\n errorMessageResource: ErrorMessageResource.checkoutTimeoutErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n errorMessageResource: ErrorMessageResource.blockedLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n errorMessageResource: ErrorMessageResource.customerAccountLimitSignDifferentFromAmountDueErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsAvailableCreditLimitErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_FraudRisk: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n errorMessageResource: ErrorMessageResource.fraudRiskErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n errorMessageResource: ErrorMessageResource.giftCardBalanceInquiryFailedErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n errorMessageResource: ErrorMessageResource.giftCardCurrencyMismatchErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n errorMessageResource: ErrorMessageResource.invalidCartVersionErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n errorMessageResource: ErrorMessageResource.invalidLoyaltyCardNumberErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n errorMessageResource: ErrorMessageResource.missingRequiredCartTenderLinesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n errorMessageResource: ErrorMessageResource.multipleCustomerAccountPaymentsNotAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n errorMessageResource: ErrorMessageResource.noMoreThanOneLoyaltyTenderErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n errorMessageResource: ErrorMessageResource.noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n errorMessageResource: ErrorMessageResource.noTenderLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n errorMessageResource: ErrorMessageResource.notEnoughRewardPointsErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n errorMessageResource: ErrorMessageResource.paymentAlreadyVoidedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n errorMessageResource: ErrorMessageResource.paymentAmountExceedsGiftBalanceErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n errorMessageResource: ErrorMessageResource.paymentUsingUnauthorizedAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n errorMessageResource: ErrorMessageResource.refundAmountMoreThanAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n errorMessageResource: ErrorMessageResource.unableToCancelPaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n errorMessageResource: ErrorMessageResource.unableToReadCardTokenInfoErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult,\n errorMessageResource: ErrorMessageResource.unableToRetrieveCardPaymentAcceptResultErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly checkoutErrorsList: ICheckoutError[] = [\n CheckoutErrors.ActionError,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult\n ];\n}\n\nexport async function setCheckoutErrors(\n errorCode: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n resources: any,\n isExpressCheckoutApplied: boolean,\n ctx: IActionContext,\n apiError?: string | undefined\n): Promise {\n let clientCheckoutError: ICheckoutError | undefined;\n const consoleCheckoutErrors: ICheckoutError[] = [];\n\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n // find the checkout errors\n for (const checkoutError of CheckoutErrors.checkoutErrorsList) {\n if (errorCode === checkoutError.errorCode) {\n if (checkoutError.errorLocation === ErrorLocation.Console) {\n const consoleCheckoutError: ICheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n consoleCheckoutErrors.push(consoleCheckoutError);\n } else {\n if (clientCheckoutError) {\n ctx.telemetry.exception(new Error('Invalid number of client checkout errors.'));\n throw new Error('Invalid number of client checkout errors.');\n } else {\n clientCheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n }\n }\n }\n }\n\n // log the console checkout errors\n for (const consoleCheckoutError of consoleCheckoutErrors) {\n consoleCheckoutError.errorMessage = getCheckoutErrorMessage(resources, consoleCheckoutError.errorMessageResource!, apiError!);\n console.log(consoleCheckoutError.errorMessage);\n }\n\n // handle the client checkout error\n if (clientCheckoutError) {\n clientCheckoutError.errorMessage = getCheckoutErrorMessage(resources, clientCheckoutError.errorMessageResource!, apiError!);\n\n if (isExpressCheckoutApplied && clientCheckoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument) {\n clientCheckoutError.errorLocation = ErrorLocation.Checkout;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: clientCheckoutError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n } else {\n // if could not map to any checkout error(s), show the API error message over generic error\n if (consoleCheckoutErrors.length === 0) {\n const genericError = {\n errorLocation: ErrorLocation.Checkout\n };\n if (apiError) {\n genericError['errorMessage'] = apiError;\n } else {\n genericError['errorMessage'] = resources.genericErrorMessage;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: genericError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n }\n }\n}\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: false });\n}\n\nexport async function setCheckoutErrorFocus(checkoutModuleId: string, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n for (const checkoutModule of Object.keys(CheckoutModule)) {\n if (checkoutModuleId.includes(CheckoutModule[checkoutModule])) {\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule[checkoutModule] });\n return;\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getCheckoutErrorMessage(resources: any, errorMessageResource: ErrorMessageResource, errorMessageFromAPI: string): string {\n const errorResource = Object.keys(resources).find(resource => resource === errorMessageResource);\n // return API error when error resource string is not found in checkout definition file\n return errorResource !== undefined ? resources[errorResource] : errorMessageFromAPI;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, Note, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n @observable private _customerReference: string = '';\n @observable private _customerRequisition: string = '';\n @observable private _note: Note = {};\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @computed public get customerReference(): Readonly | string {\n return this._customerReference;\n }\n\n @computed public get customerRequisition(): Readonly | string {\n return this._customerRequisition;\n }\n\n @computed public get note(): Readonly | Note[] {\n return this._note;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(\n newGuestCheckoutEmail: string,\n customerReference: string,\n customerRequisition: string,\n note: Note\n ): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n this._customerReference = customerReference;\n this._customerRequisition = customerRequisition;\n this._note = note;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\n /**\n *\n * ModuleState component.\n * @extends {React.Component

}\n */\n @observer\n class ModuleState extends React.Component

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * EnabledPaymentsForOBO enum.\n */\n export enum EnabledPaymentsForOBO {\n OnCustomerAccount = 1,\n ExpressPayment = 0,\n Loyalty = 0,\n GiftCard = 0,\n PaymentInstrument = 0,\n ApplePay = 0\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

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

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\n"],"names":["SignUpText","props","React","className","text","LoyaltySignUp","constructor","super","handleHeadingChange","event","this","config","heading","target","value","handleMemberHeadingChange","memberHeading","_issueLoyalty","context","request","user","isAuthenticated","state","clicked","setState","input","IssueLoyaltyInput","apiSettings","issueLoyalty","actionContext","then","MsDyn365","isBrowser","window","location","assign","Msdyn365","catch","error","telemetry","message","debug","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","TelemetryConstant","SignIn","loyaltySignInAttributes","getTelemetryAttributes","contentAction","etext","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","shouldComponentUpdate","nextProps","nextState","data","render","_data$customerInforma","_this$props$context$a","resources","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","result","undefined","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","viewProps","_objectSpread","moduleProps","infoMessageBar","accountProcessingPendingInfoMessage","loading","params","isEditor","status","tag","editProps","onEdit","requestContext","signInLink","Button","Object","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","onClick","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","renderView","__decorate","observer","Module","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","checked","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","modal","CardNumber","LoyaltyTermsModal","returnRef","isOpen","terms","onToggle","onSubmit","onCheck","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","Node","modalHeader","modalBody","agreeSection","checkbox","agreeText","modalFooter","submitButton","cancelButton","componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","currentViewModeState","onClickHandler","newViewModeState","viewModeDetailedViewAttributes","ViewMode","viewModeListViewAttributes","classnames","DetailedView","detailedViewOptionAriaLabel","title","role","ListView","listViewOptionAriaLabel","ProductSpecification","drawerListId","isDrawerOpen","isAdditionalMediaDrawerOpen","async","catalogId","validateCatalogId","reaction","product","RecordId","actionInput","AttributesForSelectedVariantInput","channelId","getAttributesForSelectedVariant","_heading$tag","productSpecificationData","length","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","_createDrawerBody","_createTableBody","content","_this$props$context$r","_this$props$data$addi","tableRows","map","index","cellData","_renderProductCell","ProductSpecificationTableRow","key","productName","Name","OmniChannelMedia","additionalMediaLocations","push","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Drawer","collapseProps","timeout","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","additionalDownloadsText","prevState","mediaLocation","Uri","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","dangerouslySetInnerHTML","BooleanValue","trueValueText","falseValueText","rowdata","ArrayExtensions","hasElements","filter","row","ObjectExtensions","isNullOrUndefined","onAddAccountPayment","onAddPayment","preventDefault","onChangeAmountHandler","customizedAmt","paymentAmount","amountVariable","locale","onChangePaymentAmount","customState","customizedAmount","returnModifiedState","getLocaleBasedCustomizedPrice","keyCode","getAccountPaymentFormEditMode","options","amount","maxAmount","customer","customerCreatedDate","availableCredit","showCreditLimit","errorMessage","onToggleCreditSection","creditSectionIsExpanded","orderTotal","excessCredit","onRemovePayment","appliedAmount","skipOnChangeLogic","addPaymentButtonLabel","inputAmountLabel","inputAmountAriaLabel","customerSinceLabel","accountCreditLabel","creditDetailsSectionLabel","orderTotalLabel","availableCreditLabel","creditExcessLabel","appliedCustomerAccountPaymentLabel","removeCustomerAccountPaymentLabel","accountCreditDetails","inputLabel","id","formProps","addPaymentButton","Number","isNaN","inputAmount","type","onInput","_ref","currentTarget","onKeyDown","which","min","max","customerName","customerAccountNumber","AccountNumber","customerSince","accountCredit","accountDetails","alert","Alert","assertive","fade","includeAlertClass","appliedLine","bottomBorder","getAccountPaymentFormSummaryMode","inputAmountSummaryLabel","label","paymentAmountInput","CheckoutCustomerAccountPayment","defaultLocale","baseClassName","checkoutErrorRef","getAvailableCredit","creditBalances","InvoiceAccountCreditLimit","CreditLimit","Balance","PendingBalance","InvoiceAccountBalance","InvoiceAccountPendingBalance","addPayment","checkoutState","checkout","handleSaveAndContinue","_clearError","updateCustomerAccountAmount","newAmount","information","toggleCreditSection","isCreditSectionExpanded","init","moduleState","onCancel","handleCancelOrSubmit","customerAccountAmount","onReady","updateMaxAmount","Math","toString","onUpdating","checkoutCart","cart","TotalAmount","_setErrorMessage","invalidAmountForOBOMessage","isCheckoutCustomerAccountPaymentRequired","customerAccountCreditErrorMessage","onSkip","removePayment","NaN","setHasError","get","maxPaymentAmount","Intl","NumberFormat","format","isCustomerAccountPaymentEnabled","customerInfo","b2bChannel","isChannelTypeB2B","platform","AllowOnAccountPayment","enableCustomerAccountPayment","getLoyaltyAmount","loyaltyAmount","_this$props$data$cust","amountDue","_this$props$data$cred","MandatoryCreditLimit","invalidAmountExceedAmountDueMessage","invalidAmountNegativeMessage","currencyCode","formattedExcessCredit","cultureFormatter","formatCurrency","isDataReady","_this$props$data$chec","when","totalAmount","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec2","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec3","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","_this$props$data$cust2","hasInvoiceLine","customerSinceDate","Date","CreatedDateTime","toLocaleDateString","hasError","checkoutCustomerAccount","ErrorComponent","errorMessageTitle","editView","features","skipCheckoutOnChangeLogic","summaryView","computed","action","withModuleState","PickupTimeslotAvailabilityState","CheckoutPickupError","CheckoutPickupGroupHeader","_ref2","moduleClassName","storeInfo","items","CheckoutPickupTimeslotInfo","_ref3","CheckoutPickupAddress","_ref4","address","Street","City","State","County","ZipCode","ThreeLetterISORegionName","CheckoutPickupCartLines","_ref5","cartLines","prop","showQty","quantity","lineId","Image","imageProps","DefaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","quality","getDate","date","DateTimeFormat","timeZone","getTimeslot","placeHolder","startDate","endDate","useHour12TimeFormat","hour","minute","hour12","formatter","getUTCDateWithoutTime","UTC","getUTCFullYear","getUTCMonth","getUTCDate","CheckoutPickupDateDropdown","defaultKey","updateDateSelection","notification","pickupStoreId","deliveryMode","setDateHandler","selectedOption","getDateMap","has","mapDatesToOptions","dates","selectedDate","defaultOption","unshift","findIndex","getTime","dropdownOptions","defaultText","Map","availableDates","forEach","set","labelClassname","labelText","dropdownId","controlledByParent","toggleColor","dropdownClassname","htmlFor","LabeledDropdown","onSelectOption","CheckoutPickupTimeslotDropdown","updateTimeslotSelection","setTimeslotHandler","getTimeslotMap","mapTimeslotsToOptions","timeslots","selectedTimeslot","timeslotPlaceHolder","StartDateTime","EndDateTime","_selectedTimeslot$Sta","_value$StartDateTime","_selectedTimeslot$End","_value$EndDateTime","availableTimeslots","CheckoutPickup","_this","isLoading","initModuleState","canPickup","isPickupTimeSlotSet","onPending","updateCartLinePickupDateTimeslot","setError","isHeaderError","arguments","headerErrorMessage","clearError","initPickupGroup","_this$props","_featureState$result","pickupCartLines","getCartLinesforPickup","products","getProductsByCartLines","ChannelId","pickupGroups","locations","orgUnitLocations","featureState","deliveryOptions","retailMultiplePickUpOptionEnabled","find","feature","IsEnabled","line","group","x","FulfillmentStoreId","DeliveryMode","ProductId","lineDeliverySpecification","LineId","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","PickUpStoreId","PickupTimeslotStartDateTime","PickupTimeslotEndDateTime","DeliveryAddress","ShippingAddress","lineDeliverySpecs","cartLine","OrgUnitNumber","storeName","getStoreName","newGroup","pickupModeName","getPickupModeDescription","generalPickupText","pickupAddress","availabilityState","None","dailyGroupingResults","searchCriteria","DeliveryModeCode","StoreId","SearchOptionValue","getEstimatedPickupTimeslotAvailabilitiesAsync","queryResultSettings","getPickupTimeslotAvailabilityState","NotAvailable","groupErrorMessage","noAvailableDateError","AvailableCapacity","timeslotResults","StartDate","EndDate","bypassCache","filteredPickupGroups","Available","validateTimeslot","lineSpecs","concat","lineDeliverySpecifications","genericErrorMessage","setIsCancellable","_unused","productInputs","ProductInput","getSimpleProducts","validationResult","dateErrorMessage","timeslotErrorMessage","pickupDateRequired","pickupTimeslotRequired","pickupDateTimeslotRequired","NotDefined","orgUnitLocation","_cartLine$ShippingAdd","OrgUnitName","every","_group$selectedTimesl","_group$selectedTimesl2","CartLines","isPickupLine","isPickupMode","_this$props2","_featureState$result2","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","channelDeliveryOptionConfig","_channelDeliveryOptio","pickupDeliveryMode","PickupDeliveryModeCodes","includes","isNullOrWhiteSpace","resourceString","deliveryOption","_foundProductDelivery","_foundProductDelivery2","foundProductDeliveryOption","deliveryO","deliveryDesc","DeliveryOptions","option","Code","Description","dailyResult","_countItems","cartlines","reduce","count","componentDidMount","_this$props$data$chec4","_this$props$data$chec5","pickupDateLabel","pickupTimeslotLabel","pickupDateDefaultText","pickupTimeslotDefaultText","itemsText","singleItemText","pickupDateTimeslotText","pickupTimeslotPlaceHolder","pickupLocationLabel","imageSettings","defaultClassName","groupsViewProps","_value$selectedTimesl","_value$selectedTimesl2","groupDivider","_line$product","_line$product2","_line$product3","_context$request$app","altText","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","gridSettings","loadFailureBehavior","Quantity","numberOfCartLines","itemText","itemTitle","headerProps","groupHeader","lineImageProps","cartLineImages","dateString","timeslotString","timeslotInfoProps","selectedDateTimeslotNode","addressProps","dropdownClassName","labelClassName","dropdownSelectClassName","dateDropdownNode","timeslotDropdownNode","viewProp","pickupGroupContainer","dateTimeslotContainer","pickupDateDropdown","pickupTimeslotDropdown","selectedDateTimeslot","isReady","isShowDropdown","isShowSelected","checkoutPickup","viewState","headerError","waiting","Waiting","pickupDate","oldGroup","lineSpec","noAvailableTimeslotError","groups","pickupTimeslot","observable","isChecked","ariaLabel","onChange","attribute","name","CheckoutTermsAndConditions","isTermsAccepted","handleTextChange","description","getTermsAndConditions","showCheckbox","isDisabled","isAutoSave","isTermsAndConditionAccepted","checkboxAriaLabel","termsAndConditionAcceptance","checkBox","CheckboxComponent","_data$checkout$result","updateTermsAndConditionsAcceptance","isPaymentVerificationRedirection","getErrorMessage","ErrorTitleComponent","ErrorMessageComponent","getCancelButton","cancelBtnLabel","cancelBtnAriaLabel","color","getSaveButton","saveBtnLabel","saveBtnAriaLabel","getEditButton","editBtnLabel","editBtnAriaLabel","newIsTermsAndConditionAccepted","shouldEnableSinglePaymentAuthorizationCheckout","updateIsTermsAndConditionsChecked","newIsTermsAndConditionChecked","isShowButtons","showControlButtons","hasExternalSubmitGroup","defaultTermsAndConditionAcceptedValue","_this$props$data$chec6","_this$props$data$chec7","_this$props$data$chec8","isError","isShowContent","errorMessageData","isShowSaveButton","isShowEditButton","isShowCancelButton","checkoutTermsAndConditions","termsAndConditionsContent","saveButton","editButton","onSave","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","attributes","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","link","linkText","editableLink","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","links","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","ref","AlertProps","Content","acceptButton","setConsentCookie","reload","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","item","ProductComparisonItem","ProductComparisonState","instance","accountInformation","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","static","productComparisonPreview","buttonText","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","scope","getRichTextHtml","HeadingTag","accordion","descriptionCount","isFirstDescription","AddressShow","AddressDetail","AddressSelect","SelectAddress","addButton","SelectItem","showItems","AddressAddUpdate","AddressForm","shipUsaOnlyMessageText","allowInternationalShipping","renderDeliveryLimitationMessage","AddressItem","filteredCountries","clonedInput","displayData","AddressError","CheckoutShippingAddress","showAddress","showAddressSelect","showAddOrUpdateAddress","isShowAddress","isShowAddresList","isShowAddOrUpdateAddress","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","_props$config$thumbna2","tabIndex","thumbnailImageSettings","defaultThumbnailImageSettings","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","image","imageId","modifiedActiveIndex","_props$config$thumbna","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","KeyCodes","Enter","fullScreenTitleText","CarouselProps","MediaGallery","Modal","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","OrderHistoryGroupDelivery","deliveryProps","processing","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","OrderHistoryGroups","groupsProps","OrderHistoryHeader","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","header","emptyMessage","backToShoppingLink","list","table","moreButton","_props$data$checkout$","shippingAddress","nonEligibleItems","setnonEligibleItems","checkEligibilityForShippingAddress","_props$data$checkout$2","notEligibleList","_cart$CartLines","itemIds","cl","addressCountry","addressState","addressRegion","GetProductEligibilityInput","Id","eligibilityData","GetProductEligibilityAction","i","_getExtensionPropertyValueByKey","properties","valueType","_properties$find","property","p","Key","Value","ExtensionProperties","CommercePropertyValueEnum","string","IsEligible","removeIneligibleItems","cartState","badCartLines","removeCartLines","cartLineIds","getCartLineFromItemId","itemId","_props$data$checkout$3","channelReferenceId","SummaryForm","EditForm","pickupGroupViewProps","TermsAndCondition","ErrorMessage","renderCustomerName","FirstName","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","promotionalImage","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","sm","md","_categoryImage$imageS","ImageData","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","document","body","addEventListener","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","colProps","toggleButtonProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","round","_renderMenu","onFocus","hoverEffect","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","ProductComparisonButtonViewFunctionalComponent","CheckoutErrors","setCheckoutErrors","errorCode","isExpressCheckoutApplied","ctx","apiError","clientCheckoutError","consoleCheckoutErrors","getCheckoutState","exception","checkoutErrorsList","Console","consoleCheckoutError","errorMessageResource","Error","getCheckoutErrorMessage","console","log","CheckoutPaymentInstrument","Checkout","updateCheckoutError","newCheckoutError","updateShouldFocusOnCheckoutError","newShouldFocusOnCheckoutError","genericError","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","setCheckoutErrorFocus","checkoutModuleId","checkoutModule","errorMessageFromAPI","errorResource","resource","ActionError","ErrorCode","ErrorMessageResource","checkoutTimeoutErrorMessage","Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard","blockedLoyaltyCardErrorMessage","CheckoutLoyalty","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue","customerAccountLimitSignDifferentFromAmountDueErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit","customerAccountPaymentExceedsAvailableCreditLimitErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit","customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems","customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount","customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices","customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_FraudRisk","fraudRiskErrorMessage","Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed","giftCardBalanceInquiryFailedErrorMessage","CheckoutGiftCard","Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch","giftCardCurrencyMismatchErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion","invalidCartVersionErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber","invalidLoyaltyCardNumberErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest","invalidPaymentRequestErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console","invalidPaymentRequestConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines","missingRequiredCartTenderLinesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed","multipleCustomerAccountPaymentsNotAllowedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender","noMoreThanOneLoyaltyTenderErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry","noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard","noTenderLoyaltyCardErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints","notEnoughRewardPointsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided","paymentAlreadyVoidedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance","paymentAmountExceedsGiftBalanceErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties","paymentRequiresMerchantPropertiesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console","paymentRequiresMerchantPropertiesConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount","paymentUsingUnauthorizedAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed","refundAmountMoreThanAllowedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment","unableToAuthorizePaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired","unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported","unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment","unableToCancelPaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo","unableToReadCardTokenInfoErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult","unableToRetrieveCardPaymentAcceptResultErrorMessage","CheckoutStateInput","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","createObservableDataAction","CheckoutState","inputData","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_customerReference","_customerRequisition","_note","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","prototype","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateShippingAddress","newShippingAddress","updateBillingAddress","newBillingAddress","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","giftCard","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","customerReference","customerRequisition","note","WrappedComponent","_super","ModuleState","initializeState","_b","typeName","states","getModuleStates","updateModuleStates","__assign","_a","hasInitialized","isRequired","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isUpdating","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsSubmitContainer","onDisable","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","moduleStates","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","childId","_isPaymentSectionContainer","enableControl","__extends","ModuleStatesCacheKey","cacheKey","EnabledPaymentsForOBO","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","toggle","applicationNode","returnFocusRef","ModalHeader","ModalFooter","ModalBody","cancelLoyaltyTermsText","joinLoyaltyTermsText","loyaltyTermsHeading","loyaltyAgreeToTerms"],"sourceRoot":""}