{"version":3,"file":"static/js/19.a40bb6a45fe40b6fccf8.chunk.js","mappings":"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C,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,2DCtPR,MAEa7jB,EAA0BA,CAAC8jB,EAA+BC,KACnE,MAEMC,EAAqBA,KACvB,MAAMC,EAHiBH,CAAAA,GAAkCA,EAAcn9B,IAHpD,YAMIu9B,CAAkBJ,GAAepyC,MAExD,OADuBuyC,EAAiBA,EAAe/sC,MAAM,KAAK6P,KAAI4N,GAAWA,EAAQwvB,SAAU,IAC7EC,OAAOL,IAIjC,MAAO,CACHC,mBAAAA,EACAjkB,iBAHsBskB,GAAiCL,IAAqB3sC,SAASgtC","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?0588","webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?f114","webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/account-wishlist-tile.tsx?b721","webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/account-wishlist-tile.view.tsx?095e","webpack://venchi-ecommerce-msdyn365/./src/modules/aad-generic/aad-generic.tsx?c076","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance/account-customer-balance.tsx?8d5a","webpack://venchi-ecommerce-msdyn365/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/address-autosuggest.ts?d373","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/actions/get-state-provinces.ts?4008","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/address-common.ts?f4cc","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/address-format.data.ts?1ce5","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/address-module.data.ts?c633","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/address-format.ts?b9ef","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/address-meta-data.ts?e0f3","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-alert.tsx?99d1","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-button.tsx?55d4","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-checkbox.tsx?0721","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-dropdown.tsx?6e8b","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-error-message.tsx?a335","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-error-title.tsx?227d","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-input.tsx?713c","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-label.tsx?597f","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-add.tsx?eb99","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-detail-item.tsx?6cc8","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-show.tsx?8659","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/common/components/address-select.tsx?bbe0","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.tsx?35a0","webpack://venchi-ecommerce-msdyn365/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.view.tsx?774b","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/content-block.view.tsx?0a66","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/order-template-list.view.tsx?f44e","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/definition-extensions/video-player.ext.props.autogenerated.ts?fe23","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/video-player.view.tsx?a1ba","webpack://venchi-ecommerce-msdyn365/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance/account-customer-balance.view.tsx?70d2","webpack://venchi-ecommerce-msdyn365/./src/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.tsx?79c6","webpack://venchi-ecommerce-msdyn365/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://venchi-ecommerce-msdyn365/../../src/checkout-state-data-action.ts?8344","webpack://venchi-ecommerce-msdyn365/../../src/checkout-state.ts?acd8","webpack://venchi-ecommerce-msdyn365/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://venchi-ecommerce-msdyn365/../../../src/module-state-manager/module-state.ts?7579","webpack://venchi-ecommerce-msdyn365/../../src/checkout-utilities.data.ts?b2cc","webpack://venchi-ecommerce-msdyn365/./src/common/error.tsx?096f","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance/components/account-actions.tsx?e021","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance/components/account-statement-request-modal.tsx?18c0","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance/components/index.tsx?fba9","webpack://venchi-ecommerce-msdyn365/./src/common/waiting.tsx?8095","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://venchi-ecommerce-msdyn365/./src/services/featureToggleService.ts?d980"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountWishlistTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-wishlist-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountWishlistTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component.\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = ((wishlists && wishlists.length && wishlists[0].CommerceListLines) || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountWishlistTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\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 { BusinessPartnerUsersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport {\n AccountStatementRequest,\n BusinessPartnerOperationDeliveryType,\n CustomerBalances\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getTelemetryObject, Heading, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceData } from './account-customer-balance.data';\nimport { HeadingTag, IAccountCustomerBalanceProps } from './account-customer-balance.props.autogenerated';\nimport {\n AccountLabels,\n AccountValues,\n ActionBar,\n AdminRequestStatementButton,\n AvailableCreditComponent,\n BackButton,\n BalanceOwedComponent,\n CreditExcessComponent,\n RequestStatementModal\n} from './components';\n\nexport interface IAccountCustomerBalanceViewProps extends IAccountCustomerBalanceProps {\n heading: string;\n homeButton: React.ReactNode;\n accountSectionHeading: React.ReactNode;\n accountLabels: React.ReactNode;\n accountValues: React.ReactNode;\n creditSummarySectionHeading: React.ReactNode;\n creditSummaryLabels?: React.ReactNode;\n creditSummaryValues?: React.ReactNode;\n actions: React.ReactNode;\n requestStatementModal: React.ReactNode;\n availableCredit?: React.ReactNode;\n balanceOwed?: React.ReactNode;\n creditExcess?: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceState {\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n isStatementRequestAdminDropdownOpen: boolean;\n statementRequestFullOrg: boolean;\n statementRequestMaxDateString?: string;\n}\n\n/**\n *\n * AccountCustomerBalance component.\n * @extends {React.PureComponent>}\n */\nclass AccountCustomerBalance extends React.PureComponent<\n IAccountCustomerBalanceProps,\n IAccountCustomerBalanceState\n> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly requestStatementButtonRef: React.RefObject = React.createRef();\n\n @computed get canSubmitStatementRequest(): boolean {\n return this.state.statementRequestFromDateString !== '' && this.state.statementRequestToDateString !== '';\n }\n\n constructor(props: IAccountCustomerBalanceProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: '',\n isStatementRequestAdminDropdownOpen: false,\n statementRequestFullOrg: false,\n statementRequestMaxDateString: new Date().toISOString().split('T')[0]\n };\n }\n\n public render(): JSX.Element | null {\n const customer = get(this.props, 'data.customerInformation.result');\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n if ([customer, account].includes(undefined)) {\n this.props.context.telemetry.error('Customer data is unavailable, module will not render');\n return null;\n }\n\n const { config, resources, context } = this.props;\n const { heading } = config;\n const {\n creditSummarySectionHeading,\n accountSectionHeading,\n backToShoppingText,\n customerSincePrefix,\n availableCreditLabel,\n balanceOwedLabel,\n creditExcessLabel,\n requestStatementButtonLabel,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel,\n myAccountStatementLabel,\n fullOrganizationLabel,\n modalAriaLabel\n } = resources;\n\n const {\n isStatementRequestModalOpen,\n statementRequestFromDateString,\n statementRequestToDateString,\n statementRequestMaxDateString\n } = this.state;\n\n const accountNumber = customer.AccountNumber;\n const createdOn = this._formatJoinDate(new Date(customer.CreatedDateTime));\n const name = `${customer.FirstName} ${customer.LastName}`;\n let customerCredit = 0;\n let customerAccountBalance = 0;\n let excess = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n customerAccountBalance = account.Balance;\n excess = account.Balance - account.CreditLimit;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n customerAccountBalance = account.InvoiceAccountBalance;\n excess = account.InvoiceAccountBalance - account.InvoiceAccountCreditLimit;\n }\n\n const creditExcess = excess > 0 ? this._formatCurrency(excess) : null;\n const availableCredit = this._formatCurrency(customerCredit);\n const balanceOwed = this._formatCurrency(customerAccountBalance);\n const backLink = Msdyn365.getUrlSync('home', context.actionContext) || '';\n const emailAddress = customer.Email;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const isB2BAdmin = isB2BSite && customer.IsB2bAdmin;\n\n const actionBar = isB2BAdmin ? (\n \n ) : (\n isB2BSite && (\n \n )\n );\n\n const viewProps = {\n ...this.props,\n heading: ,\n accountSectionHeading: (\n \n ),\n accountLabels: (\n \n ),\n accountValues: ,\n creditSummarySectionHeading: (\n \n ),\n availableCredit: ,\n balanceOwed: ,\n creditExcess: ,\n homeButton: ,\n actions: actionBar,\n requestStatementModal: isB2BSite && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private _formatCurrency(currency: number): string {\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n\n return `${formatCurrency(currency.toFixed(2), currencyCode)}`;\n }\n\n private _formatJoinDate(date: Date): string {\n const i14nDate = new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n });\n\n return i14nDate.format(date);\n }\n\n private readonly _showRequestStatementModal = (): void => {\n if (!this.state.isStatementRequestModalOpen) {\n this.setState({\n isStatementRequestModalOpen: true\n });\n }\n };\n\n private readonly _toggleModal = (): void => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n this.requestStatementButtonRef.current?.focus();\n };\n\n private readonly _toggleDropdown = (): void => {\n this.setState({\n isStatementRequestAdminDropdownOpen: !this.state.isStatementRequestAdminDropdownOpen\n });\n };\n\n private readonly _updateFromDate = (newFromDate: string) => {\n this.setState({\n statementRequestFromDateString: newFromDate\n });\n };\n\n private readonly _updateToDate = (newToDate: string) => {\n this.setState({\n statementRequestToDateString: newToDate\n });\n };\n\n private readonly _adminShowRequestStatementModal = (isFullOrg: boolean) => {\n this.setState({\n statementRequestFullOrg: isFullOrg,\n isStatementRequestAdminDropdownOpen: false\n });\n\n this._showRequestStatementModal();\n };\n\n private readonly _requestStatement = () => {\n const customer = this.props.data.customerInformation.result!;\n const B2BUserId = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n\n const statementRequest: AccountStatementRequest = {\n FromDate: new Date(this.state.statementRequestFromDateString),\n ToDate: new Date(this.state.statementRequestToDateString),\n IsForFullOrganization: this.state.statementRequestFullOrg,\n RequestedUserId: B2BUserId,\n RequestingUserEmail: customer.Email,\n DeliveryTypeValue: BusinessPartnerOperationDeliveryType.Email\n };\n\n const context = { callerContext: this.props.context.actionContext };\n\n BusinessPartnerUsersDataActions.requestAccountStatementAsync(context, B2BUserId, statementRequest);\n\n this.setState({\n isStatementRequestModalOpen: false\n });\n\n this.requestStatementButtonRef.current?.focus();\n };\n}\n\nexport default AccountCustomerBalance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","// tslint:disable:no-reference\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { ITelemetry } from '@msdyn365-commerce/core';\r\n/**\r\n *\r\n * Auto Suggest\r\n */\r\nexport class AutoSuggest {\r\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\r\n private telemetry: ITelemetry;\r\n private countryCode?: string;\r\n private bingMapsApiKey?: string;\r\n private defaultLanguageId?: string;\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n private autoSuggestOptions: IAutoSuggestOptions;\r\n\r\n constructor(\r\n telemetry: ITelemetry,\r\n autoSuggestOptions: IAutoSuggestOptions,\r\n BingMapsApiKey?: string,\r\n countryCode?: string,\r\n defaultLanguageId?: string\r\n ) {\r\n this.telemetry = telemetry;\r\n this.autoSuggestOptions = autoSuggestOptions;\r\n this.bingMapsApiKey = BingMapsApiKey;\r\n this.countryCode = countryCode;\r\n this.defaultLanguageId = defaultLanguageId;\r\n }\r\n\r\n public attachAutoSuggest = (\r\n inputId: string,\r\n containerId: string,\r\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\r\n ): void => {\r\n if (!this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = {\r\n ...this.autoSuggestOptions,\r\n countryCode: this.countryCode\r\n };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\r\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\r\n setTimeout(() => {\r\n document.querySelector(inputId)?.setAttribute('type', 'text');\r\n }, 0);\r\n },\r\n errorCallback: () => {\r\n if (this.telemetry) {\r\n this.telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: this.bingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\r\n if (this.autoSuggestManager) {\r\n this.autoSuggestOptions.countryCode = countryCode;\r\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\r\n }\r\n };\r\n\r\n public disposeAutoSuggest = (): void => {\r\n this.autoSuggestManager?.detachAutosuggest();\r\n this.autoSuggestManager?.dispose();\r\n this.autoSuggestManager = undefined;\r\n };\r\n\r\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\r\n await storeSelectorStateManager.loadMapApi({\r\n key: this.bingMapsApiKey,\r\n lang: this.countryCode,\r\n market: this.defaultLanguageId\r\n });\r\n };\r\n}\r\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport { getStateProvincesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get state provinces data action\r\n */\r\nexport class GetStateProvincesInput implements IActionInput {\r\n public countryRegionId: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\r\n this.countryRegionId = countryRegionId;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\r\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getStateProvinceAction\r\n});\r\n","import { addAddress, AddressManagementInput, updateAddress, updatePrimaryAddress } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { getStateProvinceAction, GetStateProvincesInput } from './../actions/get-state-provinces';\r\nimport { IAddressResource, IAddressResponse } from './address-module.data';\r\n\r\n/**\r\n *\r\n * Address common\r\n */\r\nexport class AddressCommon {\r\n private context: ICoreContext;\r\n private resources: IAddressResource;\r\n private telemetry: ITelemetry;\r\n\r\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\r\n this.context = context;\r\n this.resources = resources;\r\n this.telemetry = telemetry;\r\n }\r\n\r\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\r\n const marketISOCode = market || 'US';\r\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\r\n };\r\n\r\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\r\n return {\r\n errorTitle: resources.addressErrorMessageTitle,\r\n errorMessage: resources.addressGenericErrorMessage\r\n };\r\n };\r\n\r\n public isAuthenticatedFlow = (): boolean => {\r\n return this.context.request.user.isAuthenticated;\r\n };\r\n\r\n public getStateProvinces = async (countryRegionId: string): Promise => {\r\n let response: StateProvinceInfo[] = [];\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\r\n response = await getStateProvinceAction(input, this.context.actionContext);\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to get state provinces');\r\n }\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n // For any address, check for common requried field else treat it as invalid\\empty address.\r\n public isEmpty = (address: Address): boolean => {\r\n if (address && address.ThreeLetterISORegionName && address.City) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n public addCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(addAddress, address);\r\n };\r\n\r\n public updateCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updateAddress, address);\r\n };\r\n\r\n public updateCustomerPrimaryAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updatePrimaryAddress, address);\r\n };\r\n\r\n private submitCustomerAddress = (addressAction: IObservableAction, address: Address): Promise => {\r\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\r\n\r\n const input = new AddressManagementInput(address);\r\n return this.execAddressAction(addressAction, input, address);\r\n };\r\n\r\n private execAddressAction = async (\r\n addressAction: IObservableAction,\r\n input: IActionInput | IActionInput[],\r\n address: Address\r\n ): Promise => {\r\n let response: IAddressResponse = {};\r\n\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const addresses = await addressAction(input, this.context.actionContext);\r\n if (addresses.length > 0) {\r\n const currentAddress = addresses.find(\r\n newAddress =>\r\n newAddress.Name === address.Name &&\r\n newAddress.AddressTypeValue === address.AddressTypeValue &&\r\n newAddress.City === address.City &&\r\n newAddress.Phone === address.Phone &&\r\n newAddress.State === address.State &&\r\n newAddress.Street === address.Street &&\r\n newAddress.ThreeLetterISORegionName === address.ThreeLetterISORegionName &&\r\n newAddress.ZipCode === address.ZipCode\r\n );\r\n response.address = address.RecordId ? address : currentAddress ? currentAddress : addresses[addresses.length - 1];\r\n } else {\r\n response.address = address;\r\n }\r\n response.customerAddresses = addresses;\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to exec address action');\r\n }\r\n response = this.parseRetailException(this.resources);\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n}\r\n","export enum AddressItemDisplayType {\r\n Input = 'Input',\r\n Dropdown = 'Dropdown',\r\n Checkbox = 'Checkbox'\r\n}\r\n\r\nexport enum AddressValidationRuleType {\r\n Required = 'Required',\r\n Format = 'Format'\r\n}\r\n\r\nexport enum AddressItemType {\r\n Name = 1001,\r\n Phone = 1002,\r\n IsPrimary = 1003,\r\n AddressTypeValue = 1004,\r\n ZipCode = 1,\r\n City = 2,\r\n County = 3,\r\n State = 4,\r\n ThreeLetterISORegionName = 5,\r\n Street = 6,\r\n District = 7,\r\n StreetNumber = 8,\r\n BuildingCompliment = 9,\r\n Postbox = 10,\r\n House_RU = 21,\r\n Flat_RU = 22,\r\n CountryOKSMCode_RU = 23\r\n}\r\n\r\nexport interface IAddressItem {\r\n name: string;\r\n type: AddressItemType;\r\n label: string;\r\n maxLength: number;\r\n displayType: AddressItemDisplayType;\r\n validationRules?: IAddressValidationRule[];\r\n isNewLine: boolean;\r\n}\r\n\r\nexport interface IAddressValidationRule {\r\n type: AddressValidationRuleType;\r\n regEx: string;\r\n message: string;\r\n}\r\n\r\nexport interface IAddressDropdownsData {\r\n [index: string]: { key?: string | number; value?: string }[];\r\n}\r\n\r\nexport interface IAddressFormatData {\r\n addressItems: IAddressItem[];\r\n validationRules: IAddressValidationRule[];\r\n dropdownData: IAddressDropdownsData;\r\n}\r\n","import { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { Address, AddressPurpose, CountryRegionInfo } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport enum AddressOperation {\r\n Add = 'Add',\r\n Show = 'Show',\r\n Update = 'Update',\r\n List = 'List'\r\n}\r\n\r\nexport enum AddressType {\r\n Shipping = 'Shipping',\r\n Billing = 'Billing',\r\n Company = 'Company'\r\n}\r\n\r\nexport interface IDropdownDisplayData {\r\n [index: string]: { key?: string; value?: string }[];\r\n}\r\n\r\nexport interface IAddressResponse {\r\n errorTitle?: string;\r\n errorMessage?: string;\r\n customerAddresses?: Address[];\r\n address?: Address;\r\n}\r\n\r\nexport interface IAddressConfig {\r\n heading?: Heading;\r\n primaryAddressSectionHeading?: Heading;\r\n otherAddressSectionHeading?: Heading;\r\n addAddressHeading?: Heading;\r\n editAddressHeading?: Heading;\r\n}\r\n\r\nexport interface IAddressResource {\r\n addressAddButtonText: string;\r\n addressAddButtonAriaLabel: string;\r\n addressPrimaryButtonText: string;\r\n addressPrimaryButtonAriaLabel: string;\r\n addressEditButtonText: string;\r\n addressEditButtonAriaLabel: string;\r\n addressRemoveButtonText: string;\r\n addressRemoveButtonAriaLabel: string;\r\n addressSaveButtonText: string;\r\n addressSaveButtonAriaLabel: string;\r\n addressCancelButtonText: string;\r\n addressCancelButtonAriaLabel: string;\r\n addressStateDefaultSelectionText: string;\r\n addressNameLabel: string;\r\n addressNameLabelOptional?: string;\r\n addressNameRequiredErrorMessage: string;\r\n addressPhoneLabel: string;\r\n addressPhoneLabelOptional?: string;\r\n addressPhoneRequiredErrorMessage: string;\r\n addressZipCodeLabel: string;\r\n addressZipCodeLabelOptional?: string;\r\n addressZipCodeRequiredErrorMessage: string;\r\n addressCityLabel: string;\r\n addressCityLabelOptional?: string;\r\n addressCityRequiredErrorMessage: string;\r\n addressCountyLabel: string;\r\n addressCountyLabelOptional?: string;\r\n addressCountyRequiredErrorMessage: string;\r\n addressStateLabel: string;\r\n addressStateLabelOptional?: string;\r\n addressStateRequiredErrorMessage: string;\r\n addressThreeLetterISORegionNameLabel: string;\r\n addressThreeLetterISORegionNameLabelOptional?: string;\r\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\r\n addressStreetLabel: string;\r\n addressStreetLabelOptional?: string;\r\n addressStreetRequiredErrorMessage: string;\r\n addressDistrictLabel: string;\r\n addressDistrictLabelOptional?: string;\r\n addressDistrictRequiredErrorMessage: string;\r\n addressStreetNumberLabel: string;\r\n addressStreetNumberLabelOptional?: string;\r\n addressStreetNumberRequiredErrorMessage: string;\r\n addressBuildingComplimentLabel: string;\r\n addressBuildingComplimentLabelOptional?: string;\r\n addressBuildingComplimentRequiredErrorMessage: string;\r\n addressPostboxLabel: string;\r\n addressPostboxLabelOptional?: string;\r\n addressPostboxRequiredErrorMessage: string;\r\n addressHouseRULabel: string;\r\n addressHouseRULabelOptional?: string;\r\n addressHouseRURequiredErrorMessage: string;\r\n addressFlatRULabel: string;\r\n addressFlatRULabelOptional?: string;\r\n addressFlatRURequiredErrorMessage: string;\r\n addressCountryOKSMCodeRULabel: string;\r\n addressCountryOKSMCodeRURequiredErrorMessage: string;\r\n addressErrorMessageTitle: string;\r\n addressGenericErrorMessage: string;\r\n addressEmptyListAddressMessage: string;\r\n}\r\n\r\nexport interface IAddressModuleData {\r\n address?: Address;\r\n customerAddresses?: Address[];\r\n countryRegions?: CountryRegionInfo[];\r\n addressPurposes?: AddressPurpose[];\r\n errorTitle?: string;\r\n errorMessage?: string;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { get, set } from 'mobx';\r\n\r\nimport {\r\n Address,\r\n AddressPurpose,\r\n CountryRegionInfo,\r\n StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\r\nimport { AddressMetaData } from './address-meta-data';\r\n\r\n/**\r\n *\r\n * Retail Service Address format parser\r\n */\r\nexport class AddressFormat {\r\n private countryRegionsInfo?: CountryRegionInfo[];\r\n private addressPurposes?: AddressPurpose[];\r\n private addressMetaData: AddressMetaData;\r\n\r\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\r\n this.countryRegionsInfo = countryRegionsInfo;\r\n this.addressMetaData = addressMetaData;\r\n this.addressPurposes = addressPurposes;\r\n }\r\n\r\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n if (countryRegionInfo) {\r\n return this._getAddressDisplayFormat(countryRegionInfo);\r\n }\r\n return [];\r\n }\r\n\r\n public getCountryFormat(): { key?: string; value?: string }[] {\r\n return (this.countryRegionsInfo || []).map(countryRegion => {\r\n return {\r\n key: countryRegion.CountryRegionId,\r\n value: countryRegion.ShortName\r\n };\r\n });\r\n }\r\n\r\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\r\n return (stateProvinceInfo || []).map(state => {\r\n return {\r\n key: state.StateId,\r\n value: state.StateName\r\n };\r\n });\r\n }\r\n\r\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\r\n return (this.addressPurposes || []).map(addressPurpose => {\r\n return {\r\n key: addressPurpose.AddressType,\r\n value: addressPurpose.Name\r\n };\r\n });\r\n }\r\n\r\n public getPrefilledAddressDropdownData = (\r\n stateDefaultSelectionText: string,\r\n stateProvinceInfo?: StateProvinceInfo[]\r\n ): IAddressDropdownsData => {\r\n const defaultStateText = {\r\n key: '',\r\n value: stateDefaultSelectionText\r\n };\r\n const dropdownData: IAddressDropdownsData = {};\r\n\r\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\r\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\r\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\r\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\r\n\r\n return dropdownData;\r\n };\r\n\r\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n\r\n return countryRegionInfo!.ISOCode;\r\n };\r\n\r\n public validateAddressFormat = (\r\n address: Address,\r\n validationError: Address,\r\n countryRegionId: string,\r\n propertyName?: string\r\n ): boolean => {\r\n let isValid: boolean = true;\r\n let validationtor;\r\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\r\n\r\n addressFormat.forEach(addressFormatItem => {\r\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\r\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\r\n if (validationtor !== undefined) {\r\n isValid = validationtor;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n };\r\n\r\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\r\n const address: Address = {};\r\n\r\n // Zip Code\r\n if (result.address.postalCode !== undefined) {\r\n address.ZipCode = result.address.postalCode;\r\n } else {\r\n address.ZipCode = '';\r\n }\r\n\r\n // State\r\n if (stateProvinceInfo) {\r\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\r\n if (!selectedState) {\r\n address.State = '';\r\n address.StateName = result.address.adminDistrict;\r\n } else {\r\n address.State = selectedState.StateId;\r\n address.StateName = selectedState.StateName;\r\n }\r\n }\r\n\r\n // Street\r\n if (result.address.addressLine !== undefined) {\r\n address.Street = result.address.addressLine;\r\n } else {\r\n address.Street = ' ';\r\n }\r\n\r\n // City\r\n if (result.address.locality !== undefined) {\r\n address.City = result.address.locality;\r\n } else {\r\n address.City = '';\r\n }\r\n\r\n // District\r\n if (result.address.district !== undefined) {\r\n address.DistrictName = result.address.district;\r\n address.CountyName = result.address.district;\r\n } else {\r\n address.DistrictName = '';\r\n }\r\n\r\n // formatted Address\r\n address.FullAddress = result.address.formattedAddress;\r\n\r\n return address;\r\n };\r\n\r\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, {\r\n [addressFormatItem.name]: validationRule.message\r\n });\r\n return false;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\r\n if (validationRule.regEx && validationRule.regEx.length > 0) {\r\n try {\r\n const regex = RegExp(validationRule.regEx);\r\n return regex.test(get(address, propertyName) || '');\r\n } catch {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\r\n return (this.countryRegionsInfo || []).find(countryRegion => {\r\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\r\n });\r\n }\r\n\r\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\r\n const addressDisplayItem: IAddressItem[] = [];\r\n\r\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\r\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\r\n if (AddressTypeItem) {\r\n addressDisplayItem.push(AddressTypeItem);\r\n }\r\n\r\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.push(nameDisplayItem);\r\n }\r\n\r\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\r\n if (formatLine.AddressComponentNameValue) {\r\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\r\n if (addressItem) {\r\n addressItem.isNewLine = formatLine.NewLine || false;\r\n addressDisplayItem.push(addressItem);\r\n }\r\n }\r\n });\r\n\r\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\r\n if (phoneDisplayItem) {\r\n addressDisplayItem.push(phoneDisplayItem);\r\n }\r\n\r\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\r\n if (isPrimaryDisplayItem) {\r\n addressDisplayItem.push(isPrimaryDisplayItem);\r\n }\r\n }\r\n\r\n return addressDisplayItem;\r\n }\r\n\r\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\r\n const addressItem = this.addressMetaData.getItemFormat(type);\r\n if (addressItem) {\r\n addressItem.isNewLine = isNewLine;\r\n }\r\n return addressItem;\r\n }\r\n}\r\n","import {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './address-format.data';\r\nimport { IAddressResource } from './address-module.data';\r\n\r\n/**\r\n * Address meta data\r\n */\r\nexport class AddressMetaData {\r\n private metaData: IAddressItem[] = [];\r\n private resources: IAddressResource;\r\n private requiredFieldRegEx: string = '\\\\S';\r\n private resourcesPrefix: string = 'address';\r\n private maxLength: number = 64;\r\n private requiredFields: AddressItemType[];\r\n private excludedTypes: AddressItemType[];\r\n\r\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\r\n this.resources = resources || {};\r\n this.excludedTypes = excluded || [];\r\n this.requiredFields =\r\n required !== undefined\r\n ? required\r\n : [\r\n AddressItemType.Name,\r\n AddressItemType.ZipCode,\r\n AddressItemType.City,\r\n AddressItemType.State,\r\n AddressItemType.ThreeLetterISORegionName,\r\n AddressItemType.Street\r\n ];\r\n this._init();\r\n }\r\n\r\n public getItemFormat(id: number): IAddressItem | undefined {\r\n return this.metaData.find(item => {\r\n return item.type === id;\r\n });\r\n }\r\n\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.District, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\r\n }\r\n\r\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType): void {\r\n if (this.excludedTypes.includes(type)) {\r\n return;\r\n }\r\n\r\n const nameKey = AddressItemType[type].replace('_', '');\r\n\r\n // find out if currentItem is required field\r\n const validationRules = this._validationRules(type, nameKey);\r\n let isRequired = false;\r\n validationRules.forEach(rule => {\r\n if (rule.type === AddressValidationRuleType.Required) {\r\n isRequired = true;\r\n }\r\n });\r\n\r\n // if no optional string is provided in resource file, use the original label text\r\n const optionalString =\r\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\r\n const item: IAddressItem = {\r\n type,\r\n displayType,\r\n name: AddressItemType[type],\r\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\r\n maxLength: this.maxLength,\r\n validationRules: validationRules,\r\n isNewLine: true\r\n };\r\n\r\n this.metaData.push(item);\r\n }\r\n\r\n private _validationRules(type: AddressItemType, name: string): IAddressValidationRule[] {\r\n const validationRules: IAddressValidationRule[] = [];\r\n\r\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\r\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\r\n const message = this.resources[`${key}ErrorMessage`];\r\n switch (ruleType) {\r\n case AddressValidationRuleType.Required: {\r\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\r\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\r\n }\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n return validationRules;\r\n }\r\n\r\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\r\n return {\r\n type,\r\n regEx,\r\n message\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressAlert {\r\n message?: string;\r\n}\r\n\r\nconst AdressAlert: React.FC = ({ message }) => (\r\n \r\n {message && <>{message}}\r\n \r\n);\r\n\r\nexport default AdressAlert;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressButton {\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n onClick(event: React.MouseEvent): void;\r\n}\r\n\r\nconst AddressButton: React.FC = ({ className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, text);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressButton;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressCheckbox {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n isChecked: boolean;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressCheckbox: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n isChecked,\r\n additionalAddributes,\r\n telemetryContent,\r\n autoFocus,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AdressCheckbox;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressDropdown {\r\n id: string;\r\n name: string;\r\n className: string;\r\n value: string | number;\r\n additionalAddributes?: object;\r\n displayData: { key?: string | number; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\r\n let isSelected: boolean;\r\n if (typeof key === 'number') {\r\n isSelected = key === selectedValue;\r\n } else {\r\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AdressDropdown: React.FC = ({ id, name, className, value, additionalAddributes, displayData, onChange }) => (\r\n \r\n);\r\n\r\nexport default AdressDropdown;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorMessage {\r\n message: string;\r\n}\r\n\r\nconst AdressErrorMessage: React.FC = ({ message }) =>

