{"version":3,"file":"static/js/63ed2aa5b9e0a1027234.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/actions/get-products-details-in-active-checkout-cart.ts?f6c5","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/address-detail-item.tsx?d9a2","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-date.tsx?bd12","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-grp.tsx?3a15","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-cartLine-delivery-options-radio.tsx?045f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/get-line-items.tsx?e389"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for ActiveCheckoutCartWithProductsDetails data action.\n */\nexport class ActiveCheckoutCartProductsDetailsInput implements IActionInput {\n public getCacheKey = () => 'ActiveCheckoutCartProducts';\n\n public getCacheObjectType = () => 'ActiveCheckoutCartProducts';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createCartInput = () => {\n return new ActiveCheckoutCartProductsDetailsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveCheckoutCartProductsDetailsAction(\n input: ActiveCheckoutCartProductsDetailsInput,\n ctx: IActionContext\n): Promise {\n // Check if the input is valid\n if (!input) {\n ctx.telemetry.exception(new Error('[getActiveCheckoutCartWithProductsDetails]No valid Input was provided, failing'));\n throw new Error('[getActiveCheckoutCartWithProductsDetails]No valid Input was provided, failing');\n }\n\n const checkoutState = await getCheckoutState(ctx);\n const cart = checkoutState.checkoutCart.cart;\n\n // If there are cart lines, make call to get products\n if (!checkoutState.checkoutCart.hasInvoiceLine && cart && cart.CartLines && cart.CartLines.length > 0) {\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(\n cartLine.ProductId,\n ctx.requestContext.apiSettings,\n undefined,\n undefined,\n ctx.requestContext,\n cartLine.CatalogId\n );\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then(products => {\n if (products) {\n return products;\n }\n return [];\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCheckoutCartWithProductsDetails]Unable to hydrate cart with product information');\n });\n }\n\n return [];\n}\n\nexport const getActiveCheckoutCartProductsDetailsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/checkout/get-products-details-in-active-checkout-cart',\n action: >getActiveCheckoutCartProductsDetailsAction,\n input: createCartInput\n});\n\nexport default getActiveCheckoutCartProductsDetailsActionDataAction;\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 { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n CartLine,\n DeliveryOption,\n DeliveryPreferenceType,\n LineDeliverySpecification\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n GetDeliveryOptionsForCartLineAddressInput,\n getDeliveryOptionsForCartLineAddress,\n QueryResultSettingsProxy,\n StringExtensions,\n DeliveryOptionsCartLineAddress,\n ArrayExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport groupBy from 'lodash/groupBy';\n\nimport { IImageSettings } from '@msdyn365-commerce/core';\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { AddressDetailItemFunctionComponent } from './components/address-detail-item';\nimport CheckoutCartLineDeliveryDate from './components/checkout-cartLine-delivery-date';\nimport CheckoutCartLineDeliveryOptionsRadio from './components/checkout-cartLine-delivery-options-radio';\nimport { GetLineItems } from './components/get-line-items';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICartLineSelectedDeliveryOption {\n cartLineId: string;\n selectedDeliveryOption: string;\n requestDeliveryDate?: string;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n checkoutCartLineGroupDeliveryOptions?: React.ReactNode;\n enableCheckoutCartLineDeliveryOptions?: boolean;\n cartLineImages?: React.ReactNode;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @observable private groupDeliveryOptions: DeliveryOptionsCartLineAddress[] = [];\n\n @observable private cartLineSelectedDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n private readonly isMultipleAddressShippingEnabled?: boolean;\n\n private cartLinesDeliveryOptions: ICartLineSelectedDeliveryOption[] = [];\n\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isSelectDefaultOptionEnabled =\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\n this.isMultipleAddressShippingEnabled = this.props.config.multipleAddressShippingEnabled;\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?.shippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.cartLinesWithShippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\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 (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\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.CheckoutDeliveryOptions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): 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 multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (!this.canShip()) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const {\n moduleState: { isReady, isUpdating, hasError }\n } = this.props;\n const isError = !this.isLoading && hasError;\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\n\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCartLineGroupDeliveryOptions: this.getCheckoutCartLineGroupDeliveryOptions(),\n enableCheckoutCartLineDeliveryOptions: this.isMultipleAddressShippingEnabled,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n if (this.isMultipleAddressShippingEnabled) {\n this.getCartLinesSavedDeliveryOption();\n }\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n const channelConfig = this.props.context.request.channel;\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n const channelConfig = this.props.context.request.channel;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n const getAriaLabelWithPrice = get(deliveryOption, 'ShippingChargeAmount', 0);\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\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 clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.clearError();\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n if (this.isMultipleAddressShippingEnabled) {\n this.updateCartLinesDeliverySpecification();\n } else {\n await this.updateCartDeliverySpecification(this.selectedItemId);\n }\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly getCartLinesSavedDeliveryOption = (): void => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n cartLinesForShipping.forEach(cartLine => {\n const deliveryMode = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n if (!cartLine.LineId || StringExtensions.isNullOrEmpty(deliveryMode)) {\n return;\n }\n const cartLineId = cartLine?.LineId;\n const existingCartLineSelectedDeliveryOption = this.cartLinesDeliveryOptions.find(\n cartLineDeliveryOption => cartLineDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryMode;\n } else {\n if (cartLineId !== undefined) {\n this.cartLinesDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryMode });\n }\n }\n });\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n @action\n private readonly updateCartLinesDeliverySpecification = async (): Promise => {\n if (!this.cartLineSelectedDeliveryOptions || !this.cartLineSelectedDeliveryOptions.length) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n const checkoutCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n\n this.cartLineSelectedDeliveryOptions.forEach(group => {\n const address = checkoutCartLines?.find(cartLine => cartLine.LineId === group.cartLineId)?.ShippingAddress;\n const lineSpec = {\n LineId: group.cartLineId,\n DeliverySpecification: {\n DeliveryModeId: group.selectedDeliveryOption,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ShipToAddress,\n DeliveryAddress: address\n }\n };\n lineSpecs.push(lineSpec);\n });\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinesDeliverySpecification({\n lineDeliverySpecifications: lineSpecs\n });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n const cartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines;\n if (cartLines !== undefined && cartLines.length > 0) {\n cartLines?.forEach(cartLine => {\n const cartLineId = cartLine.LineId?.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n cartLine.RequestedDeliveryDate = existingCartLineSelectedDeliveryOption.requestDeliveryDate\n ? new Date(existingCartLineSelectedDeliveryOption.requestDeliveryDate)\n : undefined;\n }\n });\n await checkoutState.checkoutCart.updateCartLines({ updatedCartLinesObject: cartLines });\n }\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\n const cartLinesForShipping = this.props.data.checkout.result?.cartLinesWithShippingAddress;\n\n if (this.canShip() && (shippingAddress || cartLinesForShipping)) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n this.isMultipleAddressShippingEnabled\n ? await this.getGroupDeliveryOptions()\n : shippingAddress !== undefined\n ? await this.getDeliveryOptions(shippingAddress)\n : null;\n }\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onCartLineDeliveryOptionChange = (\n event: React.ChangeEvent,\n cartLines: CartLine[],\n cartLineId?: string\n ) => {\n const deliveryModeId = event.currentTarget.value;\n if (cartLineId !== undefined) {\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n console.log('existingCartLineSelectedDeliveryOption');\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n console.log('cartLineSelectedDeliveryOptions object if existing');\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n console.log('cartLineSelectedDeliveryOptions object new line id');\n }\n return;\n }\n\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.selectedDeliveryOption = deliveryModeId;\n } else {\n this.cartLineSelectedDeliveryOptions.push({ cartLineId, selectedDeliveryOption: deliveryModeId });\n }\n });\n };\n\n private readonly onCartLineRequestDeliveryDateChange = (event: React.ChangeEvent, cartLines: CartLine[]) => {\n const deliveryDate = event.currentTarget.value;\n cartLines.forEach(cartLine => {\n if (!cartLine.LineId) {\n return;\n }\n const cartLineId = cartLine?.LineId.toString();\n const existingCartLineSelectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLineId\n );\n if (existingCartLineSelectedDeliveryOption) {\n existingCartLineSelectedDeliveryOption.requestDeliveryDate = deliveryDate;\n } else {\n const deliveryModeId = cartLine.DeliveryMode !== undefined ? cartLine.DeliveryMode : '';\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption: deliveryModeId,\n requestDeliveryDate: deliveryDate\n });\n }\n });\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n\n private readonly getCheckoutCartLineGroupDeliveryOptions = (): React.ReactNode => {\n const { resources, config } = this.props;\n const shippingCartLines = this.getCartLinesForShipping();\n if (!ArrayExtensions.hasElements(shippingCartLines) || !ArrayExtensions.hasElements(this.groupDeliveryOptions)) {\n return null;\n }\n const imageSettings = this.getImageSettings(config.imageSettings);\n const requestDeliveryDateEnabled = !config.enableRequestDeliveryDate && true;\n return (\n
\n {this.groupDeliveryOptions.map((groupDeliveryOption: DeliveryOptionsCartLineAddress, index) => {\n const cartLineId = groupDeliveryOption.cartLineIds !== undefined ? groupDeliveryOption.cartLineIds[0] : '';\n const cartLine1 = shippingCartLines.find(cartLine => cartLineId === cartLine?.LineId?.toString() ?? '');\n const cartLine = shippingCartLines.filter(\n cartLine => groupDeliveryOption && (cartLineId === cartLine?.LineId?.toString() ?? '')\n );\n if (groupDeliveryOption !== undefined) {\n const selectedDeliveryOption = this.cartLineSelectedDeliveryOptions.find(\n cartLineSelectedDeliveryOption => cartLineSelectedDeliveryOption.cartLineId === cartLine[0].LineId\n )?.selectedDeliveryOption;\n return (\n
\n
\n \n
\n
\n
\n \n {resources.cartLineGroupDeliveryOptionsLabel}\n \n \n {resources.cartLineGroupDeliveryOptionsText}\n \n {requestDeliveryDateEnabled ? (\n \n ) : null}\n \n
\n {groupDeliveryOption.cartLineIds?.map(cartLineId => {\n const cartLine1 = shippingCartLines.find(\n cartLine => cartLineId === cartLine?.LineId?.toString() ?? ''\n );\n return (\n \n );\n })}\n
\n
\n );\n } else {\n return null;\n }\n })}\n
\n );\n };\n\n private readonly getGroupDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const cartLinesForShipping: CartLine[] = [];\n if (ArrayExtensions.hasElements(shippingCartLines)) {\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.ShippingAddress?.RecordId);\n cartLinesForShipping.push(getGroupByDelivery(shippingCartLines));\n console.log('running delivery option for all lines');\n }\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const inputData = new GetDeliveryOptionsForCartLineAddressInput(deliveryOptionFilter, shippingCartLines);\n const response = await getDeliveryOptionsForCartLineAddress(inputData, context.actionContext);\n if (response && response.length > 0) {\n this.groupDeliveryOptions = response;\n console.log('groupDeliveryOptions');\n }\n if (this.groupDeliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartLinesDeliveryOptions.length !== 0) {\n this.cartLineSelectedDeliveryOptions = this.cartLinesDeliveryOptions;\n this.cartLinesDeliveryOptions = [];\n this.onReady();\n } else {\n this.onUpdating();\n this.groupDeliveryOptions.forEach(group => {\n const selectedDeliveryOption =\n group.deliveryOptions.length > 0 && group.deliveryOptions[0].Code !== undefined\n ? group.deliveryOptions[0].Code\n : '';\n group.cartLineIds?.forEach(cartLineId => {\n this.cartLineSelectedDeliveryOptions.push({\n cartLineId,\n selectedDeliveryOption\n });\n });\n });\n }\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n }\n this.isLoading = false;\n };\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n}\n\nexport default CheckoutDeliveryOptions;\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 ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n enableCheckoutCartLineDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton,\n checkoutCartLineGroupDeliveryOptions\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.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && !enableCheckoutCartLineDeliveryOptions && (\n \n )}\n {viewState.isShowList && enableCheckoutCartLineDeliveryOptions && checkoutCartLineGroupDeliveryOptions}\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\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 IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { labelText, value } = props;\n\n const className = `ms-checkout-delivery-options__cart-line-grp__item__header__address`;\n return (\n \n {labelText}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\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, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { CartLine } from '@msdyn365-commerce/retail-proxy';\nimport React, { useState } from 'react';\n\nexport interface ICheckoutCartLineDeliveryDateProps {\n className?: string;\n isDisabled?: boolean;\n minRangeValue?: string;\n maxRangeValue?: string;\n validationErrorForRange?: string;\n fallbackPattern?: string;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n disclaimerText?: string;\n heading?: string;\n checkBoxLabel?: string;\n onChangeMinValue?: void;\n id?: string;\n cartLines?: CartLine[];\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n}\n\nconst CheckoutCartLineDeliveryDate: React.FC = ({\n className,\n isDisabled,\n fallbackPattern,\n ariaLabel,\n telemetryContent,\n onChangeMinValue,\n checkBoxLabel,\n disclaimerText,\n heading,\n cartLines,\n onChange\n}) => {\n const [selectedDate, setSelectedDate] = useState('');\n const [isDateEnabled, setIsDateEnabled] = useState(false);\n // State to store today's date\n const [minDate, setMinDate] = useState('');\n\n // Update minDate state with today's date on component mount\n useState(() => {\n const today = new Date().toISOString().split('T')[0];\n setMinDate(today);\n });\n\n const handleDateChange = (event: React.FocusEvent) => {\n const selectedValue = event.target.value;\n // Check if the selected date is allowed\n if (selectedValue >= minDate) {\n setSelectedDate(selectedValue);\n console.log('Selected date is allowed.', selectedValue);\n } else {\n console.log('Selected date is not allowed.');\n }\n\n if (cartLines !== undefined) {\n onChange(event, cartLines);\n }\n };\n\n const handleCheckboxChange = () => {\n setIsDateEnabled(!isDateEnabled);\n };\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n \n {checkBoxLabel}\n
\n {disclaimerText}\n
\n {heading}\n \n
\n
\n );\n};\n\nexport default CheckoutCartLineDeliveryDate;\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, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsGrpRadioButtonProps {\n className: string;\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: 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.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsGrpRadioButton: React.FC = ({\n className,\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionRef: React.RefObject = React.createRef();\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsGrpRadioButton;\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, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport DescriptionComponent from './checkout-delivery-options.description';\nimport RadioButtonComponent from './checkout-cartLine-delivery-options-grp';\n\nexport interface ICheckoutCartLineDeliveryOptionsRadioButtonProps {\n className: string;\n moduleId: string;\n ariaSetSize: number;\n priceFree: string;\n ariaPosInSet: number;\n selectedItemId: string;\n cartLines: CartLine[];\n deliveryOptions: DeliveryOption[];\n typeName: string;\n context: ICoreContext>;\n ariaLabel?: string;\n value?: string;\n cartLineId?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[], cartLineId?: string): void;\n}\n\n/**\n * Represents a radio button component for checkout cart line delivery options.\n * @param {Object} props - The component props.\n * @param {boolean} props.isChecked - Indicates whether the radio button is checked.\n * @param {string} props.value - The value of the radio button.\n * @param {number} props.ariaSetSize - The total number of radio buttons in the set.\n * @param {number} props.ariaPosInSet - The position of the radio button in the set.\n * @param {string} props.ariaLabel - The ARIA label for the radio button.\n * @param {string} props.telemetryContent - The telemetry content for the radio button.\n * @param {Function} props.onChange - The event handler for when the radio button is changed.\n * @returns {JSX.Element} The rendered radio button component.\n */\nconst CheckoutCartLineDeliveryOptionsRadio: React.FC = ({\n className,\n moduleId,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n deliveryOptions,\n priceFree,\n selectedItemId,\n typeName,\n context,\n cartLines,\n cartLineId,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n console.log(attributes);\n const channelConfig = context.actionContext.requestContext.channel;\n const count = deliveryOptions.length;\n if (count === 0) {\n return null;\n }\n\n const changeCurrentDeliveryOption = React.useCallback(\n (event: React.ChangeEvent) => {\n onChange(event, cartLines, cartLineId);\n },\n [onChange, cartLines, cartLineId]\n );\n // const selectedDeliveryOptionItem = deliveryOptions.length > 0 ? deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n const deliveryClassName = `${className}__radio-btn-grp`;\n const optionClassName = `${deliveryClassName}-opt`;\n const response = deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => (\n
\n \n \n \n
\n ));\n\n return
{response}
;\n};\n\nexport default CheckoutCartLineDeliveryOptionsRadio;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n className?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description, className }) => {\n if (!description) {\n return null;\n }\n\n const descClassName = StringExtensions.isNullOrEmpty(className) ? 'ms-checkout-delivery-options__description' : className;\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\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 ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

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

{title}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorTitle;\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, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: 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.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { CartLine, DeliveryOption, ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\nimport CheckoutCartLineDeliveryOptionsRadio from './checkout-cartLine-delivery-options-radio';\n\nexport interface ICheckoutDeliveryOptionsLineItemsProps {\n className?: string;\n moduleId: string;\n selectedItemId: string;\n context: Msdyn365.ICoreContext;\n typeName: string;\n cartLines: CartLine[];\n imageSettings: Msdyn365.IImageSettings;\n showShippingChargesForLineItems: boolean;\n resources: ICheckoutDeliveryOptionsLineItemsResources;\n deliveryOptions: DeliveryOption[];\n ariaSetSize: number;\n ariaPosInSet: number;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent, cartLines: CartLine[]): void;\n currencyCode?: string;\n products?: SimpleProduct[];\n catalogs?: ProductCatalog[];\n gridSettings?: Msdyn365.IGridSettings;\n cartLineId?: string;\n key?: string;\n}\n\nexport interface ICheckoutDeliveryOptionsLineItemsResources {\n quantityDisplayStringLabel: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n productDimensionTypeAmount: string;\n configString: string;\n discountStringText: string;\n shippingChargesText: string;\n priceFree: string;\n ariaLabel: string;\n changeButtonText?: string;\n deliveryMethodLabel?: string;\n}\n\nconst _getLineItemComponent = (\n context: Msdyn365.ICoreContext,\n cartLine: CartLine,\n product: SimpleProduct,\n moduleId: string,\n typeName: string,\n showShippingChargesForLineItems: boolean,\n imageSettings: Msdyn365.IImageSettings,\n resources: ICheckoutDeliveryOptionsLineItemsResources,\n currencyCode: string,\n catalogs?: ProductCatalog[],\n gridSettings?: Msdyn365.IGridSettings,\n cartLineId?: string\n): JSX.Element | undefined => {\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return (\n \n );\n};\n\nconst _getProduct = (productId: number, products: SimpleProduct[]): SimpleProduct | undefined => {\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n};\n\nexport const GetLineItems: React.FC = (props: ICheckoutDeliveryOptionsLineItemsProps) => {\n const products = props.products;\n const lineClassName = props.className;\n const lineItemClassName = `${lineClassName}-item`;\n const currencyCode = props.currencyCode;\n const changeText = props.resources.changeButtonText;\n const [showDeliveryOption, setShowDeliveryOption] = useState(false);\n\n const handleClick = () => {\n setShowDeliveryOption(!showDeliveryOption);\n };\n if (!props.cartLines || props.cartLines.length === 0 || !products || products.length === 0 || currencyCode === undefined) {\n return null;\n }\n const deliveryCode = props.deliveryOptions.find(option => option.Code === props.selectedItemId);\n const payload = getPayloadObject(TelemetryEvent.UpdateInCart, props.telemetryContent!, changeText !== undefined ? changeText : '', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\n const response = props.cartLines.map(cartLine => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId, products);\n if (!product) {\n return null;\n }\n return (\n
\n {_getLineItemComponent(\n props.context,\n cartLine,\n product,\n props.moduleId,\n props.typeName,\n props.showShippingChargesForLineItems,\n props.imageSettings,\n props.resources,\n currencyCode,\n props.catalogs,\n props.gridSettings\n )}\n
{props.resources.deliveryMethodLabel}
\n
\n {deliveryCode?.Description}\n \n
\n {showDeliveryOption ? (\n \n ) : null}\n
\n );\n });\n\n return
{response}
;\n};\nexport default GetLineItems;\n"],"names":["ActiveCheckoutCartProductsDetailsInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","createCartInput","async","getActiveCheckoutCartProductsDetailsAction","input","ctx","telemetry","exception","Error","checkoutState","getCheckoutState","cart","checkoutCart","hasInvoiceLine","CartLines","length","getSimpleProducts","map","cartLine","ProductId","ProductInput","requestContext","apiSettings","undefined","CatalogId","filter","Boolean","then","products","catch","error","getActiveCheckoutCartProductsDetailsActionDataAction","createObservableDataAction","id","action","CheckoutDeliveryOptions","React","props","super","selectedItemId","deliveryOptions","isLoading","groupDeliveryOptions","cartLineSelectedDeliveryOptions","retailMultiplePickUpOptionEnabled","checkoutErrorRef","cartLinesDeliveryOptions","init","this","moduleState","onEdit","isSelectDefaultOptionEnabled","onCancel","onSubmit","status","config","useDefaultDeliveryOption","canShip","cartDeliveryMode","getSavedDeliveryOption","isMultipleAddressShippingEnabled","getCartLinesSavedDeliveryOption","loadDeliveryOptions","_this$props$data$chec","data","checkout","result","getCartLinesForShipping","isDeliveryModeExists","deliveryMode","find","deliveryOption","Code","getDeliveryOptionSelected","selectedItem","context","typeName","priceFree","resources","price","get","channelConfig","request","channel","DeliveryOption","className","description","DescriptionComponent","Object","assign","Description","PriceComponent","CustomerContextualPrice","freePriceText","currencyCode","Currency","getErrorMessage","errorMessageTitle","CheckoutDeliveryOptionsError","tag","role","title","ErrorTitleComponent","message","ErrorMessageComponent","errorMessage","getDeliveryOptionList","count","index","getAriaLabelWithPrice","code","radioButton","RadioButtonComponent","isChecked","value","ariaSetSize","ariaPosInSet","ariaLabel","onChange","onDeliveryOptionChange","telemetryContent","getSaveButton","saveBtnLabel","Button","color","disabled","onClick","onSave","getEditButton","editBtnLabel","getCancelButton","cancelBtnLabel","setError","setHasError","onUpdating","clearError","_this$props$data$chec2","information","updateShouldCollapsePaymentSection","newShouldCollapsePaymentSection","_this$props$data$chec3","updateCartLinesDeliverySpecification","updateCartDeliverySpecification","savedDeliveryOption","_this$props$data$chec4","onReady","cartLinesForShipping","DeliveryMode","forEach","LineId","StringExtensions","isNullOrEmpty","cartLineId","existingCartLineSelectedDeliveryOption","cartLineDeliveryOption","selectedDeliveryOption","push","deliveryModeId","trim","updateCartDeliverySpecificationInput","shippingAddress","channelDeliveryOptionConfig","onPending","response","_response$errorDetail","errorDetails","LocalizedMessage","genericErrorMessage","setIsCancellable","_this$props$data$chec5","lineSpecs","checkoutCartLines","group","_checkoutCartLines$fi","address","ShippingAddress","lineSpec","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","DeliveryPreferenceType","ShipToAddress","DeliveryAddress","lineDeliverySpecifications","_this$props$data$chec6","cartLines","_cartLine$LineId","toString","cartLineSelectedDeliveryOption","RequestedDeliveryDate","requestDeliveryDate","Date","updateCartLines","updatedCartLinesObject","_unused","pickupDeliveryModeCode","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","_this$channelDelivery","PickupDeliveryModeCodes","getDeliveryOptions","_this$props$data$chec7","cartState","cartId","Id","originalDeliveryMode","shippingCartLines","hasShippingDeliveryLines","clearCartLinesDeliveryInformation","channelDeliveryOptionConfiguration","deliveryOptionFilter","filterDeliveryModeOption","FilterDeliveryModeOption","None","FilterOutNonCarrierDeliveryMode","getDeliveryOptionsAsync","callerContext","actionContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","_unused2","deliveryOptionsNotFound","_this$props$data$chec8","_this$props$data$chec9","updateHasCartDeliveryMode","newHasCartDeliveryMode","isPaymentVerificationRedirection","_this$props$data$chec10","getStoredDeliveryOptions","_this$props$data$chec11","_this$props$data$chec12","_this$props$data$chec13","cartLinesWithShippingAddress","_this$props$data$chec14","_this$props$data$chec15","_this$props$data$chec16","_this$props$data$chec17","isExpressCheckoutApplied","getGroupDeliveryOptions","isExpressPaymentAppliedInCartPage","event","currentTarget","onCartLineDeliveryOptionChange","console","log","onCartLineRequestDeliveryDateChange","deliveryDate","getCheckoutCartLineGroupDeliveryOptions","ArrayExtensions","hasElements","imageSettings","getImageSettings","requestDeliveryDateEnabled","enableRequestDeliveryDate","groupDeliveryOption","cartLineIds","cartLine1","_ref","_cartLine$LineId2","_ref2","_cartLine$LineId3","_this$cartLineSelecte","_cartLine1$ShippingAd","_cartLine1$ShippingAd2","_groupDeliveryOption$","key","AddressDetailItemFunctionComponent","isNewLine","isShowLabel","labelText","cartLineGroupShippingAddressLabel","name","FullAddress","cartLineGroupDeliveryOptionsLabel","cartLineGroupDeliveryOptionsText","CheckoutCartLineDeliveryDate","heading","cartLineGroupDeliveryRequestDeliveryDateText","disclaimerText","cartLineGroupDeliveryRequestDeliveryDateDisclaimerText","checkBoxLabel","cartLineGroupDeliveryRequestDeliveryDate","CheckoutCartLineDeliveryOptionsRadio","moduleId","_this$props$data$prod","_this$props$data$cata","_ref3","_cartLine$LineId4","GetLineItems","gridSettings","configString","discountStringText","shippingChargesText","shippingChargesString","productDimensionTypeColor","productDimensionTypeSize","productDimensionTypeStyle","productDimensionTypeAmount","quantityDisplayStringLabel","quantityDisplayString","changeButtonText","deliveryMethodLabel","catalogs","showShippingChargesForLineItems","_this$props$data$chec18","getGroupByDelivery","items","groupBy","item","_item$ShippingAddress","RecordId","inputData","GetDeliveryOptionsForCartLineAddressInput","getDeliveryOptionsForCartLineAddress","_group$cartLineIds","_unused3","viewports","xs","q","w","h","sm","lg","lazyload","getTelemetryObject","telemetryPageName","friendlyName","multipleAddressShippingEnabled","_this$props$data$cart","_this$props$data$cart2","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","_this$expressPaymentD","_this$expressPaymentD2","expressPaymentDetailsFromCartPage","isExpressCheckoutAppliedInCartPage","_this$props$data$chec25","when","isDataReady","reaction","_this$props$data$chec19","_this$props$data$chec20","_this$props$data$chec21","_this$props$data$chec22","_this$props$data$chec23","_this$props$data$chec24","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec26","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec27","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","shouldComponentUpdate","nextProps","nextState","state","render","_this$props$data$chan","_this$props$data$feat","featureState","feature","Name","IsEnabled","isReady","isUpdating","hasError","isError","isShowList","isShowSelected","deliveryOptionAriaLabel","viewProps","_objectSpread","deliveryOptionsData","alert","ErrorComponent","errorMessageData","viewState","isShowSaveButton","hasExternalSubmitGroup","isShowEditButton","isShowCancelButton","moduleProps","classname","DeliveryOptionsList","list","deliveryOptionSelected","waiting","Waiting","checkoutCartLineGroupDeliveryOptions","enableCheckoutCartLineDeliveryOptions","saveButton","editButton","cancelButton","renderView","__decorate","observable","computed","withModuleState","observer","DeliveryOptionList","Node","DeliveryOptionSelected","Module","ref","isDisabled","fallbackPattern","onChangeMinValue","selectedDate","setSelectedDate","useState","isDateEnabled","setIsDateEnabled","minDate","setMinDate","today","toISOString","split","payLoad","getPayloadObject","TelemetryConstant","DeliveryOptions","attributes","getTelemetryAttributes","type","checked","handleCheckboxChange","selectedValue","target","min","pattern","deliveryOptionRef","contentAction","etext","changeCurrentDeliveryOption","deliveryClassName","optionClassName","descClassName","lineClassName","lineItemClassName","changeText","showDeliveryOption","setShowDeliveryOption","handleClick","deliveryCode","option","payload","TelemetryEvent","UpdateInCart","product","_getProduct","productId","_product","_getLineItemComponent","productUrl","getProductUrlSync","MsDyn365","isBrowser","isChannelTypeB2B","_cartLine$CatalogId","fullUrl","URL","window","location","href","searchParams","set","CartLineItemComponent","sizeString","colorString","styleString","amountString","inputQuantityAriaLabel","originalPriceText","currentPriceText","salesAgreementPricePrompt","isQuantityEditable","primaryImageUrl","PrimaryImageUrl","priceCurrency"],"sourceRoot":""}