{"version":3,"file":"static/js/74658226a6cf177bcbb2.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/checkout-apple-pay/checkout-apple-pay.data.ts?c986","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-apple-pay/checkout-apple-pay.tsx?f243","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/checkout-customer-account-payment.tsx?de67","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode.tsx?83e6","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode.tsx?5675","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/address-format.data.ts?3c40","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-google-pay/checkout-google-pay.tsx?5941","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/checkout-guest-profile.tsx?c2ce","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/checkout-guest-profile.view.tsx?2e47","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-add-contact-info.tsx?c9f6","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-add-customer-reference-info.tsx?dda7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-add-customer-requisition-info.tsx?b5a7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-add-note-info.tsx?7024","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-show-contact-info.tsx?e9b5","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-show-customer-reference-info.tsx?025f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-show-customer-requisition-info.tsx?85d3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-guest-profile/components/get-show-note-info.tsx?44a0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/checkout-pickup.tsx?28aa","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/checkout-pickup.view.tsx?d64e","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-group.tsx?9de7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-utility.ts?b7eb","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-date-dropdown.tsx?e5a3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-timeslot-dropdown.tsx?aef8","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx?9243","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.tsx?26e8","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.check-box.tsx?3b17","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-message.tsx?c6a5","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-title.tsx?f908","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/checkout.ts?7b6b"],"sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult, CardPaymentAcceptPoint\n} from '@msdyn365-commerce/retail-proxy';\n\nexport enum ApplePayButtonState {\n Unknown,\n NotAvailable,\n Available\n};\n\n/**\n * Interface for checkout apple pay data.\n */\nexport interface ICheckoutApplePayData {\n checkout?: AsyncResult;\n cardPaymentAcceptPoint?: AsyncResult;\n}","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { getCheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getDeliveryOptionsAsync,\n retrieveCardPaymentAcceptResultAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n CardPaymentAcceptResult,\n Cart,\n FilterDeliveryModeOption\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { CardPaymentAcceptPoint } from '@msdyn365-commerce/retail-proxy';\nimport { EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { computed } from 'mobx';\nimport { ObjectExtensions, QueryResultSettingsProxy, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ApplePayButtonState, ICheckoutApplePayData } from './checkout-apple-pay.data';\nimport { ICheckoutApplePayProps } from './checkout-apple-pay.props.autogenerated';\nimport { PlaceOrder } from '../../common/place-order';\nimport { ErrorComponent } from '../../common';\nimport { getThreeLetterCountryCode } from '../../common/country-codes';\n\nenum ApplePayPaymentAuthorizationResult {\n STATUS_SUCCESS = 0,\n STATUS_FAILURE = 1\n}\n\ninterface IApplePayLine {\n label: string;\n type: string;\n amount: string;\n}\n\ninterface IValidationEvent {\n validationUrl: string;\n}\n\ninterface IResult {\n newTotal: IApplePayLine;\n}\n\ninterface IAuthorizeEvent {\n paymentToken: string;\n shippingContact?: IShippingContactSelectedEvent;\n}\n\ninterface IAuthorizeResult {\n resultCode: ApplePayPaymentAuthorizationResult;\n}\n\ninterface IPaymentMethodEvent {\n type?: string;\n}\n\n/**\n * An interface that describes the shipping method for delivering physical goods.\n * Link to Apple doc - https://developer.apple.com/documentation/apple_pay_on_the_web/applepayshippingmethod\n */\ninterface IApplePayShippingMethod {\n /**\n * A short description of the shipping method.\n */\n label?: string;\n\n /**\n * The nonnegative cost associated with this shipping method.\n */\n amount?: string;\n\n /**\n * Additional description of the shipping method.\n */\n detail?: string;\n\n /**\n * A client-defined value used to identify this shipping method.\n */\n identifier?: string;\n}\n\n/**\n * Contact information fields to use for billing and shipping contact information.\n * Link to Apple doc - https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentcontact\n */\ninterface IShippingContactSelectedEvent {\n /**\n * A phone number for the contact.\n */\n phoneNumber?: string;\n\n /**\n * An email address for the contact.\n */\n emailAddress?: string;\n\n /**\n * The contact’s given name.\n */\n givenName?: string;\n\n /**\n * The contact’s family name.\n */\n familyName?: string;\n\n /**\n * The street portion of the address for the contact.\n */\n addressLines?: string[];\n\n /**\n * Additional information associated with the location, typically defined at the city or town level (such as district or neighborhood), in a postal address.\n */\n subLocality?: string;\n\n /**\n * The city for the contact.\n */\n locality?: string;\n\n /**\n * The zip code or postal code, where applicable, for the contact.\n */\n postalCode?: string;\n\n /**\n * The subAdministrative area (such as a county or other region) in a postal address.\n */\n subAdministrativeArea?: string;\n\n /**\n * The state for the contact.\n */\n administrativeArea?: string;\n\n /**\n * The name of the country or region for the contact.\n */\n country?: string;\n\n /**\n * The contact’s two-letter ISO 3166 country code.\n */\n countryCode?: string;\n}\n\ninterface IShippingMethodSelectedEvent {\n /**\n * The identifier of selected shipping method.\n */\n id: string;\n}\n\ninterface IAppleSessionHandler {\n onAuthorize(authorizeEvent: IAuthorizeEvent): Promise;\n onCancel(): void;\n onPaymentMethodUpdate(paymentMethodEvent: IPaymentMethodEvent): Promise;\n onValidation(validationEvent: IValidationEvent): Promise;\n\n onShippingContactSelected?(shippingContactSelectedEvent: IShippingContactSelectedEvent): Promise;\n onShippingMethodSelected?(shippingMethodSelectedEvent: IShippingMethodSelectedEvent): Promise;\n}\n\nexport interface ICheckoutApplePayViewProps extends ICheckoutApplePayProps<{}> {\n className?: string;\n checkoutApplePay: IModuleProps;\n applePayButton?: React.ReactNode;\n alert?: React.ReactNode;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const window: any;\n\nexport interface ICheckoutApplePayModuleProps extends ICheckoutApplePayProps {}\n\ninterface ICheckoutApplePayState {\n applePayButtonState: ApplePayButtonState;\n paymentConnectorId?: string;\n lineDisplayName?: string;\n errorMessage?: string;\n shippingContact?: Address;\n shippingMethodId?: string;\n}\n/**\n *\n * CheckoutApplePay component\n * @extends {React.Component}\n */\nexport class CheckoutApplePay extends React.Component {\n private readonly moduleClassName: string = 'ms-checkout-apple-pay';\n private readonly applePaySdkId = 'd365-apple-pay-sdk';\n private readonly zeroAmount: number = 0;\n\n @computed private get getLoyaltyAmount(): number {\n const {\n data: { checkout }\n } = this.props;\n const checkoutState = checkout?.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : this.zeroAmount;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const {\n data: { checkout }\n } = this.props;\n const checkoutState = checkout?.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return this.zeroAmount;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || this.zeroAmount);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const {\n data: { checkout }\n } = this.props;\n const checkoutState = checkout?.result;\n\n return checkoutState?.customerAccountAmount ?? this.zeroAmount;\n }\n\n @computed private get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n\n const cart = checkout?.result?.checkoutCart.cart;\n if (!cart || !cart.AmountDue) {\n return this.zeroAmount;\n }\n\n return Math.max(\n this.zeroAmount,\n cart.AmountDue - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount\n );\n }\n\n @computed private get merchantName(): string {\n return this.state.lineDisplayName || '';\n }\n\n public constructor(props: ICheckoutApplePayProps) {\n super(props);\n this.state = {\n applePayButtonState: ApplePayButtonState.Unknown\n };\n }\n\n public async componentDidMount() {\n const {\n data: { cardPaymentAcceptPoint },\n telemetry\n } = this.props;\n\n // load JS portion of payment connector for ApplePay\n await cardPaymentAcceptPoint;\n\n if (cardPaymentAcceptPoint?.result !== undefined) {\n this.loadPaymentConnectorSdk(cardPaymentAcceptPoint.result);\n\n // load official ApplePay JS SDK.\n const script = document.createElement('script');\n script.onload = () => {\n let isApplePayAvailable = false;\n if (typeof window.isApplePayAvailable === 'function') {\n isApplePayAvailable = window.isApplePayAvailable();\n }\n\n telemetry.information(`is Apple Pay available: ${isApplePayAvailable}`);\n return this.setState({\n applePayButtonState: isApplePayAvailable ? ApplePayButtonState.Available : ApplePayButtonState.NotAvailable,\n paymentConnectorId: cardPaymentAcceptPoint.result?.PaymentConnectorId\n });\n };\n\n script.src = 'https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js';\n script.async = false;\n script.onerror = () => telemetry.error('unable to load Apple Pay SDK');\n document.body.appendChild(script);\n } else {\n telemetry.error('unable to get Apple Pay connector SDK');\n }\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className },\n resources,\n telemetry\n } = this.props;\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n telemetry.information('isOBORequest is enabled, apple pay module wont render');\n return null;\n }\n\n let applePayButton: React.ReactNode;\n switch (this.state.applePayButtonState) {\n case ApplePayButtonState.Available:\n applePayButton = (\n
\n );\n break;\n\n case ApplePayButtonState.Unknown:\n case ApplePayButtonState.NotAvailable:\n default:\n applePayButton =
;\n break;\n }\n\n const viewProps: ICheckoutApplePayViewProps = {\n ...this.props,\n ...this.state,\n className,\n checkoutApplePay: {\n moduleProps: this.props,\n className: classNames(this.moduleClassName, className)\n },\n alert: this.state.errorMessage && (\n \n ),\n applePayButton\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handler for Apple Pay button.\n */\n public handlePayButton = async () => {\n const { config, resources, telemetry } = this.props;\n\n const handler: IAppleSessionHandler = {\n onAuthorize: this.authorizePayment,\n onCancel: this.cancelPayment,\n onPaymentMethodUpdate: this.updatePaymentMethod,\n onValidation: this.validateMerchant\n };\n\n // Set shipping related callbacks if corresponding options enabled.\n if (config.shouldRequestShippingAddress) {\n handler.onShippingContactSelected = this.shippingContactSelected;\n handler.onShippingMethodSelected = this.shippingMethodSelected;\n }\n\n try {\n // calling connector JS to create payment session.\n const displayName = window.CreateApplePaySession(handler, this.amountDue.toString());\n this.setState({\n lineDisplayName: displayName\n });\n } catch (error) {\n this.showErrorMessage(resources.genericErrorMessage);\n telemetry.error(`unable to create Apple Pay session: ${error}`);\n }\n };\n\n /**\n * Call CSU checkout API with Apple Pay token.\n * @param paymentToken {string} The gateway payment token\n */\n private checkout = async (paymentToken: string) => {\n const {\n data: { checkout },\n context: { actionContext }\n } = this.props;\n const { paymentConnectorId } = this.state;\n\n const checkoutState = await getCheckoutState(actionContext);\n const cartState = checkoutState.checkoutCart;\n\n const channelConfiguration = actionContext.requestContext.channel;\n if (!channelConfiguration) {\n throw new Error('unable to get channel configuration');\n }\n\n if (checkout !== null) {\n const cardPaymentAcceptResult: CardPaymentAcceptResult = {\n AccessCode: paymentToken,\n Settings: {\n PaymentConnectorId: paymentConnectorId\n }\n };\n\n await checkout?.result?.updateCardPaymentAcceptResult({ newCardPaymentAcceptResult: cardPaymentAcceptResult });\n await PlaceOrder(\n actionContext,\n checkoutState,\n undefined, // orderedProducts\n true, // redirect,\n cartState.cart.Version,\n false // isPaymentVerificationRedirection\n );\n }\n };\n\n /**\n * Load JS SDK from payment connector.\n * @param cardPaymentAcceptPoint {CardPaymentAcceptPoint} The card payment accept point object from CSU.\n */\n private loadPaymentConnectorSdk = (cardPaymentAcceptPoint: CardPaymentAcceptPoint) => {\n if (!cardPaymentAcceptPoint.AcceptPageContent) {\n this.props.telemetry.error(`Card payment accept page content can't be null or empty`);\n return;\n }\n\n const connectorSdk: string = cardPaymentAcceptPoint.AcceptPageContent || '';\n const sdk = document.createElement('script');\n sdk.id = this.applePaySdkId;\n sdk.type = 'text/javascript';\n sdk.appendChild(document.createTextNode(connectorSdk));\n document.body.appendChild(sdk);\n };\n\n /**\n * Validate Apple Pay merchant account with gateway.\n * @param validationEvent {IValidationEvent} The object containing merchant validation data.\n * @returns The response from CSU with validated data.\n */\n private validateMerchant = async (validationEvent: IValidationEvent): Promise => {\n const {\n data: { checkout, cardPaymentAcceptPoint },\n resources,\n telemetry\n } = this.props;\n\n telemetry.information('starting merchant validation for Apple Pay');\n const validationUrl = validationEvent?.validationUrl || '';\n if (!validationUrl) {\n telemetry.error(`Apple Pay validation failed: url can't be null or empty`);\n return Promise.reject('Validation url can not be null or empty');\n }\n\n const cartId = checkout?.result?.checkoutCart.cart.Id || '';\n if (!cartId) {\n telemetry.error(`Apple Pay validation failed: cart can't be null or empty`);\n return Promise.reject('Cart identifier can not be null or empty');\n }\n\n const paymentConnectorId = cardPaymentAcceptPoint?.result?.PaymentConnectorId || '';\n if (!paymentConnectorId) {\n telemetry.error(`Apple Pay validation failed: payment connector identifier can't be null or empty`);\n return Promise.reject('Connector identifier can not be null or empty');\n }\n\n const validationObject = {\n domainName: window.location.hostname,\n validationUrl: validationUrl\n };\n const validationBody = JSON.stringify(validationObject);\n const validationData = await retrieveCardPaymentAcceptResultAsync(\n { callerContext: this.props.context.actionContext },\n btoa(validationBody),\n [],\n cartId,\n { PaymentConnectorId: paymentConnectorId }\n ).catch(error => {\n this.showErrorMessage(resources.genericErrorMessage);\n telemetry.error(`Apple Pay validation failed: ${error}`);\n return Promise.reject(error);\n });\n\n telemetry.information('merchant validation for Apple Pay completed');\n return Promise.resolve(JSON.stringify(validationData));\n };\n\n /**\n * Authorize Apple Pay token by calling checkout API.\n * @param authorizeEvent {IAuthorizeEvent} The object containing authorization information.\n * @returns The authorization result.\n */\n private authorizePayment = async (authorizeEvent: IAuthorizeEvent): Promise => {\n const { resources, telemetry } = this.props;\n\n telemetry.information('starting authorization for Apple Pay');\n try {\n await this.updateContactInfo(authorizeEvent.shippingContact);\n await this.checkout(btoa(JSON.stringify(authorizeEvent)));\n telemetry.information('Apple Pay authorization completed');\n return Promise.resolve({ resultCode: ApplePayPaymentAuthorizationResult.STATUS_SUCCESS });\n } catch (error) {\n this.showErrorMessage(resources.genericErrorMessage);\n telemetry.error(`Apple Pay authorization failed: ${error as string}`);\n return Promise.reject(error as string);\n }\n };\n\n /**\n * Callback to notify Apple Pay sheet was closed/canceled.\n */\n private cancelPayment = (): void => {\n this.props.telemetry.information('Apple Pay popup canceled');\n };\n\n /**\n * The callback for Apple Pay payment method confirmation.\n * @param paymentMethodEvent {IPaymentMethodEvent} The payment method event object.\n * @returns The transaction result object.\n */\n private updatePaymentMethod = async (paymentMethodEvent: IPaymentMethodEvent): Promise => {\n return Promise.resolve({\n newTotal: {\n label: this.merchantName,\n type: 'final',\n amount: `${this.amountDue}`\n }\n });\n };\n\n /**\n * The callback for Apple Pay shipping contact confirmation.\n * @param shippingContact {IShippingContactSelectedEvent} The shipping contact event object.\n * @returns The transaction result object.\n */\n private shippingContactSelected = async (shippingContact: IShippingContactSelectedEvent): Promise => {\n const { resources, telemetry } = this.props;\n\n // construct Address object from Apple Pay shipping contact.\n const shippingAddress: Address = this.getAddressFromShippingContact(shippingContact);\n const shippingMethods = await this.getShippingMethods(shippingAddress);\n if (ObjectExtensions.isNullOrUndefined(shippingMethods) || shippingMethods.length === 0) {\n return Promise.reject();\n }\n\n try {\n const shippingMethodId = shippingMethods.at(0)?.identifier || '';\n await this.updateShippingInfo(shippingMethodId, shippingAddress);\n\n // save shipping contact to update shipping method later.\n this.setState({\n shippingContact: shippingAddress,\n shippingMethodId: shippingMethodId\n });\n } catch (e) {\n telemetry.error(`unable to update shipping info after shipping method change: ${e}`);\n this.showErrorMessage(resources.genericErrorMessage);\n }\n\n return Promise.resolve({\n newShippingMethods: shippingMethods,\n newTotal: {\n label: this.merchantName,\n type: 'final',\n amount: `${this.amountDue}`\n }\n });\n };\n\n /**\n * The callback for Apple Pay shipping method confirmation.\n * @param shippingMethodSelectedEvent {IShippingMethodSelectedEvent} The shipping method event object.\n * @returns The transaction result object.\n */\n private shippingMethodSelected = async (shippingMethod: IShippingMethodSelectedEvent): Promise => {\n const { resources, telemetry } = this.props;\n\n try {\n await this.updateShippingInfo(shippingMethod.id, this.state.shippingContact);\n\n // save selected shipping method.\n this.setState({ shippingMethodId: shippingMethod.id });\n } catch (e) {\n telemetry.error(`unable to update address after shipping method change: ${e}`);\n this.showErrorMessage(resources.genericErrorMessage);\n }\n\n return Promise.resolve({\n newTotal: {\n label: this.merchantName,\n type: 'final',\n amount: `${this.amountDue}`\n }\n });\n };\n\n /**\n * Helper function to obtain shipping methods available for Apple contact address.\n * @param address {Address} The shipping address.\n * @returns The cart delivery options.\n */\n private getShippingMethods = async (address: Address): Promise => {\n const {\n context: { actionContext },\n data: { checkout },\n telemetry\n } = this.props;\n\n const cartId = (checkout?.result?.checkoutCart?.cart as Cart).Id;\n const deliveryOptionFilter: FilterDeliveryModeOption = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n const appleDeliveryOptions: IApplePayShippingMethod[] = [];\n try {\n const deliveryOptions = await getDeliveryOptionsAsync(\n {\n callerContext: actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(actionContext)\n },\n cartId,\n address,\n [],\n deliveryOptionFilter,\n false\n );\n deliveryOptions.forEach(element =>\n appleDeliveryOptions.push({\n label: element.Description,\n amount: `${element.ShippingChargeAmount}`,\n detail: element.Description,\n identifier: element.Code\n })\n );\n } catch (e) {\n telemetry.error('unable to get delivery options for Apple Pay contact');\n }\n\n return appleDeliveryOptions;\n };\n\n /**\n * Helper function to convert Apple Pay shipping contact into Address object.\n * @param shippingContact {IShippingContactSelectedEvent} The shipping contact provided by Apple Pay SDK.\n * @returns The Address object.\n */\n private getAddressFromShippingContact = (shippingContact: IShippingContactSelectedEvent) => {\n const shippingAddress: Address = {\n ThreeLetterISORegionName: getThreeLetterCountryCode(shippingContact?.countryCode || ''),\n Name: this.getContactName(shippingContact),\n Street: shippingContact?.addressLines?.at(0),\n StreetNumber: shippingContact?.addressLines?.at(1),\n City: shippingContact?.locality,\n State: shippingContact?.administrativeArea,\n ZipCode: shippingContact?.postalCode\n };\n\n return shippingAddress;\n };\n\n /**\n * Helper function to return formatted contact name.\n * @param shippingContact {IShippingContactSelectedEvent} The shipping contact provided by Apple Pay SDK.\n * @returns The formatted contact name, i.e. 'Test User', 'Test', 'User' or empty string if both given and family names are missing.\n */\n private getContactName = (shippingContact: IShippingContactSelectedEvent) => {\n const givenName = shippingContact?.givenName || '';\n const familyName = shippingContact?.familyName || '';\n return `${givenName}${\n StringExtensions.isNullOrWhitespace(givenName) || StringExtensions.isNullOrWhitespace(familyName) ? '' : ' '\n }${familyName}`;\n };\n\n private updateContactInfo = async (shippingContact?: IShippingContactSelectedEvent) => {\n const {\n data: { checkout },\n telemetry\n } = this.props;\n\n if (shippingContact) {\n const shippingAddress: Address = this.getAddressFromShippingContact(shippingContact);\n const shippingMethodId = this.state.shippingMethodId || '';\n await this.updateShippingInfo(shippingMethodId, shippingAddress);\n const newGuestCheckoutEmail = shippingContact.emailAddress || '';\n if (!StringExtensions.isNullOrWhitespace(newGuestCheckoutEmail)) {\n await checkout?.result?.updateGuestCheckoutEmail({ newGuestCheckoutEmail });\n } else {\n telemetry.warning('email address missing in shipping contact from Apple');\n }\n } else {\n telemetry.information('no shipping information provided');\n }\n };\n\n /**\n * Update shipping information on cart.\n * @param shippingMethodId {string} The identifier for shipping method.\n * @param shippingAddress {Address} The shipping address.\n */\n private updateShippingInfo = async (shippingMethodId: string, shippingAddress?: Address) => {\n const {\n data: { checkout }\n } = this.props;\n\n const updateCartDeliverySpecificationInput = {\n deliveryModeId: shippingMethodId,\n shippingAddress: shippingAddress\n };\n\n const result = await checkout?.result?.checkoutCart.updateCartDeliverySpecification(updateCartDeliverySpecificationInput);\n if (result?.status !== 'SUCCESS') {\n throw new Error(result?.errorDetails?.LocalizedMessage);\n }\n };\n\n /**\n * Shows error message on screen next to Apple Pay button.\n * @param message {string} The error message to show.\n */\n private showErrorMessage = (message: string) => {\n this.setState({\n errorMessage: message\n });\n };\n}\n\nexport default CheckoutApplePay;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateManager, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentData } from './checkout-customer-account-payment.data';\nimport { ICheckoutCustomerAccountPaymentProps } from './checkout-customer-account-payment.props.autogenerated';\nimport { getAccountPaymentFormEditMode, IAccountPaymentEditViewForm } from './components/get-account-payment-form-edit-mode';\nimport { getAccountPaymentFormSummaryMode, IAccountPaymentSummaryViewForm } from './components/get-account-payment-form-summary-mode';\nimport { ErrorComponent } from '../../common/error';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutCustomerAccountPaymentViewProps\n extends ICheckoutCustomerAccountPaymentProps {\n checkoutCustomerAccount: IModuleProps;\n summaryView: IAccountPaymentSummaryViewForm;\n editView: IAccountPaymentEditViewForm;\n moduleState: IModuleStateManager;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\nexport interface ICheckoutCustomerAccountPaymentState {\n paymentAmount: number;\n isCreditSectionExpanded: boolean;\n customizedAmt: string;\n amountVariable: string;\n errorMessage?: string;\n handleSaveAndContinue?: boolean;\n}\n\n/**\n *\n * CheckoutCustomerAccount component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nexport class CheckoutCustomerAccountPayment extends React.Component<\n ICheckoutCustomerAccountPaymentViewProps,\n ICheckoutCustomerAccountPaymentState\n> {\n private readonly defaultLocale: string = 'en-us';\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerInfo = get(this.props, 'data.customerInformation.result');\n const request = get(this.props, 'context.request');\n const b2bChannel = isChannelTypeB2B(request);\n const platform = get(this.props, 'context.request.app.platform');\n\n return (\n customerInfo &&\n customerInfo.AllowOnAccountPayment === true &&\n platform &&\n (platform.enableCustomerAccountPayment === 'all' ||\n (platform.enableCustomerAccountPayment === 'b2b' && b2bChannel) ||\n (platform.enableCustomerAccountPayment === 'b2c' && !b2bChannel))\n );\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get maxPaymentAmount(): number {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return 0;\n }\n\n // Use customer account after loyalty.\n const amountDue = Math.max(0, (cart.TotalAmount || 0) - this.getLoyaltyAmount);\n\n // If the user has a mandatory credit limit, then the max amount must not be more than that\n if (this.props.data.customerInformation?.result?.MandatoryCreditLimit) {\n return Math.min(this.getAvailableCredit(this.props.data.creditBalances?.result), amountDue);\n }\n return amountDue;\n }\n\n @computed get errorMessage(): string | undefined {\n if (this.state.paymentAmount > this.maxPaymentAmount) {\n return this.props.resources.invalidAmountExceedAmountDueMessage;\n }\n\n if (this.state.paymentAmount < 0) {\n return this.props.resources.invalidAmountNegativeMessage;\n }\n\n return undefined;\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n @computed get availableCredit(): number {\n const creditBalances = get(this.props, 'data.creditBalances.result');\n\n return creditBalances ? this.getAvailableCredit(creditBalances) : 0;\n }\n\n @computed get orderTotal(): number {\n const orderTotal = get(this.props, 'data.checkout.result.checkoutCart.cart.TotalAmount');\n\n return orderTotal ? orderTotal : 0;\n }\n\n @computed get formattedExcessCredit(): string | undefined {\n const excessCredit = this.availableCredit - this.orderTotal;\n return excessCredit < 0 ? this.props.context.cultureFormatter.formatCurrency(excessCredit, this.currencyCode) : undefined;\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n private readonly baseClassName: string = 'ms-checkout-customer-account';\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutCustomerAccountPaymentViewProps) {\n super(props);\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\n this.state = {\n paymentAmount: this.maxPaymentAmount,\n isCreditSectionExpanded: false,\n customizedAmt: new Intl.NumberFormat(locale).format(this.maxPaymentAmount),\n amountVariable: this.maxPaymentAmount.toString(),\n handleSaveAndContinue: false\n };\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n // When the cart.TotalAmount gets updated (like if selecting the delivery option adds a charge) we need to update the amount based on the new total amount.\n reaction(\n () =>\n this.props.data.checkout.result &&\n this.props.data.checkout.result.checkoutCart.cart &&\n this.props.data.checkout.result.checkoutCart.cart.TotalAmount,\n totalAmount => {\n this.updateMaxAmount(this.maxPaymentAmount);\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutCustomerAccountPayment &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutCustomerAccountPayment) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutCustomerAccountPaymentProps,\n nextState: ICheckoutCustomerAccountPaymentState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const customerInfo = this.props.data.customerInformation?.result;\n\n if (!this.isCustomerAccountPaymentEnabled) {\n this.props.context.telemetry.information(\n 'customer account payments will not display, because the feature is disabled or not enabled for this type of customer'\n );\n return null;\n }\n\n const checkoutState = this.props.data.checkout.result;\n const cart = checkoutState ? checkoutState.checkoutCart.cart : undefined;\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n const creditBalances = this.props.data.creditBalances.result;\n\n if (!cart || hasInvoiceLine) {\n return null;\n }\n const resources = this.props.resources;\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\n\n const customerSinceDate = new Date(customerInfo?.CreatedDateTime || 0).toLocaleDateString(locale);\n\n const hasError = this.props.moduleState.hasError;\n const errorMessage = this.state.errorMessage;\n\n const props = {\n ...this.props,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCustomerAccount: {\n moduleProps: this.props,\n className: classnames(this.baseClassName)\n },\n alert: hasError && errorMessage && (\n \n ),\n editView: getAccountPaymentFormEditMode({\n onAddPayment: this.addPayment,\n resources,\n customizedAmt: this.state.customizedAmt,\n amountVariable: this.state.amountVariable,\n amount: this.state.paymentAmount,\n onChangePaymentAmount: this.onChangePaymentAmount,\n maxAmount: this.maxPaymentAmount,\n customer: customerInfo,\n customerCreatedDate: customerSinceDate,\n availableCredit: this.props.context.cultureFormatter.formatCurrency(\n this.getAvailableCredit(creditBalances),\n this.currencyCode\n ),\n showCreditLimit: customerInfo?.MandatoryCreditLimit || false,\n errorMessage: this.errorMessage,\n onToggleCreditSection: this.toggleCreditSection,\n creditSectionIsExpanded: this.state.isCreditSectionExpanded,\n orderTotal: this.props.context.cultureFormatter.formatCurrency(this.orderTotal, this.currencyCode),\n excessCredit: this.formattedExcessCredit,\n onRemovePayment: this.removePayment,\n appliedAmount:\n checkoutState && checkoutState.customerAccountAmount > 0\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\n : undefined,\n locale:\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : this.defaultLocale,\n skipOnChangeLogic: this.props.context.request.features?.skipCheckoutOnChangeLogic\n }),\n summaryView: getAccountPaymentFormSummaryMode({\n resources,\n amount: this.state.paymentAmount,\n appliedAmount:\n checkoutState && checkoutState.customerAccountAmount > 0\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\n : undefined\n })\n };\n\n return this.props.renderView(props) as React.ReactElement;\n }\n\n private readonly getAvailableCredit = (creditBalances: CustomerBalances | undefined) => {\n let availableCredit = 0;\n\n if (!creditBalances) {\n return 0;\n }\n\n if (creditBalances.InvoiceAccountCreditLimit === 0) {\n availableCredit = creditBalances.CreditLimit - creditBalances.Balance - creditBalances.PendingBalance;\n } else {\n availableCredit =\n creditBalances.InvoiceAccountCreditLimit -\n creditBalances.InvoiceAccountBalance -\n creditBalances.InvoiceAccountPendingBalance;\n }\n\n return availableCredit;\n };\n\n private readonly addPayment = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n this.props.context.telemetry.error('checkout state not found');\n return;\n }\n\n this.setState({ handleSaveAndContinue: true });\n this._clearError();\n await checkoutState.updateCustomerAccountAmount({ newAmount: this.state.paymentAmount });\n this.props.context.telemetry.information('customer account payment amount updated');\n };\n\n private readonly toggleCreditSection = (): void => {\n this.setState({\n isCreditSectionExpanded: !this.state.isCreditSectionExpanded\n });\n };\n\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onCancel: this.handleCancelOrSubmit,\n onSubmit: this.handleCancelOrSubmit,\n onEdit: this.onEdit\n });\n\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount !== 0) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onChangePaymentAmount = (customizedAmt: string, paymentAmount: number, amountVariable: string): void => {\n this.setState({\n customizedAmt: customizedAmt,\n paymentAmount: paymentAmount,\n amountVariable: amountVariable\n });\n };\n\n private readonly updateMaxAmount = (newAmount: number): void => {\n // If the user has already set an amount, we should not override that in the UI because it will be confusing.\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount === 0) {\n this.setState({\n // We should never allow a negative amount.\n paymentAmount: Math.max(0, newAmount),\n customizedAmt: Math.max(0, newAmount).toString()\n });\n }\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section customer account payment onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly handleCancelOrSubmit = () => {\n const checkoutState = this.props.data.checkout.result;\n if (checkoutState && checkoutState.customerAccountAmount > 0) {\n this.setState({ handleSaveAndContinue: false });\n this.props.telemetry.information('Payment section customer account payment onSubmit is called.');\n\n if (\n Msdyn365.isOboRequest(this.props.context.request) &&\n checkoutState?.customerAccountAmount !== checkoutState?.checkoutCart.cart.TotalAmount\n ) {\n this._setErrorMessage(this.props.resources.invalidAmountForOBOMessage);\n } else {\n this.props.moduleState.onReady();\n }\n } else if (\n checkoutState?.customerAccountAmount === 0 &&\n !this.state.handleSaveAndContinue &&\n this.props.config.isCheckoutCustomerAccountPaymentRequired\n ) {\n this._setErrorMessage(this.props.resources.customerAccountCreditErrorMessage);\n } else {\n this.props.telemetry.information('Payment section customer account payment onCancel is called.');\n\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly removePayment = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n this.props.context.telemetry.error('checkout state not found');\n return;\n }\n\n this.setState({\n paymentAmount: 0\n });\n\n this.onChangePaymentAmount('', NaN, '0');\n\n this._clearError();\n await checkoutState.updateCustomerAccountAmount({ newAmount: 0 });\n this.props.context.telemetry.information('customer account payment removed');\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutCustomerAccountPayment;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { Alert, Button, INodeProps, NodeTag, getLocaleBasedCustomizedPrice, ILocalizedPrice } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentResources } from '../checkout-customer-account-payment.props.autogenerated';\n\nexport interface IGetAccountPaymentEditViewFormInput {\n resources: ICheckoutCustomerAccountPaymentResources;\n customizedAmt: string;\n amount: number;\n amountVariable: string;\n maxAmount: number;\n customer: Customer | undefined;\n customerCreatedDate: string;\n availableCredit: string;\n showCreditLimit: boolean;\n errorMessage: string | undefined;\n creditSectionIsExpanded: boolean;\n orderTotal: string;\n excessCredit: string | undefined;\n appliedAmount: string | undefined;\n locale: string;\n onAddPayment(): Promise;\n onChangePaymentAmount(customizedAmt: string, paymentAmount: number, amountVariable: string): void;\n onToggleCreditSection(): void;\n onRemovePayment(): Promise;\n skipOnChangeLogic?: boolean;\n}\n\nexport interface IAccountPaymentEditViewForm {\n formProps: INodeProps;\n inputLabel: React.ReactNode;\n inputAmount: React.ReactNode;\n addPaymentButton: React.ReactNode;\n customerName: React.ReactNode;\n customerAccountNumber: React.ReactNode;\n customerSince: React.ReactNode;\n accountCredit: React.ReactNode;\n alert: React.ReactNode;\n accountDetails: React.ReactNode;\n appliedLine: React.ReactNode;\n bottomBorder: React.ReactNode;\n}\n\n/**\n * On Add Account Payment Function.\n * @param onAddPayment -On Add Payment Function.\n * @returns Call of Add payment function.\n */\nconst onAddAccountPayment = (onAddPayment: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onAddPayment();\n};\n\n/**\n * On Change Amount Function.\n * @param onChangePaymentAmount -On Change Payment Amount Function.\n * @returns Call of Change payment Amount function.\n */\nconst onChangeAmountHandler = (\n customizedAmt: string,\n paymentAmount: number,\n amountVariable: string,\n locale: string,\n onChangePaymentAmount: (customizedAmt: string, paymentAmount: number, amountVariable: string) => void\n) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const customState: ILocalizedPrice = {\n customizedAmount: customizedAmt,\n amountVariable: amountVariable,\n paymentAmount: paymentAmount\n };\n const returnModifiedState = getLocaleBasedCustomizedPrice(value, customState, locale, keyCode);\n customizedAmt = returnModifiedState.customizedAmount as string;\n paymentAmount = returnModifiedState.paymentAmount as number;\n amountVariable = returnModifiedState.amountVariable as string;\n onChangePaymentAmount(customizedAmt, paymentAmount, amountVariable);\n keyCode = 0;\n};\n\nlet keyCode: number = 0;\nexport const getAccountPaymentFormEditMode = (options: IGetAccountPaymentEditViewFormInput): IAccountPaymentEditViewForm => {\n const {\n resources,\n onAddPayment,\n amount,\n customizedAmt,\n amountVariable,\n onChangePaymentAmount,\n maxAmount,\n customer,\n customerCreatedDate,\n availableCredit,\n showCreditLimit,\n errorMessage,\n onToggleCreditSection,\n creditSectionIsExpanded,\n orderTotal,\n excessCredit,\n onRemovePayment,\n appliedAmount,\n locale,\n skipOnChangeLogic\n } = options;\n\n const {\n addPaymentButtonLabel,\n inputAmountLabel,\n inputAmountAriaLabel,\n customerSinceLabel,\n accountCreditLabel,\n creditDetailsSectionLabel,\n orderTotalLabel,\n availableCreditLabel,\n creditExcessLabel,\n appliedCustomerAccountPaymentLabel,\n removeCustomerAccountPaymentLabel,\n accountCreditDetails\n } = resources;\n\n const inputLabel = (\n \n {inputAmountLabel}\n \n );\n\n const formProps = {\n className: 'ms-checkout-customer-account__form-edit',\n onSubmit: onAddAccountPayment(onAddPayment),\n tag: 'form' as NodeTag\n };\n\n const addPaymentButton = (\n maxAmount || amount < 0 || Number.isNaN(amount)}\n >\n {addPaymentButtonLabel}\n \n );\n\n const inputAmount = (\n onChangePaymentAmount(value, Number(value), value)\n : onChangeAmountHandler(customizedAmt, amount, amountVariable, locale, onChangePaymentAmount)\n }\n onKeyDown={event => (keyCode = event.which)}\n aria-label={inputAmountAriaLabel}\n aria-valuemin={0}\n aria-valuemax={maxAmount}\n aria-valuenow={amount}\n min={0}\n max={maxAmount}\n />\n );\n\n const customerName =
{customer?.Name}
;\n\n const customerAccountNumber =
#{customer?.AccountNumber}
;\n\n const customerSince = (\n
\n {customerSinceLabel}\n {customerCreatedDate}\n
\n );\n\n const accountCredit = (\n <>\n {accountCreditLabel}\n {showCreditLimit && {availableCredit}}\n \n \n );\n\n const accountDetails = creditSectionIsExpanded ? (\n
\n <>\n
\n \n \n {creditDetailsSectionLabel}\n \n
\n \n
\n {availableCreditLabel}\n {availableCredit}\n
\n
\n {orderTotalLabel}\n {orderTotal}\n
\n
\n {creditExcessLabel}\n {excessCredit ?? '0'}\n
\n
\n ) : (\n undefined\n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const appliedLine = appliedAmount ? (\n
\n {appliedCustomerAccountPaymentLabel}\n {appliedAmount}\n \n {removeCustomerAccountPaymentLabel}\n \n
\n ) : (\n undefined\n );\n\n const bottomBorder =
;\n\n return {\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentResources } from '../checkout-customer-account-payment.props.autogenerated';\n\nexport interface IGetAccountPaymentSummaryViewFormInput {\n resources: ICheckoutCustomerAccountPaymentResources;\n amount: number;\n appliedAmount: string | undefined;\n}\n\nexport interface IAccountPaymentSummaryViewForm {\n formProps: INodeProps;\n label: React.ReactNode;\n paymentAmount: React.ReactNode;\n addPaymentButton: React.ReactNode;\n appliedLine: React.ReactNode;\n bottomBorder: React.ReactNode;\n alert?: React.ReactNode;\n paymentAmountInput?: React.ReactNode;\n}\n\nexport const getAccountPaymentFormSummaryMode = (options: IGetAccountPaymentSummaryViewFormInput): IAccountPaymentSummaryViewForm => {\n const { resources, amount, appliedAmount } = options;\n\n const { addPaymentButtonLabel, inputAmountSummaryLabel, appliedCustomerAccountPaymentLabel, inputAmountAriaLabel } = resources;\n\n const label = (\n \n );\n\n const formProps = {\n className: 'ms-checkout-customer-account__form-summary',\n tag: 'form' as NodeTag\n };\n\n const paymentAmount = ;\n\n const paymentAmountInput = (\n \n );\n\n const addPaymentButton = (\n \n );\n\n const appliedLine = appliedAmount ? (\n
\n {appliedCustomerAccountPaymentLabel}\n {appliedAmount}\n
\n ) : (\n undefined\n );\n\n const bottomBorder =
;\n\n return {\n formProps,\n label,\n paymentAmount,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { ICheckoutGiftCardData } from './checkout-gift-card.data';\nimport { ICheckoutGiftCardProps } from './checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICheckoutGiftCardProps, IModuleStateProps {}\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n checkoutErrorRef?: React.RefObject;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGiftCard && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGiftCard) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps, nextState: ICheckoutGiftCardState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.GiftCard === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout gift card module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n checkoutErrorRef: this.checkoutErrorRef,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady\n ? {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined,\n addGiftCard: !isReady\n ? {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart?.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section gift card onEdit is called.');\n\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Payment section gift card onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.props.telemetry.information('Payment section gift card onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n this.props.telemetry.information('Payment section gift card remove is called.');\n\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n this.props.telemetry.information('Payment section gift card apply is called.');\n\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({\n giftCard,\n additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId }\n });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n this.props.telemetry.information('Payment section fetching gift card is failed.');\n };\n\n private readonly findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './checkout-gift-card';\n\nexport const From: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, checkoutErrorRef, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: {\n applyGiftCardButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {` `}\n {balance}\n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard =>\n getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ;\n\nexport default GiftCardTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport { EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { computed, reaction } from 'mobx';\nimport { CardPaymentAcceptPoint, CardPaymentAcceptResult } from '@msdyn365-commerce/retail-proxy';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ICheckoutGooglePayProps } from './checkout-google-pay.props.autogenerated';\nimport { ICheckoutGooglePayData } from './checkout-google-pay.data';\nimport { GetCardPaymentAcceptPointInput, getCardPaymentAcceptPointAction } from '../checkout-payment-instrument';\nimport { IPaymentAuthorizationResult, IPaymentData, IPaymentsError, ITransactionInfo } from './checkout-google-pay.model';\nimport { GetCheckoutReturnUrl } from '../../common';\n\nexport interface ICheckoutGooglePayViewProps extends ICheckoutGooglePayProps<{}> {\n alert?: React.ReactNode;\n className?: string;\n checkoutButton?: HTMLDivElement;\n checkoutGooglePay: IModuleProps;\n}\n\nexport interface ICheckoutGooglePayModuleProps extends ICheckoutGooglePayProps {}\n\nexport enum GooglePayButtonState {\n Unknown,\n NotAvailable,\n Available\n}\n\ninterface IMerchantConfiguration {\n adyenMerchantId?: string;\n googleMerchantId?: string;\n currencyCode?: string;\n environment?: string;\n connectorId?: string;\n}\n\ninterface ICheckoutGooglePayState {\n buttonState: GooglePayButtonState;\n merchantConfiguration?: IMerchantConfiguration;\n errorMessage?: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const window: any;\n\n/**\n *\n * CheckoutGooglePay component\n * @extends {React.Component}\n */\nexport class CheckoutGooglePay extends React.Component {\n private readonly moduleClassName: string = 'ms-checkout-google-pay';\n private readonly zeroAmount: number = 0;\n\n private readonly baseRequest = {\n apiVersion: 2,\n apiVersionMinor: 0\n };\n\n private readonly allowedCardNetworks = ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'];\n private readonly allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS'];\n\n private readonly baseCardPaymentMethod = {\n type: 'CARD',\n parameters: {\n allowedAuthMethods: this.allowedCardAuthMethods,\n allowedCardNetworks: this.allowedCardNetworks\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private paymentsClient: any = null;\n private googlePayButton: HTMLDivElement = document.createElement('div');\n\n @computed private get getLoyaltyAmount(): number {\n const {\n data: { checkout }\n } = this.props;\n const checkoutState = checkout?.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : this.zeroAmount;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const {\n data: { checkout }\n } = this.props;\n const checkoutState = checkout?.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return this.zeroAmount;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || this.zeroAmount);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const {\n data: { checkout }\n } = this.props;\n const checkoutState = checkout?.result;\n\n return checkoutState?.customerAccountAmount ?? this.zeroAmount;\n }\n\n @computed private get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n\n const cart = checkout?.result?.checkoutCart.cart;\n if (!cart || !cart.AmountDue) {\n return this.zeroAmount;\n }\n\n return Math.max(\n this.zeroAmount,\n cart.AmountDue - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount\n );\n }\n\n @computed private get googleClient() {\n if (this.paymentsClient === null || this.paymentsClient === undefined) {\n const { merchantConfiguration } = this.state;\n const clientRequest = {\n environment: merchantConfiguration?.environment,\n paymentDataCallbacks: {\n onPaymentAuthorized: this.onPaymentAuthorized\n }\n };\n\n this.paymentsClient = new window.google.payments.api.PaymentsClient(clientRequest);\n }\n\n return this.paymentsClient;\n }\n\n @computed private get transactionInfo(): ITransactionInfo {\n const { merchantConfiguration } = this.state;\n return {\n currencyCode: merchantConfiguration?.currencyCode || '',\n totalPriceStatus: 'ESTIMATED',\n totalPrice: `${this.amountDue}`\n };\n }\n\n @computed private get paymentDataRequest() {\n const { merchantConfiguration } = this.state;\n const cardPaymentMethod = {\n ...this.baseCardPaymentMethod,\n tokenizationSpecification: {\n type: 'PAYMENT_GATEWAY',\n parameters: {\n gateway: 'adyen',\n gatewayMerchantId: merchantConfiguration?.adyenMerchantId || ''\n }\n }\n };\n\n const callbackIntents: string[] = ['PAYMENT_AUTHORIZATION'];\n const paymentDataRequest = {\n ...this.baseRequest,\n allowedPaymentMethods: [cardPaymentMethod],\n transactionInfo: this.transactionInfo,\n merchantInfo: {\n merchantId: merchantConfiguration?.googleMerchantId || ''\n },\n callbackIntents: callbackIntents\n };\n\n return paymentDataRequest;\n }\n\n public constructor(props: ICheckoutGooglePayProps) {\n super(props);\n this.state = {\n buttonState: GooglePayButtonState.Unknown\n };\n }\n\n public async componentDidMount() {\n const {\n data: { checkout }\n } = this.props;\n\n reaction(\n () => checkout?.result?.redirectAdditionalContext && checkout?.result?.redirectPaymentConnectorId,\n async () => this.performRedirect()\n );\n\n reaction(\n () => checkout?.result?.isPaymentVerificationRedirection && checkout?.result?.isPlaceOrderEnabledInRedirection,\n async () => this.handlePaymentVerification()\n );\n\n await this.loadPaymentAcceptPage();\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className },\n telemetry\n } = this.props;\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n telemetry.information('isOBORequest is enabled, google pay module wont render');\n return null;\n }\n\n let checkoutButton: HTMLDivElement;\n switch (this.state.buttonState) {\n case GooglePayButtonState.Available:\n checkoutButton = this.googlePayButton;\n break;\n\n case GooglePayButtonState.NotAvailable:\n case GooglePayButtonState.Unknown:\n default:\n checkoutButton = document.createElement('div');\n }\n\n const viewProps: ICheckoutGooglePayViewProps = {\n ...this.props,\n ...this.state,\n className,\n checkoutGooglePay: {\n moduleProps: this.props,\n className: classNames(this.moduleClassName, className)\n },\n checkoutButton\n };\n\n return this.props.renderView(viewProps);\n }\n\n private async loadPaymentAcceptPage() {\n const {\n config,\n context: {\n actionContext,\n request: { apiSettings }\n },\n telemetry\n } = this.props;\n\n const input = {\n amountDue: this.amountDue,\n apiSettings,\n paymenTenderType: config.paymentTenderType\n };\n\n await getCardPaymentAcceptPointAction(new GetCardPaymentAcceptPointInput(input), actionContext)\n .then(paymentAcceptPoint => {\n const configuration = this.getMerchantConfiguration(paymentAcceptPoint);\n if (configuration) {\n this.setState({ merchantConfiguration: configuration });\n this.initialize();\n } else {\n telemetry.error('Unable to initialize Google Pay module');\n this.setState({ buttonState: GooglePayButtonState.NotAvailable });\n }\n })\n .catch((error: Error) => {\n telemetry.error(error.message);\n console.error(`[GooglePay] getCardPaymentAcceptPointAction failed: ${error.message}`);\n });\n }\n\n private getMerchantConfiguration(paymentAcceptPoint: CardPaymentAcceptPoint): IMerchantConfiguration | null {\n const { telemetry } = this.props;\n\n try {\n const configuration: IMerchantConfiguration = JSON.parse(paymentAcceptPoint?.AcceptPageContent || '');\n configuration.connectorId = paymentAcceptPoint?.PaymentConnectorId;\n\n if (StringExtensions.isNullOrWhitespace(configuration.adyenMerchantId)) {\n throw new Error('missing Adyen merchant account identifier');\n } else if (StringExtensions.isNullOrWhitespace(configuration.currencyCode)) {\n throw new Error('missing currency code');\n } else if (StringExtensions.isNullOrWhitespace(configuration.connectorId)) {\n throw new Error('missing connector identifier');\n } else if (StringExtensions.isNullOrWhitespace(configuration.environment)) {\n throw new Error('missing environment property');\n } else if (configuration.environment === 'PRODUCTION' && StringExtensions.isNullOrWhitespace(configuration.googleMerchantId)) {\n throw new Error('missing Google merchant account identifier');\n }\n\n return configuration;\n } catch (error) {\n telemetry.error(`Caught exception during parsing configuration: ${error}`);\n console.error(`[GooglePay] Caught exception during parsing configuration: ${error}`);\n }\n\n return null;\n }\n\n private initialize = () => {\n const { telemetry } = this.props;\n\n const script = document.createElement('script');\n script.onload = this.loadGoogleSdk;\n script.src = 'https://pay.google.com/gp/p/js/pay.js';\n script.async = true;\n script.onerror = () => telemetry.error('unable to load Google Pay SDK');\n document.body.appendChild(script);\n };\n\n /**\n * Load Google Pay JS SDK.\n */\n private loadGoogleSdk = async () => {\n const { telemetry } = this.props;\n const isReadyToPayRequest = {\n ...this.baseRequest,\n allowedPaymentMethods: [this.baseCardPaymentMethod]\n };\n\n let buttonState: GooglePayButtonState = GooglePayButtonState.NotAvailable;\n try {\n const isReadyToPay = await this.googleClient.isReadyToPay(isReadyToPayRequest);\n if (isReadyToPay?.result) {\n this.googlePayButton = this.googleClient.createButton({\n allowedPaymentMethods: [this.baseCardPaymentMethod],\n buttonColor: 'default',\n buttonType: 'buy',\n buttonSizeMode: 'fill',\n onClick: this.handlePayButton\n });\n\n buttonState = GooglePayButtonState.Available;\n } else {\n telemetry.error('[loadGoogleSdk] current browser does not support Google Pay');\n }\n } catch (error) {\n telemetry.error(`[loadGoogleSdk] unexpected error during loading sdk: ${error}`);\n }\n\n return this.setState({\n buttonState\n });\n };\n\n /**\n * Handler for Google Pay button.\n */\n private handlePayButton = () => {\n const { telemetry } = this.props;\n this.googleClient.loadPaymentData(this.paymentDataRequest).catch((error: IPaymentsError) => {\n if (error.statusCode === 'CANCELED') {\n telemetry.information('[CheckoutGooglePay::handlePayButton] popup was canceled');\n } else {\n telemetry.error(\n `[CheckoutGooglePay::handlePayButton] unable to complete Google transaction (${error.statusCode}): ${error.statusMessage}`\n );\n }\n });\n };\n\n private onPaymentAuthorized = async (paymentData: IPaymentData) => {\n const { resources } = this.props;\n let result: IPaymentAuthorizationResult;\n try {\n await this.processPayment(paymentData);\n result = {\n transactionState: 'SUCCESS'\n };\n } catch (e) {\n result = {\n transactionState: 'ERROR',\n error: {\n reason: 'PAYMENT_DATA_INVALID',\n message: resources.genericErrorMessage,\n intent: 'PAYMENT_AUTHORIZATION'\n }\n };\n }\n\n return new Promise((resolve, reject) => {\n resolve(result);\n });\n };\n\n /**\n * Process payment data in CSU.\n * @param paymentData The payment data from Google SDK.\n */\n private processPayment = async (paymentData: IPaymentData) => {\n const {\n data: { checkout },\n context: { actionContext }\n } = this.props;\n const { merchantConfiguration } = this.state;\n const paymentConnectorId: string = merchantConfiguration?.connectorId || '';\n const message = {\n paymentToken: paymentData.paymentMethodData.tokenizationData.token,\n browserInfo: {\n acceptHeader: '*/*',\n colorDepth: window.screen.colorDepth,\n language: window.navigator.language,\n javaEnabled: window.navigator.javaEnabled(),\n screenHeight: window.screen.height,\n screenWidth: window.screen.width,\n userAgent: window.navigator.userAgent,\n timeZoneOffset: new Date().getTimezoneOffset()\n }\n };\n\n const settings = {\n ReturnUrl: GetCheckoutReturnUrl(actionContext),\n ...(paymentConnectorId && { PaymentConnectorId: paymentConnectorId })\n };\n\n const cardPaymentAcceptResult: CardPaymentAcceptResult = {\n AccessCode: btoa(JSON.stringify(message)),\n Settings: settings\n };\n\n await checkout?.result?.updateCardPaymentAcceptResult({ newCardPaymentAcceptResult: cardPaymentAcceptResult });\n await checkout?.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: true });\n };\n\n /**\n * Perform redirect\n */\n private performRedirect = async () => {\n const {\n config,\n data: { checkout },\n telemetry\n } = this.props;\n\n const { merchantConfiguration } = this.state;\n const checkoutState = checkout?.result;\n\n if (\n !StringExtensions.isNullOrWhitespace(checkoutState?.redirectPaymentConnectorId) &&\n checkoutState?.redirectPaymentConnectorId === merchantConfiguration?.connectorId\n ) {\n let redirectInfo;\n try {\n redirectInfo = JSON.parse(checkoutState?.redirectAdditionalContext || '');\n } catch (error) {\n telemetry.error(`[CheckoutGooglePay::performRedirect] unable to parse additional context`);\n return;\n }\n\n await checkoutState?.updatePaymentTenderType({ newPaymentTenderType: config.paymentTenderType });\n await checkoutState?.saveDataInStorage({});\n await checkoutState?.updateIsPaymentVerificationRequired({ newIsPaymentVerificationRequired: true });\n\n const { url, data } = redirectInfo;\n const form = document.createElement('form');\n\n form.method = 'POST';\n form.action = url;\n\n for (const propertyName of Object.keys(data)) {\n const element = document.createElement('input');\n element.name = propertyName;\n element.value = data[propertyName];\n form.appendChild(element);\n }\n\n document.body.appendChild(form);\n form.submit();\n } else {\n telemetry.warning(`[CheckoutGooglePay::performRedirect] cannot perform redirect, connector id is not valid or matching`);\n }\n };\n\n /**\n * Handle redirect shopper bank institution.\n */\n private handlePaymentVerification = async () => {\n const {\n config,\n context: { actionContext },\n data: { checkout },\n telemetry\n } = this.props;\n\n const { merchantConfiguration } = this.state;\n const checkoutState = checkout?.result;\n\n if (\n !StringExtensions.isNullOrWhitespace(checkoutState?.paymentTenderType) &&\n checkoutState?.paymentTenderType === config.paymentTenderType\n ) {\n const { requestFormData, query } = this.props.context.request;\n const formData = btoa(JSON.stringify(requestFormData ?? { redirectResult: query?.redirectResult }));\n\n const settings = {\n ReturnUrl: GetCheckoutReturnUrl(actionContext),\n PaymentConnectorId: merchantConfiguration?.connectorId\n };\n\n const cardPaymentAcceptResult: CardPaymentAcceptResult = {\n AccessCode: formData,\n Settings: settings\n };\n\n await checkoutState?.updateCardPaymentAcceptResult({ newCardPaymentAcceptResult: cardPaymentAcceptResult });\n await checkoutState?.checkoutCart.refreshCart({});\n await checkoutState?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n await checkoutState?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: true });\n } else {\n telemetry.warning(\n `[CheckoutGooglePay::handlePaymentVerification] ignore payment verification, checkout tender type: '${checkoutState?.paymentTenderType}', config tender type: '${config.paymentTenderType}'`\n );\n }\n };\n}\n\nexport default CheckoutGooglePay;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { EmailRegex, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Note } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { ErrorComponent } from '../../common';\n\nimport { ICheckoutGuestProfileData } from './checkout-guest-profile.data';\nimport { ICheckoutGuestProfileProps } from './checkout-guest-profile.props.autogenerated';\nimport getAddContactInfo, { IAddContactInfo } from './components/get-add-contact-info';\nimport getAddCustomerRefInfo, { IAddCustomerRefInfo } from './components/get-add-customer-reference-info';\nimport getAddPurchaseOrderInfo, { IAddPurchaseOrderInfo } from './components/get-add-customer-requisition-info';\nimport getShowContactInfo, { IShowContactInfo } from './components/get-show-contact-info';\nimport getNoteInfo, { IShowNoteInfo } from './components/get-show-note-info';\nimport getCustomerRefInfo, { IShowCustomerRefInfo } from './components/get-show-customer-reference-info';\nimport getPurchaseOrderInfo, { IShowPurchaseOrderInfo } from './components/get-show-customer-requisition-info';\nimport getAddNoteInfo, { IAddNoteInfo } from './components/get-add-note-info';\n\ninterface ICheckoutGuestProfileState {\n email: string;\n customerRequisition?: string;\n customerReference?: string;\n note?: Note;\n hasCheckoutError?: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutGuestProfileModuleProps extends ICheckoutGuestProfileProps, IModuleStateProps {}\n\nexport interface ICheckoutGuestProfileViewProps extends ICheckoutGuestProfileProps, ICheckoutGuestProfileState {\n moduleProps: IModuleProps;\n showContactInfo?: IShowContactInfo;\n showCustomerRefInfo?: IShowCustomerRefInfo;\n showPurchaseOrderInfo?: IShowPurchaseOrderInfo;\n showNoteInfo?: IShowNoteInfo;\n addPurchaseOrderInfo?: IAddPurchaseOrderInfo;\n addCustomerRefInfo?: IAddCustomerRefInfo;\n addNoteInfo?: IAddNoteInfo;\n addContactInfo?: IAddContactInfo;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n\n onChange?(email: string, customerRequisition?: string, customerReference?: string, note?: Note): void;\n onEdit?(): void;\n onSubmit?(): void;\n onCancel?(): void;\n}\n\n/**\n *\n * CheckoutGuestProfile component.\n * @extends {React.PureComponent, ICheckoutGuestProfileState>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutGuestProfile extends React.Component {\n public state: ICheckoutGuestProfileState = {\n email:\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.user &&\n this.props.context.request.user.isAuthenticated &&\n this.props.context.request.user.emailAddress) ||\n ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n private readonly customerReferenceRef: React.RefObject = React.createRef();\n\n private readonly customerRequisitionRef: React.RefObject = React.createRef();\n\n private readonly noteRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get hasEmailError(): boolean {\n return this.props.moduleState.hasError && !this.state.hasCheckoutError;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n const emailAddressFromExpressCheckout = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\n const isEmailFromExpressCheckoutDifferent =\n !StringExtensions.isNullOrEmpty(emailAddressFromExpressCheckout) &&\n emailAddressFromExpressCheckout !== this.state.email;\n\n if (\n isExpressCheckoutApplied &&\n (!this.props.data.checkout.result?.isExpressAddressApplied || isEmailFromExpressCheckoutDifferent)\n ) {\n await this.submitEmail(emailAddressFromExpressCheckout);\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGuestProfile && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGuestProfile) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGuestProfileModuleProps, nextState: ICheckoutGuestProfileState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n config: { className },\n resources,\n moduleState: { isReady, hasExternalSubmitGroup }\n } = this.props;\n const { hasCheckoutError, errorMessage } = this.state;\n const email = this.props.data.checkout.result?.guestCheckoutEmail ?? '';\n const customerRef = this.props.data.checkout.result?.checkoutCart?.cart?.Comment ?? '';\n const customerRequisition = this.props.data.checkout.result?.checkoutCart?.cart?.CustomerRequisition ?? '';\n const note = this.props.data.checkout.result?.checkoutCart?.cart?.Notes ?? [];\n\n const viewProps: ICheckoutGuestProfileViewProps = {\n ...this.props,\n ...this.state,\n checkoutErrorRef: this.checkoutErrorRef,\n onChange: this.onChange,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n\n moduleProps: {\n moduleProps: this.props,\n className: classnames('ms-checkout-guest-profile', className, isReady ? 'show' : 'add')\n },\n alert: hasCheckoutError && errorMessage && (\n \n ),\n showContactInfo: isReady\n ? getShowContactInfo({\n canEdit: !hasExternalSubmitGroup,\n email,\n resources,\n onEdit: this.onEdit\n })\n : undefined,\n showCustomerRefInfo:\n isReady && this.props.config.enableCustomerReference\n ? getCustomerRefInfo({\n canEdit: !hasExternalSubmitGroup,\n customerRef,\n resources,\n onEdit: this.onEdit\n })\n : undefined,\n showPurchaseOrderInfo:\n isReady && this.props.config.enableCustomerRequisition\n ? getPurchaseOrderInfo({\n canEdit: !hasExternalSubmitGroup,\n purchaseOrder: customerRequisition,\n resources,\n onEdit: this.onEdit\n })\n : undefined,\n showNoteInfo:\n isReady && this.props.config.enableCartNote\n ? getNoteInfo({\n noteDescription: note !== undefined ? note[0]?.Description : ''\n })\n : undefined,\n addContactInfo: !isReady\n ? getAddContactInfo({\n email: this.state.email,\n hasError: this.hasEmailError,\n resources,\n inputRef: this.inputRef,\n onChange: this.onChange,\n canSubmit: !hasExternalSubmitGroup,\n onSubmit: this.onSubmit,\n canCancel: !hasExternalSubmitGroup && !!email,\n onCancel: this.onCancel\n })\n : undefined,\n addPurchaseOrderInfo:\n !isReady && this.props.config.enableCustomerRequisition\n ? getAddPurchaseOrderInfo({\n purchaseOrderNumber: this.state.customerRequisition,\n resources,\n inputRef: this.customerRequisitionRef,\n onChange: this.onChangeCustomerRequisition,\n canSubmit: !hasExternalSubmitGroup,\n onSubmit: this.onSubmit,\n canCancel: !hasExternalSubmitGroup && !!email,\n onCancel: this.onCancel,\n hasError: this.hasEmailError\n })\n : undefined,\n addCustomerRefInfo:\n !isReady && this.props.config.enableCustomerReference\n ? getAddCustomerRefInfo({\n customerRef: this.state.customerReference,\n resources,\n inputRef: this.customerReferenceRef,\n onChange: this.onChangeCustomerRef,\n canSubmit: !hasExternalSubmitGroup,\n onSubmit: this.onSubmit,\n canCancel: !hasExternalSubmitGroup && !!email,\n onCancel: this.onCancel,\n hasError: this.hasEmailError\n })\n : undefined,\n addNoteInfo:\n !isReady && this.props.config.enableCartNote\n ? getAddNoteInfo({\n note: this.state.note,\n resources,\n inputRef: this.noteRef,\n onChange: this.onChangeNote,\n canSubmit: !hasExternalSubmitGroup,\n onSubmit: this.onSubmit,\n canCancel: !hasExternalSubmitGroup && !!email,\n onCancel: this.onCancel,\n hasError: this.hasEmailError\n })\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n const customerAccountInformation = this.props.data.accountInformation?.result;\n const checkoutCart = checkoutState?.checkoutCart.cart;\n\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n let updateEmail: string = '';\n\n // if obo enabled and profile selected, we need to send the order status to obo user not store manager.\n if (Msdyn365.isOboRequest(this.props.context.request)) {\n updateEmail =\n customerAccountInformation && customerAccountInformation.Email !== undefined\n ? customerAccountInformation.Email\n : this.setErrorMsgOboUserEmailEmpty();\n } else {\n updateEmail = this.state.email;\n }\n\n const emailOnCart = checkoutCart?.ReceiptEmail;\n const notes = checkoutCart?.Notes !== undefined && checkoutState?.checkoutCart.cart.Notes;\n const customerRequisition = checkoutCart?.CustomerRequisition;\n const customerReference = checkoutCart?.Comment;\n\n const email = hasInvoiceLine\n ? this.props.context.request.user.emailAddress ?? ''\n : emailOnCart ??\n (checkoutState?.isExpressCheckoutApplied && !StringExtensions.isNullOrEmpty(checkoutState.emailAddressFromExpressCheckout)\n ? checkoutState.emailAddressFromExpressCheckout\n : undefined) ??\n updateEmail;\n\n const isEmailValid = this.isEmailValid(email);\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : email && isEmailValid ? 'ready' : 'updating',\n hasError: !!email && !isEmailValid\n });\n\n if (email) {\n notes !== undefined\n ? await this.updateGuestProfile(email, customerReference, customerRequisition, notes[0])\n : await this.updateGuestProfile(email, customerReference, customerRequisition);\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: true });\n } else {\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\n }\n };\n\n private readonly onChange = (rowEmail: string): void => {\n const email = (rowEmail || '').replace(new RegExp('[<>]', 'gi'), '');\n this.setState({ email });\n if (this.props.moduleState.hasError) {\n // Clear error during user updating the email\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n }\n };\n\n private readonly onChangeCustomerRef = (customerRef: string): void => {\n this.setState({ customerReference: customerRef });\n };\n\n private readonly onChangeCustomerRequisition = (customerRequisition: string): void => {\n this.setState({ customerRequisition: customerRequisition });\n };\n\n private readonly onChangeNote = (note: string): void => {\n if (note === '') {\n this.setState({ note: undefined });\n } else {\n const defaultNote = this.props.config.defaultNoteTitle;\n this.setState({ note: { Description: note, Title: defaultNote, RestrictionValue: 1 } });\n }\n };\n\n private readonly setErrorMsgOboUserEmailEmpty = (): string => {\n // Clear prior error\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n return '';\n };\n\n private readonly isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n };\n\n private readonly updateGuestProfile = async (\n newGuestCheckoutEmail: string,\n customerReference?: string,\n customerRequisition?: string,\n note?: Note\n ): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateGuestCheckoutEmail({\n newGuestCheckoutEmail,\n customerReference,\n customerRequisition,\n note\n });\n this.setState({ email: newGuestCheckoutEmail });\n this.setState({ note: note });\n this.setState({ customerReference: customerReference });\n this.setState({ customerRequisition: customerRequisition });\n }\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Guest profile onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Guest profile onSubmit is called.');\n\n const { email } = this.state;\n const { customerReference, customerRequisition, note } = this.state;\n await this.submitEmail(email, customerReference, customerRequisition, note);\n };\n\n /**\n * Submit the email address.\n * @param email - The email to be submitted.\n *\n */\n private readonly submitEmail = async (\n email: string,\n customerReference?: string,\n customerRequisition?: string,\n note?: Note\n ): Promise => {\n const isValid = this.isEmailValid(email);\n if (!isValid) {\n this.props.moduleState.setHasError(true);\n\n const input = this.inputRef.current?.focus && (this.inputRef.current as HTMLElement);\n input?.focus();\n } else {\n this.props.moduleState.onReady();\n await this.updateGuestProfile(email, customerReference, customerRequisition, note);\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Guest profile onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const checkoutState = this.props.data.checkout.result;\n const checkoutCart = checkoutState?.checkoutCart.cart;\n const email = checkoutState.guestCheckoutEmail;\n const notes = checkoutCart?.Notes !== undefined && checkoutState?.checkoutCart.cart.Notes;\n const customerRequisition = checkoutCart?.CustomerRequisition;\n const customerReference = checkoutCart?.Comment;\n if (!email) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.setState({\n email\n });\n if (notes !== undefined) {\n this.setState({ note: notes[0] });\n }\n this.setState({ customerReference: customerReference });\n this.setState({ customerRequisition: customerRequisition });\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n this.props.moduleState.onReady();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n hasCheckoutError: true,\n errorMessage\n });\n };\n}\n\nexport default CheckoutGuestProfile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddContactInfo } from './components/get-add-contact-info';\nimport { IAddCustomerRefInfo } from './components/get-add-customer-reference-info';\nimport { IAddPurchaseOrderInfo } from './components/get-add-customer-requisition-info';\nimport { IShowContactInfo } from './components/get-show-contact-info';\nimport { IShowNoteInfo } from './components/get-show-note-info';\nimport { IShowCustomerRefInfo } from './components/get-show-customer-reference-info';\nimport { IShowPurchaseOrderInfo } from './components/get-show-customer-requisition-info';\nimport { IAddNoteInfo } from './components/get-add-note-info';\nimport { ICheckoutGuestProfileViewProps } from './checkout-guest-profile';\n\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton }) => (\n \n {email}\n {editButton}\n \n);\n\nexport const ShowCustomerRefInfo: React.FC = ({ showInfoProps, customerRef }) => (\n {customerRef}\n);\n\nexport const ShowPurchaseOrderInfo: React.FC = ({ showInfoProps, purchaseOrder }) => (\n {purchaseOrder}\n);\n\nexport const ShowNoteInfo: React.FC = ({ showInfoProps, noteDescription }) => (\n {noteDescription}\n);\n\nexport const AddContactInfo: React.FC = ({\n addFormProps,\n submitButton,\n cancelButton,\n inputGroupProps,\n label,\n error,\n input\n}) => (\n \n \n {label}\n {error}\n {input}\n \n {submitButton}\n {cancelButton}\n \n);\n\nexport const AddPurchaseOrderInfo: React.FC = ({\n addFormProps,\n submitButton,\n cancelButton,\n inputGroupProps,\n label,\n input\n}) => (\n \n \n {label}\n {input}\n \n {submitButton}\n {cancelButton}\n \n);\n\nexport const AddNoteInfo: React.FC = ({ addFormProps, submitButton, cancelButton, inputGroupProps, label, input }) => (\n \n \n {label}\n {input}\n \n {submitButton}\n {cancelButton}\n \n);\n\nexport const AddCustomerRefInfo: React.FC = ({\n addFormProps,\n submitButton,\n cancelButton,\n inputGroupProps,\n label,\n input\n}) => (\n \n \n {label}\n {input}\n \n {submitButton}\n {cancelButton}\n \n);\n\nconst CheckoutGuestProfileView: React.FC = ({\n moduleProps,\n checkoutErrorRef,\n alert,\n showContactInfo,\n showPurchaseOrderInfo,\n showCustomerRefInfo,\n showNoteInfo,\n addContactInfo,\n addPurchaseOrderInfo,\n addCustomerRefInfo,\n addNoteInfo\n}) => {\n return (\n \n {alert}\n {showContactInfo && }\n {showCustomerRefInfo && }\n {showPurchaseOrderInfo && }\n {showNoteInfo && }\n {addContactInfo && }\n {addCustomerRefInfo && }\n {addPurchaseOrderInfo && }\n {addNoteInfo && }\n \n );\n};\n\nexport default CheckoutGuestProfileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddContactInfoInput {\n inputRef?: React.RefObject;\n hasError: boolean;\n email: string;\n resources: {\n emailLabel: string;\n emailErrortext: string;\n saveBtnLabel: string;\n cancelBtnLabel: string;\n };\n canSubmit: boolean;\n canCancel: boolean;\n onChange(email: string): void;\n onSubmit(): void;\n onCancel(): void;\n}\n\nexport interface IAddContactInfo {\n addFormProps: INodeProps;\n submitButton: React.ReactNode;\n cancelButton: React.ReactNode;\n inputGroupProps: INodeProps;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\n/**\n * On Input change handler function.\n * @param onChange -On change input function.\n * @returns Call of onChange function.\n */\nconst onInputChangeHandler = (onChange: (email: string) => void) => (event: React.ChangeEvent): void => {\n onChange(event.target.value || '');\n};\n\nconst getAddContactInfo = ({\n hasError,\n inputRef,\n email,\n canSubmit,\n canCancel,\n onChange,\n onSubmit,\n onCancel,\n resources: { emailLabel, emailErrortext, saveBtnLabel, cancelBtnLabel }\n}: IAddContactInfoInput): IAddContactInfo => {\n const onInputChange = onInputChangeHandler(onChange);\n\n return {\n addFormProps: { className: 'ms-checkout-guest-profile__add-contact-info' },\n submitButton: canSubmit && (\n \n ),\n cancelButton: canCancel && (\n \n ),\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\n label: (\n \n ),\n error: hasError && (\n \n {emailErrortext}\n \n ),\n input: (\n \n )\n };\n};\n\nexport default getAddContactInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddCustomerRefInfoInput {\n inputRef?: React.RefObject;\n hasError: boolean;\n customerRef: string | undefined;\n resources: {\n customerRefLabel: string;\n customerRefErrortext: string;\n saveBtnLabel: string;\n cancelBtnLabel: string;\n };\n canSubmit: boolean;\n canCancel: boolean;\n onChange(email: string): void;\n onSubmit(): void;\n onCancel(): void;\n}\n\nexport interface IAddCustomerRefInfo {\n addFormProps: INodeProps;\n submitButton: React.ReactNode;\n cancelButton: React.ReactNode;\n inputGroupProps: INodeProps;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\n/**\n * On Input change handler function.\n * @param onChange -On change input function.\n * @returns Call of onChange function.\n */\nconst onInputChangeHandler = (onChange: (customerRef: string) => void) => (event: React.ChangeEvent): void => {\n onChange(event.target.value || '');\n};\n\nconst getAddCustomerRefInfo = ({\n hasError,\n inputRef,\n customerRef,\n canSubmit,\n canCancel,\n onChange,\n onSubmit,\n onCancel,\n resources: { customerRefLabel, customerRefErrortext, saveBtnLabel, cancelBtnLabel }\n}: IAddCustomerRefInfoInput): IAddCustomerRefInfo => {\n const onInputChange = onInputChangeHandler(onChange);\n\n return {\n addFormProps: { className: 'ms-checkout-guest-profile__add-customer-reference-number' },\n submitButton: canSubmit && (\n \n ),\n cancelButton: canCancel && (\n \n ),\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\n label: (\n \n ),\n error: hasError && (\n \n {customerRefErrortext}\n \n ),\n input: (\n \n )\n };\n};\n\nexport default getAddCustomerRefInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddPurchaseOrderInfoInput {\n inputRef?: React.RefObject;\n hasError: boolean;\n purchaseOrderNumber: string | undefined;\n resources: {\n purchaseOrderLabel: string;\n purchaseOrderErrortext: string;\n saveBtnLabel: string;\n cancelBtnLabel: string;\n };\n canSubmit: boolean;\n canCancel: boolean;\n onChange(email: string): void;\n onSubmit(): void;\n onCancel(): void;\n}\n\nexport interface IAddPurchaseOrderInfo {\n addFormProps: INodeProps;\n submitButton: React.ReactNode;\n cancelButton: React.ReactNode;\n inputGroupProps: INodeProps;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\n/**\n * On Input change handler function.\n * @param onChange -On change input function.\n * @returns Call of onChange function.\n */\nconst onInputChangeHandler = (onChange: (purchaseOrder: string) => void) => (event: React.ChangeEvent): void => {\n onChange(event.target.value || '');\n};\n\nconst getAddPurchaseOrderInfo = ({\n hasError,\n inputRef,\n purchaseOrderNumber,\n canSubmit,\n canCancel,\n onChange,\n onSubmit,\n onCancel,\n resources: { purchaseOrderLabel, purchaseOrderErrortext, saveBtnLabel, cancelBtnLabel }\n}: IAddPurchaseOrderInfoInput): IAddPurchaseOrderInfo => {\n const onInputChange = onInputChangeHandler(onChange);\n\n return {\n addFormProps: { className: 'ms-checkout-guest-profile__add-customer-requisition' },\n submitButton: canSubmit && (\n \n ),\n cancelButton: canCancel && (\n \n ),\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\n label: (\n \n ),\n error: hasError && (\n \n {purchaseOrderErrortext}\n \n ),\n input: (\n \n )\n };\n};\n\nexport default getAddPurchaseOrderInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { Note } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddNoteInfoInput {\n inputRef?: React.RefObject;\n hasError: boolean;\n note?: Note;\n onChange(email: string): void;\n resources: {\n noteLabel: string;\n noteErrortext: string;\n saveBtnLabel: string;\n cancelBtnLabel: string;\n };\n canSubmit: boolean;\n canCancel: boolean;\n onSubmit(): void;\n onCancel(): void;\n}\n\nexport interface IAddNoteInfo {\n addFormProps: INodeProps;\n submitButton: React.ReactNode;\n cancelButton: React.ReactNode;\n inputGroupProps: INodeProps;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\n/**\n * On Input change handler function.\n * @param onChange -On change input function.\n * @returns Call of onChange function.\n */\nconst onInputChangeHandler = (onChange: (customerRef: string) => void) => (event: React.ChangeEvent): void => {\n onChange(event.target.value || '');\n};\n\nconst getAddNoteInfo = ({\n hasError,\n inputRef,\n note,\n canSubmit,\n canCancel,\n onSubmit,\n onCancel,\n onChange,\n resources: { noteLabel, noteErrortext, saveBtnLabel, cancelBtnLabel }\n}: IAddNoteInfoInput): IAddNoteInfo => {\n const onInputChange = onInputChangeHandler(onChange);\n return {\n addFormProps: { className: 'ms-checkout-guest-profile__add-notes-info' },\n submitButton: canSubmit && (\n \n ),\n cancelButton: canCancel && (\n \n ),\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\n label: (\n \n ),\n error: hasError && (\n \n {noteErrortext}\n \n ),\n input: (\n \n )\n };\n};\n\nexport default getAddNoteInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IShowContactInfoInput {\n canEdit: boolean;\n email: string;\n resources: {\n editBtnLabel: string;\n };\n onEdit(): void;\n}\n\nexport interface IShowContactInfo {\n showInfoProps: INodeProps;\n email: React.ReactNode;\n editButton?: React.ReactNode;\n}\n\nconst getContactInfo = ({ canEdit, email, resources: { editBtnLabel }, onEdit }: IShowContactInfoInput): IShowContactInfo => ({\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\n email: {email},\n editButton: canEdit && (\n \n )\n});\n\nexport default getContactInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IShowCustomerRefInfoInput {\n canEdit: boolean;\n customerRef: string;\n resources: {\n editBtnLabel: string;\n };\n onEdit(): void;\n}\n\nexport interface IShowCustomerRefInfo {\n showInfoProps: INodeProps;\n customerRef: React.ReactNode;\n}\n\nconst getCustomerRefInfo = ({\n canEdit,\n customerRef,\n resources: { editBtnLabel },\n onEdit\n}: IShowCustomerRefInfoInput): IShowCustomerRefInfo => ({\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\n customerRef: {customerRef}\n});\n\nexport default getCustomerRefInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IShowPurchaseOrderInfoInput {\n canEdit: boolean;\n purchaseOrder: string;\n resources: {\n editBtnLabel: string;\n };\n onEdit(): void;\n}\n\nexport interface IShowPurchaseOrderInfo {\n showInfoProps: INodeProps;\n purchaseOrder: React.ReactNode;\n}\n\nconst getPurchaseOrderInfo = ({\n canEdit,\n purchaseOrder,\n resources: { editBtnLabel },\n onEdit\n}: IShowPurchaseOrderInfoInput): IShowPurchaseOrderInfo => ({\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\n purchaseOrder: {purchaseOrder}\n});\n\nexport default getPurchaseOrderInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IShowNoteInfoInput {\n noteDescription?: string;\n}\n\nexport interface IShowNoteInfo {\n showInfoProps: INodeProps;\n noteDescription: React.ReactNode;\n}\n\nconst getNoteInfo = ({ noteDescription }: IShowNoteInfoInput): IShowNoteInfo => ({\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\n noteDescription: {noteDescription}\n});\n\nexport default getNoteInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { callActionOrExecute } from '@msdyn365-commerce/retail-proxy';\nimport { createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { LoyaltyPointRedemptionEstimate, LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { GetLoyaltyTransactionEstimationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Drawer, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyData } from './checkout-loyalty.data';\nimport { ICheckoutLoyaltyProps } from './checkout-loyalty.props.autogenerated';\nimport InputComponent from './components/checkout-loyalty-input';\nimport LabelComponent from './components/checkout-loyalty-label';\nimport TextComponent from './components/checkout-loyalty-text';\nimport { ErrorComponent } from '../../common/error';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutLoyaltyState {\n dollarsApplied: number;\n isFetchingLoyaltyCard: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutLoyaltyModuleProps extends ICheckoutLoyaltyProps, IModuleStateProps {}\n\nexport interface ICheckoutLoyaltyViewState {\n isShowLoyalty: boolean;\n isShowAddLoyalty: boolean;\n}\n\nexport interface ICheckoutLoyaltyShow {\n heading: React.ReactNode;\n coveredAmountText: React.ReactNode;\n amount: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyRewardPoint {\n checkoutLoyaltyRewardPoint: INodeProps;\n key: string;\n title: React.ReactNode;\n availablePointsText: React.ReactNode;\n activePoints: React.ReactNode;\n expiringPointsText: React.ReactNode;\n expiringPoints: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyAdd {\n heading: React.ReactNode;\n cardNumber: React.ReactNode;\n drawer: INodeProps;\n rewardPoints: ICheckoutLoyaltyRewardPoint[];\n loyaltyAmountContainer: INodeProps;\n appliedLoyaltyAmountContainer: INodeProps;\n loyaltyAmountLabel: React.ReactNode;\n loyaltyAmountInput: React.ReactNode;\n loyaltyAmountApplyButton: React.ReactNode;\n showAppliedAmount: boolean;\n loyaltyAmountAppliedText: React.ReactNode;\n loyaltyAmountAppliedPrice: React.ReactNode;\n loyaltyAmountRemoveButton: React.ReactNode;\n}\n\nexport interface ICheckoutLoyaltyViewProps extends ICheckoutLoyaltyModuleProps {\n checkoutLoyalty: IModuleProps;\n viewState: ICheckoutLoyaltyViewState;\n showLoyalty: ICheckoutLoyaltyShow;\n addLoyalty: ICheckoutLoyaltyAdd;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutLoyalty component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n\n@withModuleState\n@observer\nclass CheckoutLoyalty extends React.Component {\n private readonly _dialogToggleRef: React.RefObject | undefined;\n\n private readonly moduleClassName: string = 'ms-checkout-loyalty';\n\n private readonly _defaultLoyaltyPoints: number = 0;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n constructor(props: ICheckoutLoyaltyModuleProps) {\n super(props);\n this._dialogToggleRef = React.createRef();\n this._applyLoyaltyPoints = this._applyLoyaltyPoints.bind(this);\n this._removeLoyaltyPoints = this._removeLoyaltyPoints.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this.state = { dollarsApplied: this.maxDollars, isFetchingLoyaltyCard: false };\n }\n\n @computed get shouldPayLoyalty(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use loyalty when cart is not full of free items\n const amountDue = cart.TotalAmount || 0;\n return amountDue > 0;\n }\n\n @computed get isDataReady(): boolean {\n return (\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\n (this.props.data.loyaltyCard && this.props.data.loyaltyCard.status) !== 'LOADING' &&\n (this.props.data.loyaltyTransactionEstimation && this.props.data.loyaltyTransactionEstimation.status) !== 'LOADING'\n );\n }\n\n @computed get maxDollars(): number {\n return this.props.data.loyaltyTransactionEstimation.result &&\n this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n ? this.props.data.loyaltyTransactionEstimation.result.MaxCurrencyValueOfLoyaltyPoints\n : 0;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart,\n async () => {\n this._updateEstimate();\n }\n );\n\n reaction(\n () => this.props.data.loyaltyCard.result,\n async () => {\n this._updateLoyalty();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutLoyalty && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutLoyalty) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutLoyaltyModuleProps, nextState: ICheckoutLoyaltyState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config,\n resources,\n renderView,\n moduleState: { hasError, isReady }\n } = this.props;\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.Loyalty === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout loyalty module wont render');\n return null;\n }\n\n if (\n this.props.data.loyaltyCard &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n ) {\n const loyaltyCard = this.props.data.loyaltyCard.result;\n const checkoutState = this.props.data.checkout.result;\n let isShowLoyalty = false;\n const errorMessage = this.state.errorMessage;\n\n if (isReady) {\n if (!checkoutState || checkoutState.loyaltyAmount === 0) {\n return null;\n }\n isShowLoyalty = true;\n }\n const channelConfig = this.props.context.request.channel;\n const viewProps = {\n ...this.props,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isShowLoyalty,\n isShowAddLoyalty: !isReady && !config.disableAddLoyaltyComponent\n },\n alert: hasError && errorMessage && ,\n checkoutLoyalty: {\n moduleProps: this.props,\n className: classnames(\n this.moduleClassName,\n { [`${this.moduleClassName}__applied`]: isShowLoyalty },\n this.props.config.className\n )\n },\n showLoyalty: {\n heading: ,\n coveredAmountText: (\n \n ),\n amount: (\n \n )\n },\n addLoyalty: {\n heading: ,\n drawer: {\n tag: Drawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: this._drawerHeader(),\n openGlyph: `${this.moduleClassName}__drawer-open`,\n closeGlyph: `${this.moduleClassName}__drawer-close`,\n glyphPlacement: 'end'\n },\n cardNumber: ,\n rewardPoints:\n loyaltyCard.RewardPoints &&\n loyaltyCard.RewardPoints.map((points, index) => {\n return this._renderPointSection(points, resources.availablePointsLabel, resources.expiringLoyaltyPointsLabel);\n }),\n loyaltyAmountContainer: {\n className: `${this.moduleClassName}__amount`\n },\n appliedLoyaltyAmountContainer: {\n className: `${this.moduleClassName}__applied-amount`\n },\n loyaltyAmountLabel: (\n \n ),\n loyaltyAmountInput: (\n \n ),\n loyaltyAmountApplyButton: (\n this.maxDollars ||\n this.state.dollarsApplied <= 0 ||\n isNaN(this.state.dollarsApplied) ||\n this.state.isFetchingLoyaltyCard\n }\n >\n {this.props.resources.applyCheckoutLoyaltyPaymentText}\n \n ),\n showAppliedAmount: checkoutState && checkoutState.loyaltyAmount > 0,\n loyaltyAmountAppliedText: (\n \n ),\n loyaltyAmountAppliedPrice: (\n \n ),\n loyaltyAmountRemoveButton: (\n \n {this.props.resources.removeCheckoutLoyaltyPaymentText}\n \n )\n }\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n this.props.context.telemetry.error('Checkout loyalty content is empty, module wont render');\n return null;\n }\n\n private _drawerHeader(): JSX.Element {\n const channelConfig = this.props.context.request.channel;\n return (\n <>\n

{this.props.resources.loyaltyCoveredAmountText}

\n \n \n );\n }\n\n private _renderPointSection(\n point: LoyaltyRewardPoint,\n loyaltyCoveredAmountText: string,\n expiringLoyaltyPointsLabel: string\n ): ICheckoutLoyaltyRewardPoint {\n return {\n key: point.RewardPointId || '',\n checkoutLoyaltyRewardPoint: {\n className: `${this.moduleClassName}__program`\n },\n title: ,\n availablePointsText: ,\n activePoints: (\n \n ),\n expiringPointsText: ,\n expiringPoints: (\n \n )\n };\n }\n\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const savedLoyaltyAmount = this.props.data.checkout.result?.loyaltyAmount;\n if (savedLoyaltyAmount) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n } else if (\n this.props.data.loyaltyCard.result &&\n this.props.data.checkout.result &&\n this.props.data.loyaltyCard.result.CardNumber !== this.props.data.checkout.result.checkoutCart.cart.LoyaltyCardId\n ) {\n this.props.data.checkout.result.checkoutCart\n .updateLoyaltyCardId({ loyaltyCardNumber: this.props.data.loyaltyCard.result.CardNumber })\n .catch(error => {\n if (this.context.telemetry) {\n this.context.telemetry.warning(error);\n this.context.telemetry.debug('Unable to update the loyalty card');\n }\n });\n }\n };\n\n private readonly onEdit = () => {\n this.props.telemetry.information('Payment section loyalty onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = () => {\n this.props.telemetry.information('Payment section loyalty onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = () => {\n this.props.telemetry.information('Payment section loyalty onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n const checkoutState = this.props.data.checkout.result;\n if (checkoutState && checkoutState.loyaltyAmount > 0) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly isEnabled = () => {\n return (\n this.props.context.request.user.isAuthenticated &&\n this.props.data.loyaltyCard.result &&\n this.props.data.loyaltyCard.result.CardNumber &&\n this.shouldPayLoyalty\n );\n };\n\n private async _applyLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty apply button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: Number.parseFloat(this.state.dollarsApplied.toString()) });\n this.setState({\n isFetchingLoyaltyCard: true\n });\n }\n\n private async _removeLoyaltyPoints(): Promise {\n this.props.telemetry.information('Payment section loyalty remove button onClick is called.');\n\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n return;\n }\n\n this._clearError();\n await checkoutState.updateLoyaltyAmount({ newAmount: 0 });\n this.setState({\n dollarsApplied: 0\n });\n }\n\n private _onInputChange(event: React.ChangeEvent): void {\n const value = event.currentTarget.value;\n this.setState({ dollarsApplied: value.length > 0 ? Number(value) : Number.parseFloat(value), isFetchingLoyaltyCard: false });\n }\n\n private _onBlur(event: React.FocusEvent): void {\n const num = Number.parseFloat(event.currentTarget.value).toFixed(2);\n const element = document.getElementById(`${this.props.id}-label`) as HTMLInputElement;\n if (element && num) {\n element.value = num;\n this.setState({ dollarsApplied: Number.parseFloat(num) });\n }\n }\n\n private _updateLoyalty(): void {\n if (this.props.moduleState.isDisabled && this.isEnabled()) {\n this._updateEstimate();\n this.props.moduleState.onUpdating();\n }\n }\n\n private _updateEstimate(): void {\n const card = this.props.data.loyaltyCard.result;\n const checkout = this.props.data.checkout.result;\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n const channelConfig = this.props.context.request.channel;\n if (card && card.CardNumber && cart && channelConfig) {\n const currencyCode = channelConfig.Currency || '';\n const loyalPointsRequest = createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput(cart.Id, card.CardNumber, currencyCode);\n\n // @ts-expect-error\n // Due to bug 23214358, this is getting improperly cached. Need to turn on cache bypass for now to work around issue\n loyalPointsRequest._query.options.bypassCache = 'get';\n\n callActionOrExecute(loyalPointsRequest, this.props.context.actionContext)\n .then(async points => {\n this.props.context.actionContext.update(\n new GetLoyaltyTransactionEstimationInput(this.props.context.request.apiSettings),\n points\n );\n const newMaxPoints = points.MaxCurrencyValueOfLoyaltyPoints ?? this._defaultLoyaltyPoints;\n\n // If points are already applied, ensure you don't apply more points than max\n if (checkout && checkout.loyaltyAmount > newMaxPoints) {\n await checkout.updateLoyaltyAmount({ newAmount: newMaxPoints });\n }\n\n this.setState({ dollarsApplied: newMaxPoints, isFetchingLoyaltyCard: false });\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n this.props.context.actionContext.telemetry.debug('Error getting Loyalty Point Redemption Estimate');\n });\n }\n }\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutLoyalty;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow, ICheckoutLoyaltyViewProps } from './checkout-loyalty';\n\nconst AddCheckoutLoyalty: React.FC = ({\n heading,\n cardNumber,\n drawer,\n rewardPoints,\n loyaltyAmountContainer,\n appliedLoyaltyAmountContainer,\n loyaltyAmountLabel,\n loyaltyAmountInput,\n loyaltyAmountApplyButton,\n showAppliedAmount,\n loyaltyAmountAppliedText,\n loyaltyAmountAppliedPrice,\n loyaltyAmountRemoveButton\n}) => {\n return (\n <>\n {heading}\n {cardNumber}\n \n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\n return (\n \n {rewardPoint.title}\n {rewardPoint.availablePointsText}\n {rewardPoint.activePoints}\n {rewardPoint.expiringPointsText}\n {rewardPoint.expiringPoints}\n \n );\n })}\n \n \n {loyaltyAmountLabel}\n {loyaltyAmountInput}\n {loyaltyAmountApplyButton}\n {showAppliedAmount && (\n \n {loyaltyAmountAppliedText}\n {loyaltyAmountAppliedPrice}\n {loyaltyAmountRemoveButton}\n \n )}\n \n \n );\n};\n\nconst ShowCheckoutLoyalty: React.FC = ({ heading, coveredAmountText, amount }) => {\n return (\n <>\n {heading}\n {coveredAmountText}\n {amount}\n \n );\n};\n\nconst CheckoutLoyaltyView: React.FC = props => {\n const { checkoutLoyalty, checkoutErrorRef, alert, viewState, showLoyalty, addLoyalty } = props;\n\n return (\n \n {alert}\n {viewState.isShowLoyalty && }\n {viewState.isShowAddLoyalty && }\n \n );\n};\n\nexport default CheckoutLoyaltyView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyInput {\n className: string;\n type: string;\n value: string | number;\n min: number;\n max: number;\n ariaValueMax: number;\n ariaValueMin: number;\n ariaValueNow: number;\n id: string;\n step: string;\n onChange(event: React.ChangeEvent): void;\n onBlur(event: React.FocusEvent): void;\n}\n\nconst AdressInput: React.FC = ({\n className,\n type,\n value,\n min,\n max,\n step,\n ariaValueMax,\n ariaValueMin,\n ariaValueNow,\n onChange,\n onBlur,\n id\n}) => (\n \n);\n\nexport default AdressInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyLabelProps {\n className: string;\n text: string;\n htmlFor: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @param root0.htmlFor\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyLabel: React.FC = ({ className, text, htmlFor }) => {\n return (\n \n );\n};\n\nexport default CheckoutLoyaltyLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyTextProps {\n className: string;\n text?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyText: React.FC = ({ className, text }) => {\n if (!text) {\n return null;\n }\n\n return {text};\n};\n\nexport default CheckoutLoyaltyText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { getEstimatedPickupTimeslotAvailabilitiesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CartLine,\n LineDeliverySpecification,\n OrgUnitLocation,\n PickupTimeslotAvailability,\n PickupTimeslotAvailabilitySearchCriteria,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, IModuleProps, isNullOrWhiteSpace, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutPickupData } from './checkout-pickup.data';\nimport { ICheckoutPickupProps } from './checkout-pickup.props.autogenerated';\nimport {\n CheckoutPickupDateDropdown,\n CheckoutPickupError,\n CheckoutPickupTimeslotDropdown,\n getDate,\n getTimeslot,\n getUTCDateWithoutTime\n} from './components';\nimport {\n CheckoutPickupAddress,\n CheckoutPickupCartLines,\n CheckoutPickupGroupHeader,\n CheckoutPickupTimeslotInfo,\n DefaultImageSettings,\n ICheckoutPickupAddressProps,\n ICheckoutPickupCartLineInfo,\n ICheckoutPickupCartLinesProps,\n ICheckoutPickupGroup,\n ICheckoutPickupGroupHeaderProps,\n ICheckoutPickupGroupViewProps,\n ICheckoutPickupTimeslotInfoProps,\n PickupTimeslotAvailabilityState\n} from './components/checkout-pickup-group';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutPickupModuleProps extends ICheckoutPickupProps, IModuleStateProps {}\n\nexport interface ICheckoutPickupState {\n pickupGroups: ICheckoutPickupGroup[];\n}\n\nexport interface ICheckoutPickupViewState {\n isLoading: boolean;\n isHeaderError: boolean;\n isShowDropdown: boolean;\n isShowSelected: boolean;\n}\n\nexport interface ICheckoutPickupViewProps extends ICheckoutPickupProps<{}> {\n checkoutPickup: IModuleProps;\n viewState: ICheckoutPickupViewState;\n headerError: React.ReactNode;\n waiting: React.ReactNode;\n pickupGroups: ICheckoutPickupGroupViewProps[];\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutPickup component.\n * @extends {React.Component}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutPickup extends React.Component {\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isLoading: boolean = false;\n\n @observable private headerErrorMessage?: string;\n\n @computed get isDataReady(): boolean {\n return (\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\n (this.props.data.orgUnitLocations.result && this.props.data.orgUnitLocations.status) === 'SUCCESS'\n );\n }\n\n constructor(props: ICheckoutPickupModuleProps) {\n super(props);\n this.state = { pickupGroups: [] };\n\n this.setDateHandler = this.setDateHandler.bind(this);\n this.setTimeslotHandler = this.setTimeslotHandler.bind(this);\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n async () => {\n await this.initPickupGroup();\n this.initModuleState();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutPickup && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutPickup) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutPickupModuleProps, nextState: ICheckoutPickupState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this.isDataReady || !this.canPickup()) {\n return null;\n }\n\n const { resources, config, context } = this.props;\n\n const {\n pickupDateLabel,\n pickupTimeslotLabel,\n pickupDateDefaultText,\n pickupTimeslotDefaultText,\n itemsText,\n singleItemText,\n pickupDateTimeslotText,\n pickupTimeslotPlaceHolder,\n pickupLocationLabel\n } = resources;\n\n const { locale } = context.request;\n const { className, imageSettings, useHour12TimeFormat } = config;\n const defaultClassName = 'ms-checkout-pickup';\n const groupsViewProps: ICheckoutPickupGroupViewProps[] = [];\n\n this.state.pickupGroups.forEach((value, index) => {\n // Divider line for each pickup group\n const groupDivider: React.ReactNode = index !== 0 &&
;\n\n // Line images\n const cartlines: ICheckoutPickupCartLineInfo[] = value.cartLines\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId || '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: `${defaultClassName}__group-line-image`,\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl || '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings || DefaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity || 0\n }));\n\n // Heading for each group\n const numberOfCartLines = this._countItems(cartlines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n const headerProps: ICheckoutPickupGroupHeaderProps = {\n moduleClassName: defaultClassName,\n storeInfo: `${value.pickupModeName}, ${value.storeName}`,\n items: itemTitle\n };\n const groupHeader: React.ReactNode = ;\n\n const lineImageProps: ICheckoutPickupCartLinesProps = {\n moduleClassName: defaultClassName,\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x))\n };\n const cartLineImages: React.ReactNode = ;\n\n // Selected pickup date and timeslot node\n const dateString = getDate(value.selectedDate, locale);\n const timeslotString = getTimeslot(\n pickupTimeslotPlaceHolder,\n value.selectedTimeslot?.StartDateTime,\n value.selectedTimeslot?.EndDateTime,\n locale,\n useHour12TimeFormat\n );\n const timeslotInfoProps: ICheckoutPickupTimeslotInfoProps = {\n moduleClassName: defaultClassName,\n title: pickupDateTimeslotText,\n content: `${dateString} ${timeslotString}`\n };\n const selectedDateTimeslotNode: React.ReactNode = ;\n\n // Pickup address\n const addressProps: ICheckoutPickupAddressProps = {\n moduleClassName: defaultClassName,\n title: pickupLocationLabel,\n address: value.pickupAddress\n };\n const pickupAddress: React.ReactNode = ;\n\n // Pickup date and timeslot dropdown list\n const dropdownClassName = `${defaultClassName}__group-datetime-dropdown`;\n const labelClassName = `${dropdownClassName}-label`;\n const dropdownSelectClassName = `${dropdownClassName}-select`;\n const dateDropdownNode: React.ReactNode = (\n \n );\n\n const timeslotDropdownNode: React.ReactNode = (\n \n );\n\n const viewProp: ICheckoutPickupGroupViewProps = {\n moduleProps: { ...this.props },\n pickupGroupContainer: { className: `${defaultClassName}__group` },\n dateTimeslotContainer: { className: `${defaultClassName}__group-datetime` },\n pickupStoreId: value.pickupStoreId,\n pickupModeName: value.pickupModeName,\n deliveryMode: value.deliveryMode,\n groupDivider,\n groupHeader,\n groupErrorMessage: ,\n cartLineImages,\n pickupDateDropdown: dateDropdownNode,\n pickupTimeslotDropdown: timeslotDropdownNode,\n selectedDateTimeslot: selectedDateTimeslotNode,\n pickupAddress\n };\n\n groupsViewProps.push(viewProp);\n });\n\n const {\n moduleState: { isReady, hasError }\n } = this.props;\n const isHeaderError = !this.isLoading && this.headerErrorMessage !== undefined;\n const isShowDropdown = !this.isLoading && !isReady;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n\n const viewProps: ICheckoutPickupViewProps = {\n ...this.props,\n checkoutPickup: {\n moduleProps: this.props,\n className: classname(defaultClassName, className)\n },\n viewState: {\n isLoading: this.isLoading,\n isHeaderError,\n isShowSelected,\n isShowDropdown\n },\n headerError: ,\n waiting: ,\n pickupGroups: groupsViewProps,\n checkoutErrorRef: this.checkoutErrorRef\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n public async setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): Promise {\n const oldGroup = this.state.pickupGroups.find(\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\n );\n if (!oldGroup) {\n return;\n }\n\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\n newGroup.selectedDate = pickupDate;\n newGroup.selectedTimeslot = undefined; // Clear the selected timeslot in any case\n newGroup.timeslotErrorMessage = undefined; // Clear the timeslot error message if any\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\n if (lineSpec.DeliverySpecification) {\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = undefined;\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = undefined;\n }\n });\n\n if (pickupDate) {\n // Date is set\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n StartDate: pickupDate,\n EndDate: pickupDate,\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\n };\n const timeslotResults: PickupTimeslotAvailability[] = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\n searchCriteria\n );\n\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\n newGroup.dateErrorMessage =\n newGroup.availableTimeslots.length === 0 ? this.props.resources.noAvailableTimeslotError : undefined;\n } else {\n // Date is not set\n newGroup.availableTimeslots = [];\n newGroup.dateErrorMessage = undefined;\n }\n\n const groups = this.state.pickupGroups.map(group => {\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\n return newGroup;\n }\n return group;\n });\n\n this.setState({ pickupGroups: groups });\n }\n\n @action\n public setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void {\n const oldGroup = this.state.pickupGroups.find(\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\n );\n if (!oldGroup) {\n return;\n }\n\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\n\n newGroup.selectedTimeslot = pickupTimeslot;\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\n if (lineSpec.DeliverySpecification) {\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = pickupTimeslot?.StartDateTime;\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = pickupTimeslot?.EndDateTime;\n }\n });\n\n if (pickupTimeslot) {\n newGroup.timeslotErrorMessage = undefined;\n }\n\n const groups = this.state.pickupGroups.map(group => {\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\n return newGroup;\n }\n return group;\n });\n\n this.setState({ pickupGroups: groups });\n }\n\n @action\n private readonly initModuleState = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onSubmit: this.onSubmit,\n status: this.canPickup() ? (this.isPickupTimeSlotSet() ? 'ready' : 'updating') : 'disabled'\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly onReady = (): void => {\n this.props.moduleState.onReady();\n };\n\n private readonly onPending = (): void => {\n this.props.moduleState.onPending();\n };\n\n private readonly onSubmit = async (): Promise => {\n await this.updateCartLinePickupDateTimeslot();\n };\n\n private readonly setError = (errorMessage: string, isHeaderError: boolean = true): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n if (isHeaderError) {\n this.headerErrorMessage = errorMessage;\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.headerErrorMessage = undefined;\n };\n\n @action\n private readonly initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this.getCartLinesforPickup();\n let products: SimpleProduct[] = [];\n try {\n products = await this.getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n const pickupGroups: ICheckoutPickupGroup[] = [];\n const locations: OrgUnitLocation[] = this.props.data.orgUnitLocations.result || [];\n this.isLoading = true;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState, deliveryOptions } = this.props?.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n for (const line of pickupCartLines) {\n const group: ICheckoutPickupGroup | undefined = pickupGroups.find(\n x => x.pickupStoreId === line.FulfillmentStoreId && x.deliveryMode === line.DeliveryMode\n );\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n const lineDeliverySpecification: LineDeliverySpecification = {\n LineId: line.LineId,\n DeliverySpecification: {\n DeliveryModeId: line.DeliveryMode,\n DeliveryPreferenceTypeValue: 2,\n PickUpStoreId: line.FulfillmentStoreId,\n PickupTimeslotStartDateTime: line.PickupTimeslotStartDateTime,\n PickupTimeslotEndDateTime: line.PickupTimeslotEndDateTime,\n DeliveryAddress: line.ShippingAddress\n }\n };\n if (group) {\n group.lineDeliverySpecs.push(lineDeliverySpecification);\n group.cartLines.push({ cartLine: line, product });\n } else {\n // Group not exists yet\n const location: OrgUnitLocation | undefined = locations.find(x => x.OrgUnitNumber === line.FulfillmentStoreId);\n const storeName: string = this.getStoreName(location, line);\n const selectedDate: Date | undefined =\n line.PickupTimeslotStartDateTime && getUTCDateWithoutTime(line.PickupTimeslotStartDateTime);\n const selectedTimeslot =\n line.PickupTimeslotStartDateTime && line.PickupTimeslotEndDateTime\n ? { StartDateTime: line.PickupTimeslotStartDateTime, EndDateTime: line.PickupTimeslotEndDateTime }\n : undefined;\n const newGroup: ICheckoutPickupGroup = {\n pickupModeName: retailMultiplePickUpOptionEnabled\n ? this.getPickupModeDescription(\n this.props.resources.generalPickupText,\n line.DeliveryMode,\n deliveryOptions?.result,\n product\n )\n : this.props.resources.generalPickupText,\n pickupStoreId: line.FulfillmentStoreId || '',\n deliveryMode: line.DeliveryMode || '',\n storeName,\n pickupAddress: line.ShippingAddress,\n availabilityState: PickupTimeslotAvailabilityState.None,\n lineDeliverySpecs: [lineDeliverySpecification],\n cartLines: [{ cartLine: line, product }],\n availableDates: [],\n availableTimeslots: [],\n selectedDate,\n selectedTimeslot\n };\n\n let dailyGroupingResults: PickupTimeslotAvailability[] = [];\n try {\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n SearchOptionValue: 1 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.DailyGroupingTimeslotOnly\n };\n dailyGroupingResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n searchCriteria\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n newGroup.availabilityState = this.getPickupTimeslotAvailabilityState(dailyGroupingResults);\n if (newGroup.availabilityState === PickupTimeslotAvailabilityState.NotAvailable) {\n newGroup.groupErrorMessage = this.props.resources.noAvailableDateError;\n this.setError(newGroup.groupErrorMessage, false);\n }\n dailyGroupingResults.forEach(value => {\n if (value.StartDateTime && (value.AvailableCapacity || 0) > 0) {\n newGroup.availableDates.push(getUTCDateWithoutTime(value.StartDateTime));\n }\n });\n\n if (selectedDate) {\n let timeslotResults: PickupTimeslotAvailability[] = [];\n try {\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n StartDate: selectedDate,\n EndDate: selectedDate,\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\n };\n timeslotResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\n searchCriteria\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\n }\n pickupGroups.push(newGroup);\n }\n }\n\n const filteredPickupGroups = pickupGroups.filter(\n group =>\n group.availabilityState === PickupTimeslotAvailabilityState.Available ||\n group.availabilityState === PickupTimeslotAvailabilityState.NotAvailable\n );\n\n if (!ArrayExtensions.hasElements(filteredPickupGroups)) {\n this.props.context.telemetry.error('Data is not ready or pickup group is empty, module wont render.');\n }\n this.isLoading = false;\n this.setState({ pickupGroups: filteredPickupGroups });\n };\n\n @action\n private readonly updateCartLinePickupDateTimeslot = async (): Promise => {\n if (!this.validateTimeslot()) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n\n this.state.pickupGroups.forEach(group => {\n lineSpecs = lineSpecs.concat(group.lineDeliverySpecs);\n });\n\n this.clearError();\n this.onPending();\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinePickupDateTimeslot({ lineDeliverySpecifications: lineSpecs });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n private readonly validateTimeslot = (): boolean => {\n let validationResult = true;\n this.state.pickupGroups.forEach(group => {\n switch (group.availabilityState) {\n case PickupTimeslotAvailabilityState.NotAvailable:\n // Need customer to select another store in this case\n validationResult = false;\n break;\n case PickupTimeslotAvailabilityState.Available:\n if (!group.selectedDate || !group.selectedTimeslot) {\n if (!group.selectedDate) {\n group.dateErrorMessage = this.props.resources.pickupDateRequired;\n }\n if (!group.selectedTimeslot) {\n group.timeslotErrorMessage = this.props.resources.pickupTimeslotRequired;\n }\n this.setError(this.props.resources.pickupDateTimeslotRequired, false);\n validationResult = false;\n } else {\n group.dateErrorMessage = undefined;\n group.timeslotErrorMessage = undefined;\n }\n break;\n\n // We consider timeslot not defined as fallback case\n case PickupTimeslotAvailabilityState.NotDefined:\n default:\n }\n });\n\n return validationResult;\n };\n\n private readonly getStoreName = (orgUnitLocation: OrgUnitLocation | undefined, cartLine: CartLine): string => {\n return orgUnitLocation?.OrgUnitName || cartLine.ShippingAddress?.Name || cartLine.FulfillmentStoreId || '';\n };\n\n private readonly canPickup = (): boolean => {\n return ArrayExtensions.hasElements(this.state.pickupGroups);\n };\n\n private readonly isPickupTimeSlotSet = (): boolean => {\n return (\n ArrayExtensions.hasElements(this.state.pickupGroups) &&\n this.state.pickupGroups.every(\n group =>\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.StartDateTime) &&\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.EndDateTime)\n )\n );\n };\n\n private readonly getCartLinesforPickup = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this.isPickupLine(line)) || [];\n };\n\n private readonly isPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props?.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.includes(deliveryMode);\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode === pickupDeliveryModeCode;\n };\n\n private readonly isPickupLine = (line: CartLine): boolean => {\n return (\n this.isPickupMode(line.DeliveryMode) && line.FulfillmentStoreId !== undefined && !isNullOrWhiteSpace(line.FulfillmentStoreId)\n );\n };\n\n private readonly getPickupModeDescription = (\n resourceString: string,\n deliveryMode?: string,\n deliveryOptions?: ProductDeliveryOptions[],\n product?: SimpleProduct\n ): string => {\n let deliveryOption: string = resourceString;\n if (ArrayExtensions.hasElements(deliveryOptions) && product !== undefined) {\n let foundProductDeliveryOption;\n foundProductDeliveryOption = deliveryOptions?.find(deliveryO => {\n return deliveryO && deliveryO.ProductId === product.RecordId;\n });\n const deliveryDesc = foundProductDeliveryOption?.DeliveryOptions\n ? foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === deliveryMode)?.Description\n : resourceString;\n if (deliveryDesc !== undefined) {\n deliveryOption = deliveryDesc;\n }\n }\n return deliveryOption;\n };\n\n private readonly getPickupTimeslotAvailabilityState = (dailyResult: PickupTimeslotAvailability[]) => {\n let state: PickupTimeslotAvailabilityState = PickupTimeslotAvailabilityState.None;\n if (!ArrayExtensions.hasElements(dailyResult)) {\n state = PickupTimeslotAvailabilityState.NotDefined;\n } else if (dailyResult.every(date => (date.AvailableCapacity || 0) <= 0)) {\n state = PickupTimeslotAvailabilityState.NotAvailable;\n } else {\n state = PickupTimeslotAvailabilityState.Available;\n }\n return state;\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout pickup cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutPickupCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutPickup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutPickupGroupViewProps, ICheckoutPickupViewProps } from './index';\n\nconst CheckoutPickupView: React.FC = props => {\n const { checkoutPickup, checkoutErrorRef, viewState, headerError, waiting, pickupGroups } = props;\n\n return (\n \n {viewState.isLoading && waiting}\n {viewState.isHeaderError && headerError}\n {pickupGroups.map(\n (pickupGroupViewProps: ICheckoutPickupGroupViewProps, index: number): React.ReactElement => {\n const {\n pickupGroupContainer,\n dateTimeslotContainer,\n groupDivider,\n groupHeader,\n groupErrorMessage,\n cartLineImages,\n pickupDateDropdown,\n pickupTimeslotDropdown,\n selectedDateTimeslot,\n pickupAddress\n } = pickupGroupViewProps;\n\n return (\n \n {groupDivider}\n {groupHeader}\n {groupErrorMessage}\n {cartLineImages}\n {viewState.isShowDropdown && (\n \n {pickupDateDropdown}\n {pickupTimeslotDropdown}\n \n )}\n {viewState.isShowSelected && pickupAddress}\n {viewState.isShowSelected && selectedDateTimeslot}\n \n );\n }\n )}\n \n );\n};\n\nexport default CheckoutPickupView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IModule } from '@msdyn365-commerce/core';\nimport {\n Address,\n CartLine,\n LineDeliverySpecification,\n PickupTimeslotAvailability,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ICheckoutPickupGroupKey {\n pickupStoreId: string;\n deliveryMode: string;\n}\n\nexport interface ICheckoutPickupGroup extends ICheckoutPickupGroupKey {\n pickupModeName: string;\n storeName: string;\n pickupAddress?: Address;\n availabilityState: PickupTimeslotAvailabilityState;\n groupErrorMessage?: string;\n dateErrorMessage?: string;\n timeslotErrorMessage?: string;\n lineDeliverySpecs: LineDeliverySpecification[];\n cartLines: ICartLineWithProduct[];\n\n availableDates: Date[];\n availableTimeslots: PickupTimeslotAvailability[];\n\n selectedDate?: Date;\n selectedTimeslot?: PickupTimeslotAvailability;\n}\n\nexport enum PickupTimeslotAvailabilityState {\n None,\n Available,\n NotDefined,\n NotAvailable // All slots occupied\n}\n\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\nexport interface ICheckoutPickupGroupViewProps {\n moduleProps: IModule;\n\n pickupGroupContainer: INodeProps;\n dateTimeslotContainer: INodeProps;\n\n pickupStoreId: string;\n pickupModeName: string;\n deliveryMode: string;\n\n groupDivider: React.ReactNode;\n groupHeader: React.ReactNode;\n groupErrorMessage: React.ReactNode;\n cartLineImages: React.ReactNode;\n pickupDateDropdown: React.ReactNode;\n pickupTimeslotDropdown: React.ReactNode;\n\n selectedDateTimeslot: React.ReactNode;\n pickupAddress: React.ReactNode;\n}\n\nexport interface ICheckoutPickupErrorProps {\n errorMessage?: string;\n}\n\nexport const CheckoutPickupError: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n\nexport interface ICheckoutPickupGroupHeaderProps {\n moduleClassName: string;\n storeInfo: string;\n items: string;\n}\n\nexport const CheckoutPickupGroupHeader: React.FC = ({ moduleClassName, storeInfo, items }) => {\n return (\n
\n
{storeInfo}
\n
{items}
\n
\n );\n};\n\nexport interface ICheckoutPickupTimeslotInfoProps {\n moduleClassName: string;\n title: string;\n content: string;\n}\n\nexport const CheckoutPickupTimeslotInfo: React.FC = ({ moduleClassName, title, content }) => {\n return (\n
\n
{title}
\n
{content}
\n
\n );\n};\n\nexport interface ICheckoutPickupAddressProps {\n moduleClassName: string;\n title: string;\n address?: Address;\n}\n\nexport const CheckoutPickupAddress: React.FC = ({ moduleClassName, title, address }) => {\n if (!address) {\n return null;\n }\n\n return (\n
\n
{title}
\n {address.Name && {address.Name}}\n <>\n {address.Street && {address.Street}}\n {address.City && {address.City}}\n {address.State && {`, ${address.State}`}}\n {address.County && {`, ${address.County}`}}\n {address.ZipCode && {` ${address.ZipCode}`}}\n {address.ThreeLetterISORegionName && (\n \n {` ${address.ThreeLetterISORegionName}`}\n \n )}\n \n
\n );\n};\n\nexport interface ICheckoutPickupCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\nexport interface ICheckoutPickupCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutPickupCartLineInfo[];\n}\n\nexport const CheckoutPickupCartLines: React.FC = ({ moduleClassName, cartLines }) => {\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n return (\n
\n {cartLines.map(prop => {\n const showQty = prop.quantity > 1;\n let className = `${moduleClassName}__group-product-image`;\n if (showQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {showQty &&
{prop.quantity}
}\n
\n );\n })}\n
\n );\n};\n\nexport const DefaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg\"', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format } from '@msdyn365-commerce-modules/utilities';\n\nexport function getDate(date: Date | undefined, locale: string): string {\n if (!date) {\n return '';\n }\n const options: Intl.DateTimeFormatOptions = {\n timeZone: 'UTC'\n };\n const formatter = new Intl.DateTimeFormat(locale, options);\n return formatter.format(new Date(date));\n}\n\nexport const getTimeslot = (\n placeHolder: string,\n startDate: Date | undefined,\n endDate: Date | undefined,\n locale: string,\n useHour12TimeFormat?: boolean\n): string => {\n if (!startDate || !endDate) {\n return '';\n }\n let options: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' };\n options = useHour12TimeFormat\n ? { hour: 'numeric', minute: 'numeric', timeZone: 'UTC' }\n : { hour: 'numeric', minute: 'numeric', timeZone: 'UTC', hour12: true };\n const formatter = new Intl.DateTimeFormat(locale, options);\n return format(placeHolder, formatter.format(new Date(startDate)), formatter.format(new Date(endDate)));\n};\n\nexport const getUTCDateWithoutTime = (input: Date): Date => {\n const date: Date = new Date(input);\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0));\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\nimport {\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { CheckoutPickupError } from './checkout-pickup-group';\nimport { getDate } from './checkout-pickup-utility';\n\nexport interface IPickupDropdownProps {\n pickupStoreId: string;\n deliveryMode: string;\n\n className: string;\n labelClassname?: string;\n labelText: string;\n defaultText: string;\n errorMessage?: string;\n\n locale: string;\n\n // Props for the LabeledDropdown component\n dropdownId: string;\n controlledByParent: boolean;\n toggleColor?: string;\n dropdownClassname?: string;\n}\n\nexport interface IPickupDateDropdownProps extends IPickupDropdownProps {\n availableDates: Date[];\n selectedDate?: Date;\n setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): void;\n}\n\n/**\n *\n * CheckoutPickupDateDropdown component.\n * @extends {React.Component}\n */\nexport class CheckoutPickupDateDropdown extends React.PureComponent {\n private readonly defaultKey: number = -1;\n\n private readonly defaultOption: ILabeledDropdownOption;\n\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\n @computed get getDateMap(): Map {\n const map = new Map();\n this.props.availableDates.forEach((value, index) => {\n map.set(index.toString(), value);\n });\n return map;\n }\n\n constructor(props: IPickupDateDropdownProps) {\n super(props);\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\n this.updateDateSelection = this.updateDateSelection.bind(this);\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n labelClassname,\n labelText,\n errorMessage,\n dropdownId,\n availableDates,\n selectedDate,\n controlledByParent,\n toggleColor,\n dropdownClassname\n } = this.props;\n\n const { dropdownOptions, selectedOption } = this.mapDatesToOptions(availableDates, selectedDate);\n\n return (\n
\n \n \n \n
\n );\n }\n\n private readonly updateDateSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\n const { pickupStoreId, deliveryMode, setDateHandler } = this.props;\n const date: Date | undefined = this.getDate(notification);\n setDateHandler(pickupStoreId, deliveryMode, date);\n };\n\n private readonly getDate = (notification: ILabeledDropdownOnChangeNotification): Date | undefined => {\n const key: string = notification.selectedOption.key;\n if (key === this.defaultKey.toString() || !this.getDateMap.has(key)) {\n return undefined;\n }\n return this.getDateMap.get(key);\n };\n\n private readonly mapDatesToOptions = (\n dates: Date[],\n selectedDate: Date | undefined\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\n const { locale } = this.props;\n let options: ILabeledDropdownOption[] = [];\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\n\n options = dates.map((value: Date, index: number) => {\n return {\n key: index.toString(),\n value: getDate(value, locale)\n };\n });\n options.unshift(this.defaultOption);\n\n const index: number = dates.findIndex((value: Date) => selectedDate !== undefined && selectedDate.getTime() === value.getTime());\n if (index >= 0 && selectedDate) {\n selectedOption = {\n key: index.toString(),\n value: getDate(selectedDate, locale)\n };\n }\n\n return {\n dropdownOptions: options,\n selectedOption\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PickupTimeslotAvailability } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\nimport {\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { IPickupDropdownProps } from './checkout-pickup-date-dropdown';\nimport { CheckoutPickupError } from './checkout-pickup-group';\nimport { getTimeslot } from './checkout-pickup-utility';\n\nexport interface IPickupTimeslotDropdownProps extends IPickupDropdownProps {\n availableTimeslots: PickupTimeslotAvailability[];\n selectedTimeslot?: PickupTimeslotAvailability;\n timeslotPlaceHolder: string;\n setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void;\n useHour12TimeFormat?: boolean;\n}\n\n/**\n *\n * CheckoutPickupTimeslotDropdown component.\n * @extends {React.Component}\n */\nexport class CheckoutPickupTimeslotDropdown extends React.PureComponent {\n private readonly defaultKey: number = -1;\n\n private readonly defaultOption: ILabeledDropdownOption;\n\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\n @computed get getTimeslotMap(): Map {\n const map = new Map();\n this.props.availableTimeslots.forEach((value, index) => {\n map.set(index.toString(), value);\n });\n return map;\n }\n\n constructor(props: IPickupTimeslotDropdownProps) {\n super(props);\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\n this.updateTimeslotSelection = this.updateTimeslotSelection.bind(this);\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n labelClassname,\n labelText,\n errorMessage,\n dropdownId,\n availableTimeslots,\n selectedTimeslot,\n controlledByParent,\n toggleColor,\n dropdownClassname\n } = this.props;\n\n const { dropdownOptions, selectedOption } = this.mapTimeslotsToOptions(availableTimeslots, selectedTimeslot);\n\n return (\n
\n \n \n \n
\n );\n }\n\n private readonly updateTimeslotSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\n const { pickupStoreId, deliveryMode, setTimeslotHandler } = this.props;\n const timeslot: PickupTimeslotAvailability | undefined = this.getTimeslot(notification);\n setTimeslotHandler(pickupStoreId, deliveryMode, timeslot);\n };\n\n private readonly getTimeslot = (notification: ILabeledDropdownOnChangeNotification): PickupTimeslotAvailability | undefined => {\n const key: string = notification.selectedOption.key;\n if (key === this.defaultKey.toString() || !this.getTimeslotMap.has(key)) {\n return undefined;\n }\n return this.getTimeslotMap.get(key);\n };\n\n private readonly mapTimeslotsToOptions = (\n timeslots: PickupTimeslotAvailability[],\n selectedTimeslot: PickupTimeslotAvailability | undefined\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\n const { timeslotPlaceHolder, locale, useHour12TimeFormat } = this.props;\n let options: ILabeledDropdownOption[] = [];\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\n\n options = timeslots.map((value: PickupTimeslotAvailability, index: number) => {\n return {\n key: index.toString(),\n value: getTimeslot(timeslotPlaceHolder, value.StartDateTime, value.EndDateTime, locale, useHour12TimeFormat)\n };\n });\n options.unshift(this.defaultOption);\n\n const index: number = timeslots.findIndex(\n value =>\n selectedTimeslot !== undefined &&\n selectedTimeslot.StartDateTime?.getTime() === value.StartDateTime?.getTime() &&\n selectedTimeslot.EndDateTime?.getTime() === value.EndDateTime?.getTime()\n );\n if (index >= 0 && selectedTimeslot) {\n selectedOption = {\n key: index.toString(),\n value: getTimeslot(\n timeslotPlaceHolder,\n selectedTimeslot.StartDateTime,\n selectedTimeslot.EndDateTime,\n locale,\n useHour12TimeFormat\n )\n };\n }\n\n return {\n dropdownOptions: options,\n selectedOption\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutTermsAndConditionsData } from './checkout-terms-and-conditions.data';\nimport { ICheckoutTermsAndConditionsProps } from './checkout-terms-and-conditions.props.autogenerated';\nimport CheckboxComponent from './components/checkout-terms-and-conditions.check-box';\nimport ErrorMessageComponent from './components/checkout-terms-and-conditions.error-message';\nimport ErrorTitleComponent from './components/checkout-terms-and-conditions.error-title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutTermsAndConditionsModuleProps\n extends ICheckoutTermsAndConditionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutTermsAndConditions {\n termsAndConditionAcceptance: INodeProps;\n checkBox: React.ReactNode;\n description: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsError {\n error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsViewState {\n isError: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutTermsAndConditionsViewProps extends ICheckoutTermsAndConditionsProps<{}> {\n checkoutTermsAndConditions: IModuleProps;\n isTermsAccepted: boolean;\n errorMessageData: string;\n viewState: ICheckoutTermsAndConditionsViewState;\n termsAndConditionsContent: ICheckoutTermsAndConditions;\n errorMessage?: ICheckoutTermsAndConditionsError;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutTermsAndConditions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutTermsAndConditions extends React.Component {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isTermsAccepted: boolean = true;\n\n @observable private errorMessage?: string;\n\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get isShowButtons(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\n }\n\n @computed get isAutoSave(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\n }\n\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\n const { showCheckbox } = this.props.config;\n return !showCheckbox;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\n async () => {\n this.isTermsAccepted =\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutTermsAndConditions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutTermsAndConditions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutTermsAndConditionsModuleProps,\n nextState: ICheckoutTermsAndConditionsViewState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady, hasError },\n config: { className }\n } = this.props;\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\n const isError = hasError;\n const isShowContent = !isReady;\n const isShowSelected = !hasError && isReady;\n\n const viewProps = {\n ...this.props,\n ...this.state,\n isTermsAccepted: this.isTermsAccepted,\n errorMessageData: this.errorMessage,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isError,\n isShowSaveButton: isShowContent && this.isShowButtons,\n isShowEditButton: isShowSelected && this.isShowButtons,\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\n },\n checkoutTermsAndConditions: {\n moduleProps: this.props,\n className: classname('ms-checkout-terms-and-conditions', className)\n },\n termsAndConditionsContent: this.getTermsAndConditions(),\n errorMessage: this.getErrorMessage(),\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSubmit,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onChange: this.onChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\n\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\n const {\n moduleState: { isReady },\n config: { showCheckbox, description }\n } = this.props;\n const isDisabled = isReady && !this.isAutoSave;\n const isTermsAndConditionAccepted = this.isTermsAccepted;\n const { checkboxAriaLabel } = this.props.resources;\n return {\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\n checkBox: showCheckbox && (\n \n ),\n description: (\n \n )\n };\n };\n\n @action\n private readonly init = async (): Promise => {\n const {\n data,\n config: { showCheckbox }\n } = this.props;\n\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(true);\n this.isTermsAccepted = true;\n } else if (showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(false);\n this.isTermsAccepted = false;\n }\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\n });\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\n return (\n \n {cancelBtnLabel}\n \n );\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\n return (\n \n {editBtnLabel}\n \n );\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Terms and conditions onEdit is called.');\n\n this.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\n\n if (!this.isTermsAccepted) {\n if (this.isAutoSave) {\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n } else {\n this.setError(this.props.resources.errorMessage);\n this.props.moduleState.setHasError(true);\n }\n } else {\n this.clearError();\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Terms and conditions onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\n if (!isTermsAccepted) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onChange = async (event: React.ChangeEvent) => {\n const checked = event.target.checked;\n this.isTermsAccepted = checked;\n\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\n }\n\n if (this.isAutoSave) {\n await this.onSubmit();\n }\n };\n}\n\nexport default CheckoutTermsAndConditions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutTermsAndConditions,\n ICheckoutTermsAndConditionsError,\n ICheckoutTermsAndConditionsViewProps\n} from './checkout-terms-and-conditions';\n\nconst TermsAndCondition: React.FC = ({ termsAndConditionAcceptance, checkBox, description }) => {\n return (\n \n {checkBox}\n {description}\n \n );\n};\n\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\n return (\n \n {title}\n {message}\n \n );\n};\n\nconst CheckoutTermsAndConditionsView: React.FC = props => {\n const {\n checkoutTermsAndConditions,\n checkoutErrorRef,\n viewState,\n termsAndConditionsContent,\n errorMessage,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isError && errorMessage && }\n \n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutTermsAndConditionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\n isChecked: boolean;\n ariaLabel?: string;\n disabled: boolean;\n id?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.ariaLabel\n * @param root0.disabled\n * @param root0.telemetryContent\n * @param root0.onChange\n * @param root0.id\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\n isChecked,\n ariaLabel,\n disabled,\n telemetryContent,\n onChange,\n id\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n \n \n );\n};\n\nexport default CheckoutTermsAndConditionsCheckbox;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { CartCheckout } from '../../../common/checkout';\n\nexport const OPERATIONS = {\n PayCard: 201,\n PayGiftCertificate: 214,\n PayLoyalty: 207,\n PayCustomerAccount: 202\n};\n\nexport default async (\n ctx: IActionContext,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n): Promise => {\n return CartCheckout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\n};\n"],"names":["ApplePayButtonState","ApplePayPaymentAuthorizationResult","CheckoutApplePay","React","constructor","props","super","moduleClassName","applePaySdkId","zeroAmount","handlePayButton","async","config","resources","telemetry","this","handler","onAuthorize","authorizePayment","onCancel","cancelPayment","onPaymentMethodUpdate","updatePaymentMethod","onValidation","validateMerchant","shouldRequestShippingAddress","onShippingContactSelected","shippingContactSelected","onShippingMethodSelected","shippingMethodSelected","displayName","window","CreateApplePaySession","amountDue","toString","setState","lineDisplayName","error","showErrorMessage","genericErrorMessage","checkout","data","context","actionContext","paymentConnectorId","state","checkoutState","getCheckoutState","cartState","checkoutCart","requestContext","channel","Error","_checkout$result","cardPaymentAcceptResult","AccessCode","paymentToken","Settings","PaymentConnectorId","result","updateCardPaymentAcceptResult","newCardPaymentAcceptResult","PlaceOrder","undefined","cart","Version","loadPaymentConnectorSdk","cardPaymentAcceptPoint","AcceptPageContent","connectorSdk","sdk","document","createElement","id","type","appendChild","createTextNode","body","_checkout$result2","_cardPaymentAcceptPoi","information","validationUrl","validationEvent","Promise","reject","cartId","Id","validationObject","domainName","location","hostname","validationBody","JSON","stringify","validationData","retrieveCardPaymentAcceptResultAsync","callerContext","btoa","catch","resolve","updateContactInfo","authorizeEvent","shippingContact","resultCode","STATUS_SUCCESS","newTotal","label","merchantName","amount","shippingAddress","getAddressFromShippingContact","shippingMethods","getShippingMethods","ObjectExtensions","isNullOrUndefined","length","_shippingMethods$at","shippingMethodId","at","identifier","updateShippingInfo","e","newShippingMethods","shippingMethod","_checkout$result3","deliveryOptionFilter","FilterDeliveryModeOption","FilterOutNonCarrierDeliveryMode","appleDeliveryOptions","getDeliveryOptionsAsync","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","address","forEach","element","push","Description","ShippingChargeAmount","detail","Code","_shippingContact$addr","_shippingContact$addr2","ThreeLetterISORegionName","getThreeLetterCountryCode","countryCode","Name","getContactName","Street","addressLines","StreetNumber","City","locality","State","administrativeArea","ZipCode","postalCode","givenName","familyName","StringExtensions","isNullOrWhitespace","newGuestCheckoutEmail","emailAddress","_checkout$result4","warning","updateGuestCheckoutEmail","_checkout$result5","updateCartDeliverySpecificationInput","deliveryModeId","updateCartDeliverySpecification","_result$errorDetails","status","errorDetails","LocalizedMessage","message","errorMessage","applePayButtonState","Unknown","loyaltyAmount","giftCardExtends","reduce","count","giftCard","Balance","_checkoutState$custom","customerAccountAmount","_checkout$result6","AmountDue","Math","max","getGiftCardTotalAmount","getLoyaltyAmount","getCustomerAccountAmount","script","onload","_cardPaymentAcceptPoi2","isApplePayAvailable","Available","NotAvailable","src","onerror","render","className","request","user","isOBORequest","EnabledPaymentsForOBO","ExpressPayment","applePayButton","onClick","viewProps","_objectSpread","checkoutApplePay","moduleProps","classNames","alert","ErrorComponent","Object","assign","title","errorMessageTitle","renderView","__decorate","computed","CheckoutCustomerAccountPayment","defaultLocale","baseClassName","checkoutErrorRef","getAvailableCredit","creditBalances","availableCredit","InvoiceAccountCreditLimit","CreditLimit","PendingBalance","InvoiceAccountBalance","InvoiceAccountPendingBalance","addPayment","handleSaveAndContinue","_clearError","updateCustomerAccountAmount","newAmount","paymentAmount","toggleCreditSection","isCreditSectionExpanded","init","moduleState","handleCancelOrSubmit","onSubmit","onEdit","onReady","onChangePaymentAmount","customizedAmt","amountVariable","updateMaxAmount","onUpdating","Msdyn365","TotalAmount","_setErrorMessage","invalidAmountForOBOMessage","isCheckoutCustomerAccountPaymentRequired","customerAccountCreditErrorMessage","onSkip","removePayment","NaN","setHasError","locale","get","maxPaymentAmount","Intl","NumberFormat","format","customerInfo","b2bChannel","isChannelTypeB2B","platform","AllowOnAccountPayment","enableCustomerAccountPayment","_this$props$data$cust","_this$props$data$cred","customerInformation","MandatoryCreditLimit","min","invalidAmountExceedAmountDueMessage","invalidAmountNegativeMessage","orderTotal","excessCredit","cultureFormatter","formatCurrency","currencyCode","_this$props$data$chec","when","isDataReady","reaction","totalAmount","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec2","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec3","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","shouldComponentUpdate","nextProps","nextState","_this$props$data$cust2","_this$props$context$r","isCustomerAccountPaymentEnabled","hasInvoiceLine","customerSinceDate","Date","CreatedDateTime","toLocaleDateString","hasError","checkoutCustomerAccount","classnames","editView","getAccountPaymentFormEditMode","onAddPayment","maxAmount","customer","customerCreatedDate","showCreditLimit","onToggleCreditSection","creditSectionIsExpanded","formattedExcessCredit","onRemovePayment","appliedAmount","skipOnChangeLogic","features","skipCheckoutOnChangeLogic","summaryView","getAccountPaymentFormSummaryMode","action","withModuleState","observer","onAddAccountPayment","event","preventDefault","onChangeAmountHandler","value","target","customState","customizedAmount","returnModifiedState","getLocaleBasedCustomizedPrice","keyCode","options","addPaymentButtonLabel","inputAmountLabel","inputAmountAriaLabel","customerSinceLabel","accountCreditLabel","creditDetailsSectionLabel","orderTotalLabel","availableCreditLabel","creditExcessLabel","appliedCustomerAccountPaymentLabel","removeCustomerAccountPaymentLabel","accountCreditDetails","inputLabel","formProps","tag","addPaymentButton","Button","disabled","Number","isNaN","inputAmount","onInput","_ref","currentTarget","onKeyDown","which","customerName","customerAccountNumber","AccountNumber","customerSince","accountCredit","role","accountDetails","Alert","assertive","fade","includeAlertClass","isOpen","appliedLine","bottomBorder","inputAmountSummaryLabel","paymentAmountInput","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","CheckoutExpressPaymentContainer","_getItems","slots","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","text","isReady","shouldHideExpressPaymentContainer","shippingAddressFromExpressCheckout","componentDidMount","isExpressPaymentModulesReady","items","item","key","includes","_this$props$data$chec4","extensionPropertyKey","paymentTenderType","isModuleReady","find","property","Key","Value","BooleanValue","_this$props$data$chec5","isExpressCheckoutApplied","checkoutExpressPaymentSectionLoadingMessage","isPaymentVerificationRedirection","shouldHideExpressPaymentContainerClassName","classname","checkoutPlainContainerProps","waiting","WaitingComponent","_renderMsdyn365Text","headerProps","editProps","ContainerItemsComponent","isLoadingClassName","_ref2","Module","Node","SupportedGiftCardType","CheckoutGiftCard","_this","isFetchingGiftCard","giftCardNumber","giftCardPin","giftCardExp","inputRef","inputPinRef","inputExpRef","isRequired","isEnabled","giftCards","couldPaidByGiftCard","isAuthenticated","app","giftCardSupported","External","shouldBeEnabledForGuest","hasSelectedItem","getFormattedPrice","price","arguments","enterGiftCardNumber","clearError","enterGiftCardPin","enterGiftCardExp","setError","debug","removeGiftCard","applyGiftCard","trim","giftCardTypes","getGiftCardTypes","giftCardType","isPinRequired","IsPinRequired","isExpRequired","IsExpirationDateRequired","tenderTypeId","PaymentMethodId","getGiftCard","addGiftCard","additionalProperties","Pin","ExpirationDate","TenderTypeId","input","current","focus","findGiftcardTenderTypes","tenderTypes","operationId","giftcardType","matchedTenderTypes","Internal","filter","tenderType","OperationId","ConnectorId","map","noBalanceError","invalidCardInfoError","invalidCardTypeError","noCardPinError","noCardExpError","supportedGiftCardType","getTenderTypesAsync","internalGiftcardTenderTypes","OPERATIONS","PayGiftCertificate","externalGiftcardTenderTypes","Both","month","parseInt","split","year","getGiftCardAsync","then","activeGiftCard","emptyInputError","duplicatedCodeError","invalidCodeError","some","card","resolveCardTypesAsync","CardType","GiftCard","_this$props$data$chec6","showAdditionalFields","additionalFields","shouldPayGiftCard","supportExternalGiftCard","checkoutGiftCardProps","showGiftCard","TitleCompoent","giftCardFormLabel","list","getList","canRemove","onRemoveGiftCard","form","getForm","onEnterGiftCardNumber","onEnterGiftCardPin","onEnterGiftCardExp","onApplyGiftCard","disableAddGiftCard","From","inputPinLabel","inputExpLabel","inputProps","inputNumProps","inputPinProps","inputExpProps","inputNumber","inputPin","inputExp","applyButton","showGiftCardPinInput","showGiftCardExpInput","alertFieldLabel","SelectedGiftCard","itemProps","selectedGiftCard","removeButton","GiftCardList","_ref3","listProps","_ref4","_objectWithoutProperties","_excluded","AddResource","_ref5","ShowResource","_ref6","ref","onApplyHandler","onChangeNumberHandler","replace","RegExp","onChangePinHandler","onChangeExpHandler","applyGiftCardButton","giftCardNumberLabel","giftCardPinLabel","giftCardExpLabel","giftCardAlertLabel","giftCardPinPlaceholderText","giftCardExpPlaceholderText","onChange","placeholder","onRemoveHandler","_giftCard$Id","getItem","enteredGiftCardLabel","giftCardAvailableBalanceLabel","removeGiftCardButton","balance","CardCurrencyCode","giftCardLast4Digit","substr","GooglePayButtonState","CheckoutGooglePay","baseRequest","apiVersion","apiVersionMinor","allowedCardNetworks","allowedCardAuthMethods","baseCardPaymentMethod","parameters","allowedAuthMethods","paymentsClient","googlePayButton","initialize","loadGoogleSdk","isReadyToPayRequest","allowedPaymentMethods","buttonState","isReadyToPay","googleClient","createButton","buttonColor","buttonType","buttonSizeMode","loadPaymentData","paymentDataRequest","statusCode","statusMessage","onPaymentAuthorized","processPayment","paymentData","transactionState","reason","intent","merchantConfiguration","connectorId","paymentMethodData","tokenizationData","token","browserInfo","acceptHeader","colorDepth","screen","language","navigator","javaEnabled","screenHeight","height","screenWidth","width","userAgent","timeZoneOffset","getTimezoneOffset","settings","ReturnUrl","GetCheckoutReturnUrl","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","performRedirect","redirectPaymentConnectorId","redirectInfo","parse","redirectAdditionalContext","updatePaymentTenderType","newPaymentTenderType","saveDataInStorage","updateIsPaymentVerificationRequired","newIsPaymentVerificationRequired","url","method","propertyName","keys","name","submit","handlePaymentVerification","requestFormData","query","redirectResult","refreshCart","updateShouldCollapsePaymentSection","newShouldCollapsePaymentSection","clientRequest","environment","paymentDataCallbacks","google","payments","api","PaymentsClient","totalPriceStatus","totalPrice","cardPaymentMethod","tokenizationSpecification","gateway","gatewayMerchantId","adyenMerchantId","transactionInfo","merchantInfo","merchantId","googleMerchantId","callbackIntents","_checkout$result7","isPlaceOrderEnabledInRedirection","loadPaymentAcceptPage","checkoutButton","checkoutGooglePay","apiSettings","paymenTenderType","getCardPaymentAcceptPointAction","GetCardPaymentAcceptPointInput","paymentAcceptPoint","configuration","getMerchantConfiguration","console","CheckoutGuestProfile","email","customerReferenceRef","customerRequisitionRef","noteRef","_this$props$data$acco","customerAccountInformation","accountInformation","updateEmail","Email","setErrorMsgOboUserEmailEmpty","emailOnCart","ReceiptEmail","notes","Notes","customerRequisition","CustomerRequisition","customerReference","Comment","isNullOrEmpty","emailAddressFromExpressCheckout","isEmailValid","updateGuestProfile","updateHasGuestCheckoutEmail","newHasGuestCheckoutEmail","rowEmail","hasCheckoutError","onChangeCustomerRef","customerRef","onChangeCustomerRequisition","onChangeNote","note","defaultNote","defaultNoteTitle","Title","RestrictionValue","EmailRegex","defaultRegex","test","submitEmail","_this$inputRef$curren","guestCheckoutEmail","isEmailFromExpressCheckoutDifferent","isExpressAddressApplied","_this$props$data$chec7","_this$props$data$chec8","_this$props$data$chec9","_this$props$data$chec10","_this$props$data$chec11","_this$props$data$chec12","_this$props$data$chec13","_this$props$data$chec14","_this$props$data$chec15","_note$","hasExternalSubmitGroup","showContactInfo","getShowContactInfo","canEdit","showCustomerRefInfo","enableCustomerReference","getCustomerRefInfo","showPurchaseOrderInfo","enableCustomerRequisition","getPurchaseOrderInfo","purchaseOrder","showNoteInfo","enableCartNote","getNoteInfo","noteDescription","addContactInfo","getAddContactInfo","hasEmailError","canSubmit","canCancel","addPurchaseOrderInfo","getAddPurchaseOrderInfo","purchaseOrderNumber","addCustomerRefInfo","getAddCustomerRefInfo","addNoteInfo","getAddNoteInfo","ShowContactInfo","showInfoProps","editButton","ShowCustomerRefInfo","ShowPurchaseOrderInfo","ShowNoteInfo","AddContactInfo","addFormProps","submitButton","cancelButton","inputGroupProps","AddPurchaseOrderInfo","AddNoteInfo","_ref7","AddCustomerRefInfo","_ref8","_ref9","emailLabel","emailErrortext","saveBtnLabel","cancelBtnLabel","onInputChange","onInputChangeHandler","color","customerRefLabel","customerRefErrortext","maxLength","purchaseOrderLabel","purchaseOrderErrortext","noteLabel","noteErrortext","editBtnLabel","CheckoutLoyalty","_defaultLoyaltyPoints","loyaltyCard","CardNumber","LoyaltyCardId","updateLoyaltyCardId","loyaltyCardNumber","shouldPayLoyalty","_dialogToggleRef","_applyLoyaltyPoints","bind","_removeLoyaltyPoints","_onInputChange","_onBlur","dollarsApplied","maxDollars","isFetchingLoyaltyCard","loyaltyTransactionEstimation","MaxCurrencyValueOfLoyaltyPoints","_updateEstimate","_updateLoyalty","Loyalty","isShowLoyalty","channelConfig","viewState","isShowAddLoyalty","disableAddLoyaltyComponent","checkoutLoyalty","showLoyalty","heading","Heading","headingTag","loyaltyHeadingText","coveredAmountText","TextComponent","loyaltyCoveredAmountText","PriceComponent","typeName","CustomerContextualPrice","Currency","addLoyalty","drawer","Drawer","toggleButtonText","_drawerHeader","openGlyph","closeGlyph","glyphPlacement","cardNumber","rewardPoints","RewardPoints","points","index","_renderPointSection","availablePointsLabel","expiringLoyaltyPointsLabel","loyaltyAmountContainer","appliedLoyaltyAmountContainer","loyaltyAmountLabel","LabelComponent","payWithLoyaltyAmountLabel","htmlFor","loyaltyAmountInput","InputComponent","onBlur","step","ariaValueMax","ariaValueMin","ariaValueNow","loyaltyAmountApplyButton","applyCheckoutLoyaltyPaymentText","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","removeCheckoutLoyaltyPaymentText","innerRef","point","RewardPointId","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","ActivePoints","expiringPointsText","expiringPoints","PointsExpiringSoon","updateLoyaltyAmount","parseFloat","num","toFixed","getElementById","isDisabled","loyalPointsRequest","createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput","_query","bypassCache","callActionOrExecute","_points$MaxCurrencyVa","update","GetLoyaltyTransactionEstimationInput","newMaxPoints","exception","AddCheckoutLoyalty","rewardPoint","ShowCheckoutLoyalty","CheckoutPickup","isLoading","initModuleState","canPickup","isPickupTimeSlotSet","onPending","updateCartLinePickupDateTimeslot","isHeaderError","headerErrorMessage","initPickupGroup","_this$props","_featureState$result","pickupCartLines","getCartLinesforPickup","products","getProductsByCartLines","ChannelId","pickupGroups","locations","orgUnitLocations","featureState","deliveryOptions","retailMultiplePickUpOptionEnabled","feature","IsEnabled","line","group","x","pickupStoreId","FulfillmentStoreId","deliveryMode","DeliveryMode","product","RecordId","ProductId","lineDeliverySpecification","LineId","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","PickUpStoreId","PickupTimeslotStartDateTime","PickupTimeslotEndDateTime","DeliveryAddress","ShippingAddress","lineDeliverySpecs","cartLines","cartLine","OrgUnitNumber","storeName","getStoreName","selectedDate","getUTCDateWithoutTime","selectedTimeslot","StartDateTime","EndDateTime","newGroup","pickupModeName","getPickupModeDescription","generalPickupText","pickupAddress","availabilityState","PickupTimeslotAvailabilityState","None","availableDates","availableTimeslots","dailyGroupingResults","searchCriteria","DeliveryModeCode","StoreId","SearchOptionValue","getEstimatedPickupTimeslotAvailabilitiesAsync","getPickupTimeslotAvailabilityState","groupErrorMessage","noAvailableDateError","AvailableCapacity","timeslotResults","StartDate","EndDate","filteredPickupGroups","ArrayExtensions","hasElements","validateTimeslot","lineSpecs","concat","lineDeliverySpecifications","setIsCancellable","_unused","channelId","productInputs","ProductInput","getSimpleProducts","validationResult","dateErrorMessage","timeslotErrorMessage","pickupDateRequired","pickupTimeslotRequired","pickupDateTimeslotRequired","NotDefined","orgUnitLocation","_cartLine$ShippingAdd","OrgUnitName","every","_group$selectedTimesl","_group$selectedTimesl2","CartLines","isPickupLine","isPickupMode","_this$props2","_featureState$result2","pickupDeliveryModeCode","PickupDeliveryModeCode","channelDeliveryOptionConfig","_channelDeliveryOptio","pickupDeliveryMode","PickupDeliveryModeCodes","isNullOrWhiteSpace","resourceString","deliveryOption","_foundProductDelivery","_foundProductDelivery2","foundProductDeliveryOption","deliveryO","deliveryDesc","DeliveryOptions","option","dailyResult","date","_countItems","cartlines","quantity","setDateHandler","setTimeslotHandler","pickupDateLabel","pickupTimeslotLabel","pickupDateDefaultText","pickupTimeslotDefaultText","itemsText","singleItemText","pickupDateTimeslotText","pickupTimeslotPlaceHolder","pickupLocationLabel","imageSettings","useHour12TimeFormat","defaultClassName","groupsViewProps","_value$selectedTimesl","_value$selectedTimesl2","groupDivider","_line$product","_line$product2","_line$product3","_context$request$app","lineId","imageProps","altText","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","OmniChannelMedia","gridSettings","DefaultImageSettings","loadFailureBehavior","Quantity","numberOfCartLines","itemText","itemTitle","storeInfo","groupHeader","CheckoutPickupGroupHeader","lineImageProps","cartLineImages","CheckoutPickupCartLines","dateString","getDate","timeslotString","getTimeslot","timeslotInfoProps","content","selectedDateTimeslotNode","CheckoutPickupTimeslotInfo","addressProps","CheckoutPickupAddress","dropdownClassName","labelClassName","dropdownSelectClassName","dateDropdownNode","CheckoutPickupDateDropdown","defaultText","labelText","dropdownId","controlledByParent","labelClassname","dropdownClassname","timeslotDropdownNode","CheckoutPickupTimeslotDropdown","timeslotPlaceHolder","viewProp","pickupGroupContainer","dateTimeslotContainer","CheckoutPickupError","pickupDateDropdown","pickupTimeslotDropdown","selectedDateTimeslot","isShowDropdown","isShowSelected","checkoutPickup","headerError","Waiting","pickupDate","oldGroup","lineSpec","noAvailableTimeslotError","groups","pickupTimeslot","observable","pickupGroupViewProps","County","prop","showQty","Image","viewports","xs","q","w","h","lg","xl","lazyload","quality","DateTimeFormat","timeZone","placeHolder","startDate","endDate","hour","minute","hour12","formatter","UTC","getUTCFullYear","getUTCMonth","getUTCDate","defaultKey","updateDateSelection","notification","selectedOption","getDateMap","has","mapDatesToOptions","dates","defaultOption","unshift","findIndex","getTime","dropdownOptions","Map","set","toggleColor","LabeledDropdown","onSelectOption","updateTimeslotSelection","getTimeslotMap","mapTimeslotsToOptions","timeslots","_selectedTimeslot$Sta","_value$StartDateTime","_selectedTimeslot$End","_value$EndDateTime","paymentInstrumentModuleId","CheckoutPlainContainer","getItems","getActiveChildModuleStates","childIds","getModule","hasModuleState","isPaymentSectionContainer","childId","shouldEnableSinglePaymentAuthorizationCheckout","isSkipped","onContainerReady","isCollapse","_checkoutResult$check","_cart$TotalAmount","shouldSubmitContainer","shouldCollapsePaymentSection","shouldTriggerPaymentWithPlaceOrder","updateIsPaymentSectionContainerHasError","newIsPaymentSectionContainerHasError","isCheckoutCallFailed","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","componentDidUpdate","enableControl","hasInitialized","container","hidden","loading","LoadingComponent","initialized","skipped","ready","updating","isUpdating","pending","isPending","ItemComponent","Loading","CheckoutTermsAndConditions","isTermsAccepted","handleTextChange","description","getTermsAndConditions","showCheckbox","isAutoSave","isTermsAndConditionAccepted","checkboxAriaLabel","termsAndConditionAcceptance","checkBox","CheckboxComponent","isChecked","ariaLabel","telemetryContent","MsDyn365","_data$checkout$result","updateTermsAndConditionsAcceptance","getErrorMessage","ErrorTitleComponent","ErrorMessageComponent","getCancelButton","cancelBtnAriaLabel","getSaveButton","saveBtnAriaLabel","getEditButton","editBtnAriaLabel","newIsTermsAndConditionAccepted","checked","updateIsTermsAndConditionsChecked","newIsTermsAndConditionChecked","getTelemetryObject","telemetryPageName","friendlyName","showControlButtons","defaultTermsAndConditionAcceptedValue","isError","isShowContent","errorMessageData","isShowSaveButton","isShowButtons","isShowEditButton","isShowCancelButton","checkoutTermsAndConditions","termsAndConditionsContent","saveButton","onSave","TermsAndCondition","ErrorMessage","payLoad","getPayloadObject","attribute","getTelemetryAttributes","PayCard","PayLoyalty","PayCustomerAccount"],"sourceRoot":""}