{message}

;\r\n\r\nexport default AdressErrorMessage;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorTitle {\r\n title: string;\r\n}\r\n\r\nconst AdressErrorTitle: React.FC = ({ title }) =>

{title}

;\r\n\r\nexport default AdressErrorTitle;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressInput {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n value: string;\r\n maxLength?: number;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressInput: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n value,\r\n maxLength,\r\n additionalAddributes,\r\n autoFocus,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AdressInput;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressLabel {\r\n id: string;\r\n text: string;\r\n}\r\n\r\nconst AdressLabel: React.FC = ({ id, text }) => (\r\n \r\n);\r\n\r\nexport default AdressLabel;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport { get } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\r\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressType, IAddressResource, IAddressResponse } from './../address-module.data';\r\n\r\nimport {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressDropdownsData,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './../address-format.data';\r\n\r\nimport AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressCheckboxComponent from './address-checkbox';\r\nimport AdressDropdownComponent from './address-dropdown';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport AddressInputComponent from './address-input';\r\nimport AddressLabelComponent from './address-label';\r\n\r\nexport interface IAddressAddInputProps {\r\n isUpdating?: boolean;\r\n hasError?: boolean;\r\n hasExternalSubmitGroup?: boolean;\r\n addressType: AddressType;\r\n addressFormat: IAddressItem[];\r\n defaultCountryRegionId: string;\r\n defaultAddressType: number;\r\n selectedAddress?: Address;\r\n dropdownDisplayData: IAddressDropdownsData;\r\n resources: IAddressResource;\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onInputChange(event: React.ChangeEvent): void;\r\n onDropdownChange(event: React.ChangeEvent): void;\r\n onSave?(): void;\r\n onCancel?(): void;\r\n}\r\n\r\nexport interface IAddressError {\r\n AddressError: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddItem {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddUpdateProps {\r\n AddressForm: INodeProps;\r\n heading: React.ReactNode;\r\n items: IAddressAddItem[];\r\n hasError: boolean;\r\n error: IAddressError;\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\r\n const requriedRule = (validationRules || []).find(validationRule => {\r\n return validationRule.type === AddressValidationRuleType.Required;\r\n });\r\n\r\n return requriedRule ? { 'aria-required': true } : {};\r\n};\r\n\r\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\r\n const {\r\n addressFormat,\r\n addressType,\r\n dropdownDisplayData,\r\n defaultCountryRegionId,\r\n defaultAddressType,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange\r\n } = props;\r\n\r\n // @ts-ignore\r\n return addressFormat.map((addressFormatItem, index) => {\r\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\r\n const errorMessage = get(validationError, addressFormatItem.name);\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n\r\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\r\n input = (\r\n \r\n );\r\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\r\n input = (\r\n \r\n );\r\n } else {\r\n const displayData = dropdownDisplayData[addressFormatItem.name];\r\n let selectedValue = selectedAddress[addressFormatItem.name];\r\n\r\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\r\n selectedValue = selectedValue || defaultCountryRegionId;\r\n }\r\n\r\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\r\n selectedValue = selectedValue || defaultAddressType;\r\n }\r\n\r\n input = (\r\n \r\n );\r\n }\r\n\r\n return {\r\n key: addressFormatItem.name,\r\n AddressItem: { className: className, id: `${elementId}_container` },\r\n label: ,\r\n alert: ,\r\n input: input\r\n };\r\n });\r\n};\r\n\r\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\r\n const {\r\n editAddressHeading,\r\n addAddressHeading,\r\n selectedAddress = {},\r\n resources,\r\n hasError,\r\n onCancel,\r\n onSave,\r\n hasExternalSubmitGroup,\r\n isUpdating,\r\n addressActionResponse,\r\n telemetryContent\r\n } = props;\r\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\r\n\r\n return {\r\n AddressForm: { className: 'msc-address-form' },\r\n heading: heading && ,\r\n items: getAddessItems(selectedAddress, props),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: onSave && (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: onCancel && (\r\n \r\n ),\r\n hasError: hasError || false,\r\n error: {\r\n AddressError: { className: 'msc-address-form__error' },\r\n title: addressActionResponse && addressActionResponse.errorTitle && (\r\n \r\n ),\r\n message: addressActionResponse && addressActionResponse.errorMessage && (\r\n \r\n )\r\n }\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressDetailItem {\r\n isNewLine: boolean;\r\n isShowLabel: boolean;\r\n labelText: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\nconst AddressDetailItem: React.FC = ({ isNewLine, isShowLabel, labelText, name, value }) => {\r\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\r\n const isEmpty = !(value && value.length > 0);\r\n const mainClass = isShowLabel\r\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\r\n : classname(className, {\r\n 'msc-address-detail__item-empty': isEmpty,\r\n 'msc-address-detail__item-newline': isNewLine\r\n });\r\n return (\r\n \r\n {isShowLabel && (\r\n <>\r\n {labelText}\r\n \r\n \r\n )}\r\n {value}\r\n \r\n );\r\n};\r\n\r\nexport default AddressDetailItem;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressItem } from './../address-format.data';\r\nimport AddressDetailItemComponent from './address-detail-item';\r\n\r\nexport interface IAddressShowItem {\r\n key: string;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressShowProps {\r\n AddressDetail: INodeProps;\r\n items: IAddressShowItem[];\r\n}\r\n\r\nexport interface IAddressShowInputProps {\r\n addressFormat: IAddressItem[];\r\n address: Address;\r\n addressPurposes: AddressPurpose[];\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, addressPurposes, address } = props;\r\n\r\n return {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map(item => {\r\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n const addressType = addressPurposes.find(\r\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\r\n );\r\n if (addressType) {\r\n const value = addressType.Name || '';\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n }\r\n }\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n })\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource } from './../address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressInputComponent from './address-input';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressSelectInputProps {\r\n hasExternalSubmitGroup?: boolean;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n addressPurposes: AddressPurpose[];\r\n resources: IAddressResource;\r\n selectedAddress: Address;\r\n telemetryContent?: ITelemetryContent;\r\n onAddressOptionChange(event: React.ChangeEvent): void;\r\n onAddAddress(): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddressSelectItem {\r\n key: number;\r\n SelectItem: INodeProps;\r\n input: React.ReactNode;\r\n showItems: IAddressShowProps;\r\n}\r\n\r\nexport interface IAddressSelectProps {\r\n SelectAddress: INodeProps;\r\n addButton: React.ReactNode;\r\n items: IAddressSelectItem[];\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\r\n const { addresses, onAddressOptionChange, selectedAddress } = props;\r\n\r\n const ichecked = address.RecordId === selectedAddress.RecordId;\r\n const additionalAttributes = {\r\n checked: ichecked,\r\n 'aria-checked': ichecked,\r\n 'aria-setsize': addresses.length,\r\n 'aria-posinset': index + 1\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\r\n const { addresses, addressFormat, addressPurposes } = props;\r\n\r\n return addresses.map((address, index) => {\r\n return {\r\n key: address.RecordId || 0,\r\n SelectItem: { className: 'msc-address-select__item' },\r\n input: getInput(index, address, props),\r\n showItems: AddressShow({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address: address,\r\n addressPurposes: addressPurposes\r\n })\r\n };\r\n });\r\n};\r\n\r\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\r\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\r\n\r\n return {\r\n SelectAddress: { className: 'msc-address-select' },\r\n addButton: (\r\n \r\n ),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n items: getAddressSelectItems(props)\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AutoSuggest } from './common/address-autosuggest';\r\nimport { AddressCommon } from './common/address-common';\r\nimport { AddressFormat } from './common/address-format';\r\nimport { AddressItemType } from './common/address-format.data';\r\nimport { AddressMetaData } from './common/address-meta-data';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from './common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from './common/components/address-add';\r\nimport { AddressSelect, IAddressSelectProps } from './common/components/address-select';\r\nimport { AddressShow, IAddressShowProps } from './common/components/address-show';\r\nimport { ICustomCheckoutShippingAddressData } from './custom-checkout-shipping-address.data';\r\nimport { ICustomCheckoutShippingAddressProps } from './custom-checkout-shipping-address.props.autogenerated';\r\n\r\nexport interface ICheckoutAddressProps extends ICustomCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n// @ts-ignore\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private addUpdateAddress: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n @observable private isUpdating?: boolean;\r\n @observable private hasError?: boolean;\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private addressPurposes: AddressPurpose[];\r\n private resources: IAddressResource;\r\n private defaultAddressType: number = 6; // Default to Home\r\n private telemetryContent?: ITelemetryContent;\r\n private autoSuggest?: AutoSuggest;\r\n private multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data?.featureState?.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n try {\r\n await this.props.data.checkout;\r\n this._setDefaultCountryRegionId();\r\n await this._initModuleState();\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to initialize checkout data:', error);\r\n }\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n async () => {\r\n try {\r\n await this._getStateProvinces();\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to get state provinces on operation change:', error);\r\n }\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n showAddressSelect: this._renderSelectAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this.onSubmit,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderSelectAddress = (): IAddressSelectProps => {\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n onAddAddress: this._goToAddAddress,\r\n onSave: this._onSelectAddress,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n @action\r\n private _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n set(this.addUpdateAddress, { ['Street']: '' });\r\n set(this.addUpdateAddress, { ['ZipCode']: address.ZipCode });\r\n set(this.addUpdateAddress, { ['CountyName']: address.CountyName });\r\n set(this.addUpdateAddress, { ['City']: address.City });\r\n set(this.addUpdateAddress, { ['State']: address.State });\r\n set(this.addUpdateAddress, { ['DistrictName']: address.DistrictName });\r\n set(this.addUpdateAddress, { ['FullAddress']: address.FullAddress });\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { ['Street']: address.Street });\r\n }, 0);\r\n };\r\n\r\n @action\r\n private _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n // @ts-ignore\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n // @ts-ignore\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n @action\r\n private _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n private _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n private onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n private _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : Promise.resolve({ address: this.addUpdateAddress });\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n async (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n try {\r\n await this._onAddOrUpdateSuccess(result);\r\n } catch (error) {\r\n this.hasError = true;\r\n this.props.context.telemetry.error('Failed to process address update:', error);\r\n this._updateModuleState();\r\n }\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['TwoLetterISORegionName']: twoLetterISORegionName\r\n });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n private _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n private async _getStateProvinces(): Promise {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n try {\r\n const result = await this.addressCommon.getStateProvinces(this.countryRegionId);\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { ['State']: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to get state provinces:', error);\r\n }\r\n }\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n private _initModuleState = async (): Promise => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n if (this._canShip()) {\r\n const defaultAddress = this._getShippingAddressFromCartLines() || this._getDefaultAddress();\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n try {\r\n await this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to set shipping address:', error);\r\n }\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n private onSubmit = async (): Promise => {\r\n try {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n await this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n } catch (error) {\r\n this.props.context.telemetry.error('Error during submit operation:', error);\r\n }\r\n };\r\n\r\n private onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n private _getShippingAddressFromCartLines = (): Address | undefined => {\r\n const { request } = this.props.context;\r\n const { channelDeliveryOptionConfig } = this.props.data;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n const cartLines = this.retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n\r\n if (cartLines && cartLines.length > 0) {\r\n return cartLines[0].ShippingAddress;\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n private _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-ignore: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout?.result?.checkoutCart?.cart?.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout?.result?.checkoutCart?.cart?.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n private _onSelectAddress = async () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n await this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n private _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n private _onAddOrUpdateSuccess = async (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n try {\r\n await this._setShippingAddress(response.address);\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to set shipping address:', error);\r\n }\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n private _setShippingAddress = async (address: Address): Promise => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n try {\r\n await this.props.data.checkout.result.updateShippingAddress({\r\n newShippingAddress\r\n });\r\n } catch (error) {\r\n this.props.context.telemetry.error('Failed to update shipping address:', error);\r\n }\r\n }\r\n };\r\n\r\n @computed get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n }\r\n\r\n private _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = this.selectedAddress ? { ...this.selectedAddress } : {};\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['AddressTypeValue']: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = this.selectedAddress ? { ...this.selectedAddress } : {};\r\n }\r\n };\r\n\r\n private _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps,\r\n IAddressSelectItem,\r\n IAddressSelectProps,\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './custom-checkout-shipping-address';\r\nimport { convert_a2_to_a3 } from '../../themes/venchi/utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\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 &&\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// tslint:disable-next-line:max-func-body-length\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 ...other\r\n}) => {\r\n // @ts-ignore\r\n const [hasHomeNumber, setHasHomeNumber] = React.useState(false);\r\n // @ts-ignore\r\n const [shouldCheckHomeNumber, setShouldCheckHomeNumber] = React.useState(false);\r\n const addressContainerRef = React.useRef(null);\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n //select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n },\r\n enSG: {\r\n autocomplete: ['sg'],\r\n select: ['SGP']\r\n },\r\n enHK: {\r\n autocomplete: ['hk'],\r\n select: ['HKG']\r\n },\r\n zhHK: {\r\n autocomplete: ['hk'],\r\n select: ['HKG']\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n {\r\n googleComponent: 'administrative_area_level_3',\r\n id: 'shipping_addresscity'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_1',\r\n id: 'shipping_addressstate'\r\n },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n {\r\n googleComponent: 'country',\r\n id: 'shipping_addressthreeletterisoregionname'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_2',\r\n id: 'shipping_addresscounty'\r\n }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n const addressErrorField = addressContainerRef?.current?.querySelector('.msc-address-form__alert');\r\n const saveAddressButton = document.querySelector('.ms-checkout__guided-card-btn-save.msc-btn') as HTMLButtonElement;\r\n\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: {\r\n country: countriesAvail[locale] && countriesAvail[locale].autocomplete\r\n }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n let homeNumberPresent = false;\r\n setHasHomeNumber(false);\r\n setShouldCheckHomeNumber(true);\r\n\r\n const place = autocomplete.getPlace();\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => {\r\n if (addressComponent.types.includes('street_number')) {\r\n homeNumberPresent = true;\r\n setHasHomeNumber(true);\r\n }\r\n populateFormElements(addressComponent, googleComponent);\r\n });\r\n\r\n if (!homeNumberPresent) {\r\n addressContainerRef?.current?.classList.add('address-form__item-invalid');\r\n addressErrorField!.innerHTML = resources.addressHomeNumberRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n setHasHomeNumber(true);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3: boolean) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.ms-checkout__guided-card-btn-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = addressForm\r\n .closest('.ms-checkout__guided-card')\r\n ?.getElementsByClassName('ms-checkout__guided-card-btn-save')[0] as HTMLElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid = locale === 'it' && (county.value === '' || county.value.length > 2) ? false : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n const stateSelect = document.getElementById('shipping_addressstate') as HTMLSelectElement;\r\n if (locale === 'it') {\r\n stateSelect.value = 'DEF';\r\n stateSelect.dispatchEvent(event);\r\n stateSelect.disabled = Boolean('true');\r\n }\r\n phoneValidation();\r\n }, []);\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementById('shipping_addressphone')]);\r\n\r\n React.useEffect(() => {\r\n const addressStreetField = document?.getElementById('shipping_addressstreet') as HTMLInputElement;\r\n const addressErrorField = addressContainerRef?.current?.querySelector('.msc-address-form__alert');\r\n const saveAddressButton = document.querySelector('.ms-checkout__guided-card-btn-save.msc-btn') as HTMLButtonElement;\r\n\r\n if (addressErrorField && addressStreetField!.value) {\r\n addressErrorField.innerHTML = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n addressContainerRef?.current?.classList.remove('address-form__item-invalid');\r\n }\r\n }, [(document?.getElementById('shipping_addressstreet') as HTMLInputElement)?.value]);\r\n\r\n React.useEffect(() => {\r\n const saveAddressButton = document.querySelector('.ms-checkout__guided-card-btn-save.msc-btn') as HTMLButtonElement;\r\n if (hasHomeNumber) {\r\n saveAddressButton.removeAttribute('disabled');\r\n } else {\r\n if (shouldCheckHomeNumber) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n }\r\n\r\n setShouldCheckHomeNumber(false);\r\n }, [hasHomeNumber]);\r\n\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\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 CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\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 * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { Image, IViewPort } from '@msdyn365-commerce/core';\r\nimport { getFeatureToggleService } from '../../../services/featureToggleService';\r\nimport { IContentBlockConfig, IContentBlockProps } from '../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\nconst DEFAULT_IMAGE_MODE = 2;\r\n\r\nconst DEFAULT_VIEWPORTS: IViewPort = {\r\n xs: { w: 800, h: 600 }, // max-width: 767px\r\n sm: { w: 1200, h: 900 }, // min-width: 768px and max-width: 991px\r\n md: { w: 1600, h: 900 }, // min-width: 992px and max-width: 1199px\r\n lg: { w: 1600, h: 700 }, // min-width: 1200px and max-width: 1599px\r\n xl: { w: 1600, h: 700 } // min-width: 1600px\r\n};\r\n\r\ntype IContentBlockFullConfig = IContentBlockConfig & {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\r\n msdyn365__moduleLayout?: string;\r\n};\r\n\r\nconst ContentBlockView: React.FC> = props => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image: imageProp } = props;\r\n const { image } = props.config;\r\n const imageProps = {\r\n gridSettings: props.context.request.gridSettings ?? {},\r\n imageSettings: {\r\n ...(image?.imageSettings ?? {}),\r\n mode: image?.imageSettings?.mode || DEFAULT_IMAGE_MODE,\r\n viewports: image?.imageSettings?.viewports || DEFAULT_VIEWPORTS // Use || instead of ?? here\r\n }\r\n };\r\n\r\n const isLcpImage = props.config.preload;\r\n\r\n const htmlImage = imageProp && (\r\n {imageProp.props.altText}\r\n );\r\n\r\n //@ts-ignore\r\n const msdynImage = (\r\n \r\n );\r\n const { isFeatureEnabled } = getFeatureToggleService(props.context.request.cookies, props.context.app.config.features);\r\n\r\n const contentBlockImage = isFeatureEnabled('msdyn-image') ? msdynImage : htmlImage;\r\n\r\n const entireLink = contentBlockContainer.className.includes('linkplacement__entirebanner');\r\n // @ts-ignore\r\n const link = links && 'props' in links ? links.props.links[0].linkUrl.destinationUrl : '';\r\n return (\r\n \r\n {entireLink ? (\r\n \r\n {contentBlockImage}\r\n \r\n {title}\r\n {text}\r\n \r\n \r\n ) : (\r\n <>\r\n {image && {contentBlockImage}}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport const OrderTemplateListView: React.FC = props => {\r\n const {\r\n OrderTemplateList,\r\n status,\r\n statusMessage,\r\n heading,\r\n OrderTemplates,\r\n orderTemplates,\r\n OrderTemplate,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n \r\n {createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n \r\n {OrderTemplates && orderTemplates && orderTemplates.length > 0 && (\r\n \r\n {orderTemplates &&\r\n orderTemplates.map(orderTemplate => {\r\n return _renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst _renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, OrderTemplate?: INodeProps): JSX.Element | null => {\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nexport default OrderTemplateListView;\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 * IVideoPlayer 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 layout {\r\n column = 'column',\r\n row = 'row'\r\n}\r\n\r\nexport const enum mobileVideoQuality {\r\n hdx = 'hdx',\r\n hq = 'hq',\r\n sd = 'sd',\r\n lo = 'lo'\r\n}\r\n\r\nexport interface IVideoPlayerConfig extends Msdyn365.IModuleConfig {\r\n video: Msdyn365.IVideoData;\r\n heading?: IHeadingData;\r\n paragraph?: Msdyn365.RichText;\r\n links?: ILinksData[];\r\n additionalContent?: IAdditionalContentData;\r\n autoplay?: boolean;\r\n mute?: boolean;\r\n loop?: boolean;\r\n autoCaptions?: string;\r\n playPauseTrigger?: boolean;\r\n controls?: boolean;\r\n playFullScreen?: boolean;\r\n hidePosterFrame?: boolean;\r\n maskLevel?: number;\r\n thumbnailFullWidth?: boolean;\r\n lazyLoad?: boolean;\r\n clientRender?: boolean;\r\n layout: layout;\r\n cta?: ICtaData;\r\n mobileVideoQuality?: mobileVideoQuality;\r\n shouldDisableAutoPlayOnMobile?: boolean;\r\n}\r\n\r\nexport interface IVideoPlayerResources {\r\n playLabel: string;\r\n pauseLabel: string;\r\n pausedLabel: string;\r\n playingLabel: string;\r\n unMuteLabel: string;\r\n muteLabel: string;\r\n fullScreenLabel: string;\r\n exitFullScreenLabel: string;\r\n seekBarLabel: string;\r\n videoTimeDurationLabel: string;\r\n closedCaptionLabel: string;\r\n optionButtonLabel: string;\r\n sliderThumbLabel: string;\r\n volumeThumbLabel: 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 ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAdditionalContentData {\r\n heading?: string;\r\n subtext?: string;\r\n links?: ILinksData[];\r\n}\r\n\r\nexport interface ICtaData {\r\n label?: string;\r\n link?: string;\r\n}\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IVideoPlayerProps extends Msdyn365.IModule {\r\n resources: IVideoPlayerResources;\r\n config: IVideoPlayerConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nimport { IVideoPlayerViewProps } from '@msdyn365-commerce-modules/video-player';\r\nimport { IVideoPlayerProps, layout } from '../definition-extensions/video-player.ext.props.autogenerated';\r\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport { getFeatureToggleService } from '../../../services/featureToggleService';\r\n\r\n/**\r\n * Render Additional Content.\r\n * @param additionalContent - Additional content view props.\r\n * @returns JSX Element.\r\n */\r\n\r\nconst VideoPlayerView: React.FC> = props => {\r\n const { isFeatureEnabled } = getFeatureToggleService(props.context.request.cookies, props.context.app.config.features);\r\n const isAccessibleVideoPlayerEnabled = isFeatureEnabled('accessible-video');\r\n\r\n const getAutoplayValue = React.useCallback((): boolean => {\r\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\r\n\r\n if (!props.config.autoplay) return false;\r\n\r\n if (isMobileDevice && props.config.shouldDisableAutoPlayOnMobile) return false;\r\n\r\n return true;\r\n }, []);\r\n\r\n const getPlayer = (video_src?: string) =>\r\n isAccessibleVideoPlayerEnabled ? (\r\n props.player\r\n ) : (\r\n