{"version":3,"file":"static/js/a42d9e0dda862b87cb23.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/actions/get-products-details-in-active-checkout-cart.ts?c375","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/dobbies-checkout-delivery-options.props.autogenerated.ts?76b4","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/components/dobbies-checkout-delivery-options.description.tsx?ed41","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/components/dobbies-checkout-delivery-options.error-message.tsx?4b65","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/components/dobbies-checkout-delivery-options.error-title.tsx?724f","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/components/dobbies-checkout-delivery-options.radio-button.tsx?2d67","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/dobbies-checkout-delivery-options.tsx?dc3c","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-delivery-options/dobbies-checkout-delivery-options.view.tsx?b2fd","webpack://Dobbies.Commerce/./lib/dobbies-checkout-delivery-options/module-registration.js?aab7","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\r\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\n/**\r\n * Input class for ActiveCheckoutCartWithProductsDetails data action.\r\n */\r\nexport class ActiveCheckoutCartProductsDetailsInput implements IActionInput {\r\n public getCacheKey = () => 'ActiveCheckoutCartProducts';\r\n\r\n public getCacheObjectType = () => 'ActiveCheckoutCartProducts';\r\n\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nexport const createCartInput = () => {\r\n return new ActiveCheckoutCartProductsDetailsInput();\r\n};\r\n\r\n/**\r\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\r\n * @param input\r\n * @param ctx\r\n */\r\nexport async function getActiveCheckoutCartProductsDetailsAction(\r\n input: ActiveCheckoutCartProductsDetailsInput,\r\n ctx: IActionContext\r\n): Promise {\r\n // Check if the input is valid\r\n if (!input) {\r\n ctx.telemetry.exception(new Error('[getActiveCheckoutCartWithProductsDetails]No valid Input was provided, failing'));\r\n throw new Error('[getActiveCheckoutCartWithProductsDetails]No valid Input was provided, failing');\r\n }\r\n\r\n const checkoutState = await getCheckoutState(ctx);\r\n const cart = checkoutState.checkoutCart.cart;\r\n\r\n // If there are cart lines, make call to get products\r\n if (!checkoutState.checkoutCart.hasInvoiceLine && cart && cart.CartLines && cart.CartLines.length > 0) {\r\n return getSimpleProducts(\r\n cart.CartLines.map(cartLine => {\r\n if (cartLine.ProductId) {\r\n return new ProductInput(\r\n cartLine.ProductId,\r\n ctx.requestContext.apiSettings,\r\n undefined,\r\n undefined,\r\n ctx.requestContext,\r\n cartLine.CatalogId\r\n );\r\n }\r\n return undefined;\r\n }).filter(Boolean),\r\n ctx\r\n )\r\n .then(products => {\r\n if (products) {\r\n return products;\r\n }\r\n return [];\r\n })\r\n .catch(error => {\r\n ctx.telemetry.exception(error);\r\n throw new Error('[getActiveCheckoutCartWithProductsDetails]Unable to hydrate cart with product information');\r\n });\r\n }\r\n\r\n return [];\r\n}\r\n\r\nexport const getActiveCheckoutCartProductsDetailsActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/checkout/get-products-details-in-active-checkout-cart',\r\n action: >getActiveCheckoutCartProductsDetailsAction,\r\n input: createCartInput\r\n});\r\n\r\nexport default getActiveCheckoutCartProductsDetailsActionDataAction;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IDobbiesCheckoutDeliveryOptions contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum filterDeliveryModeOption {\r\n none = 'none',\r\n filterOutNonCarrierDeliveryMode = 'filterOutNonCarrierDeliveryMode'\r\n}\r\n\r\nexport const enum useDefaultDeliveryOption {\r\n none = 'none',\r\n displaySelectedDeliveryOption = 'displaySelectedDeliveryOption',\r\n notDisplaySelectedDeliveryOption = 'notDisplaySelectedDeliveryOption'\r\n}\r\n\r\nexport interface IDobbiesCheckoutDeliveryOptionsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n filterDeliveryModeOption?: filterDeliveryModeOption;\r\n useDefaultDeliveryOption?: useDefaultDeliveryOption;\r\n className?: string;\r\n multipleAddressShippingEnabled?: boolean;\r\n enableRequestDeliveryDate?: boolean;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n clientRender?: boolean;\r\n excludedDeliveryOptions?: string[];\r\n}\r\n\r\nexport interface IDobbiesCheckoutDeliveryOptionsResources {\r\n deliveryOptionsNotFound: string;\r\n genericErrorMessage: string;\r\n errorMessageTitle: string;\r\n ariaLabelText: string;\r\n priceFree: string;\r\n saveBtnLabel: string;\r\n editBtnLabel: string;\r\n cancelBtnLabel: string;\r\n deliveryOptionAriaLabel: string;\r\n cartLineGroupShippingAddressLabel: string;\r\n cartLineGroupDeliveryOptionsLabel: string;\r\n cartLineGroupDeliveryOptionsText: string;\r\n cartLineGroupDeliveryRequestDeliveryDate: string;\r\n cartLineGroupDeliveryRequestDeliveryDateDisclaimerText: string;\r\n cartLineGroupDeliveryRequestDeliveryDateText: string;\r\n discountStringText: string;\r\n discountOffStringText: string;\r\n quantityDisplayString: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n productDimensionTypeAmount: string;\r\n configString: string;\r\n shippingChargesString: string;\r\n changeButtonText: string;\r\n deliveryMethodLabel: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IDobbiesCheckoutDeliveryOptionsProps extends Msdyn365.IModule {\r\n resources: IDobbiesCheckoutDeliveryOptionsResources;\r\n config: IDobbiesCheckoutDeliveryOptionsConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\r\n description?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.description\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\r\n if (!description) {\r\n return null;\r\n }\r\n\r\n return {description};\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsDescription;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return

{message}

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

{title}

;\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorTitle;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\r\n isChecked: boolean;\r\n value?: string;\r\n ariaSetSize: number;\r\n ariaPosInSet: number;\r\n ariaLabel?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.value\r\n * @param root0.ariaSetSize\r\n * @param root0.ariaPosInSet\r\n * @param root0.ariaLabel\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\r\n isChecked,\r\n value,\r\n ariaSetSize,\r\n ariaPosInSet,\r\n ariaLabel,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsRadioButton;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getDeliveryOptionsAsync,\r\n updateLineDeliverySpecificationsAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getDeliveryOptionsForCartLineItems, ProductDeliveryOptionsForCartLineItems } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport { Address, CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { action, computed, observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport axios, { AxiosResponse } from 'axios';\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/checkout';\r\nimport { IDobbiesCheckoutDeliveryOptionsData } from './dobbies-checkout-delivery-options.data';\r\nimport {\r\n filterDeliveryModeOption,\r\n IDobbiesCheckoutDeliveryOptionsProps,\r\n useDefaultDeliveryOption\r\n} from './dobbies-checkout-delivery-options.props.autogenerated';\r\nimport DescriptionComponent from './components/dobbies-checkout-delivery-options.description';\r\nimport ErrorMessageComponent from './components/dobbies-checkout-delivery-options.error-message';\r\nimport ErrorTitleComponent from './components/dobbies-checkout-delivery-options.error-title';\r\nimport RadioButtonComponent from './components/dobbies-checkout-delivery-options.radio-button';\r\n// import { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport interface ICheckoutDeliveryOptionsModuleProps\r\n extends IDobbiesCheckoutDeliveryOptionsProps,\r\n IModuleStateProps {}\r\n\r\nexport interface ICheckoutDeliveryOption {\r\n DeliveryOption: INodeProps;\r\n description?: React.ReactNode;\r\n price?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\r\n code: string;\r\n radioButton?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsList {\r\n DeliveryOptionsList: INodeProps;\r\n list: ICheckoutDeliveryOptionEdit[];\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsError {\r\n Error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewState {\r\n isLoading: boolean;\r\n isError: boolean;\r\n isShowList: boolean;\r\n isShowSelected: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewProps extends IDobbiesCheckoutDeliveryOptionsProps<{}> {\r\n CheckoutDeliveryOptions: IModuleProps;\r\n selectedItemId: string;\r\n deliveryOptionsData: DeliveryOption[];\r\n isLoading: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutDeliveryOptionsViewState;\r\n deliveryOptions?: ICheckoutDeliveryOptionsList;\r\n deliveryOptionSelected?: ICheckoutDeliveryOption;\r\n errorMessage?: ICheckoutDeliveryOptionsError;\r\n waiting?: React.ReactNode;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n onDeliveryOptionChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutDeliveryOptions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutDeliveryOptions extends React.Component {\r\n @observable private selectedItemId: string = '';\r\n\r\n @observable private deliveryOptions: DeliveryOption[] = [];\r\n\r\n @observable private isLoading: boolean = false;\r\n\r\n @observable private errorMessage?: string;\r\n @computed private get isPaymentVerificationRedirection(): boolean {\r\n const { requestFormData, query } = this.props.context.request;\r\n return !!(requestFormData && query && query.pv === '1');\r\n }\r\n private cartDeliveryMode?: string;\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private readonly isSelectDefaultOptionEnabled?: boolean;\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.isSelectDefaultOptionEnabled =\r\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n this.props.data.checkout.then(async () => {\r\n await this.init();\r\n });\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.shippingAddress,\r\n async () => {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n }\r\n );\r\n\r\n // reaction(\r\n // () => this.props.data.checkout.result?.isExpressCheckoutApplied,\r\n // async isExpressCheckoutApplied => {\r\n // if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\r\n // await this.loadDeliveryOptions();\r\n // this.props.moduleState.setIsCancellable(false);\r\n\r\n // await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n // }\r\n // }\r\n // );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\r\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\r\n feature => feature.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n\r\n if (!this.canShip()) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const {\r\n moduleState: { isReady, isUpdating, hasError }\r\n } = this.props;\r\n const isError = !this.isLoading && hasError;\r\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\r\n const isShowSelected = !this.isLoading && !hasError && isReady;\r\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDeliveryOptionChange: this.onDeliveryOptionChange,\r\n selectedItemId: this.selectedItemId,\r\n deliveryOptionsData: this.deliveryOptions,\r\n isLoading: this.isLoading,\r\n alert: this.errorMessage && ,\r\n errorMessageData: this.errorMessage,\r\n viewState: {\r\n isLoading: this.isLoading,\r\n isError,\r\n isShowList,\r\n isShowSelected,\r\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\r\n },\r\n CheckoutDeliveryOptions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-delivery-options', this.props.config.className)\r\n },\r\n deliveryOptions: {\r\n DeliveryOptionsList: {\r\n className: 'ms-checkout-delivery-options__list',\r\n role: 'list',\r\n 'aria-label': deliveryOptionAriaLabel\r\n },\r\n list: this.getDeliveryOptionList()\r\n },\r\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\r\n errorMessage: this.getErrorMessage(),\r\n waiting: ,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSave,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n this.props.moduleState.init({\r\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\r\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\r\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\r\n status:\r\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\r\n this.canShip()\r\n ? 'updating'\r\n : 'disabled'\r\n });\r\n\r\n this.cartDeliveryMode = this.getSavedDeliveryOption();\r\n await this.loadDeliveryOptions();\r\n };\r\n\r\n private readonly canShip = (): boolean => {\r\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\r\n };\r\n\r\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\r\n if (deliveryMode) {\r\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\r\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\r\n if (!selectedItem) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const { id, typeName, context } = this.props;\r\n const { priceFree } = this.props.resources;\r\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\r\n\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\r\n description: ,\r\n price: (\r\n \r\n )\r\n };\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n // @ts-expect-error\r\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\r\n const count = this.deliveryOptions.length;\r\n const { priceFree } = this.props.resources;\r\n const { id, typeName, context } = this.props;\r\n\r\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\r\n code: deliveryOption.Code || '',\r\n radioButton: (\r\n \r\n ),\r\n description: (\r\n \r\n ),\r\n price: (\r\n \r\n )\r\n };\r\n });\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n const { saveBtnLabel = 'Save' } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n const { editBtnLabel = 'Change' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onSave = async (): Promise => {\r\n await this.onSubmit();\r\n };\r\n\r\n private readonly onEdit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onEdit is called.');\r\n\r\n this.onUpdating();\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onSubmit is called.');\r\n\r\n await this.updateCartDeliverySpecification(this.selectedItemId);\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n };\r\n\r\n private readonly onCancel = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onCancel is called.');\r\n\r\n // Reset to the saved value\r\n const savedDeliveryOption = this.getSavedDeliveryOption();\r\n if (savedDeliveryOption) {\r\n this.selectedItemId = savedDeliveryOption;\r\n this.onReady();\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n } else {\r\n this.onUpdating();\r\n }\r\n };\r\n\r\n private readonly getSavedDeliveryOption = (): string | undefined => {\r\n const cartLinesForShipping = this.getCartLinesForShipping();\r\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\r\n };\r\n\r\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\r\n if (deliveryModeId.trim() === '') {\r\n return;\r\n }\r\n\r\n const { resources } = this.props;\r\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\r\n // const updateCartDeliverySpecificationInput = {\r\n // deliveryModeId,\r\n // shippingAddress: checkoutState.shippingAddress,\r\n // channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\r\n // };\r\n\r\n this.clearError();\r\n this.onPending();\r\n\r\n try {\r\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\r\n\r\n const shippingAddress = this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n const cartShipping = checkoutState.checkoutCart.cart.CartLines?.filter(cartLine => cartLine?.DeliveryMode === '');\r\n const deliveryOptions = await getDeliveryOptionsForCartLineItems(\r\n new ProductDeliveryOptionsForCartLineItems(this.props.context.request.apiSettings),\r\n this.props.context.actionContext\r\n );\r\n\r\n if (!cartShipping) {\r\n return;\r\n }\r\n\r\n const deliverySpecifications = cartShipping.map((cartLine: CartLine) => {\r\n const tempDeliveryOptions = deliveryOptions.find(\r\n // @ts-ignore\r\n deliveryOption => deliveryOption.ProductId === cartLine.ProductId\r\n );\r\n\r\n // @ts-ignore\r\n const deliveryMode = tempDeliveryOptions.DeliveryOptions.find(deliveryOption => deliveryOption.Code !== 'Common MOD');\r\n return {\r\n LineId: cartLine.LineId,\r\n DeliverySpecification: {\r\n DeliveryModeId: deliveryModeId,\r\n DeliveryPreferenceTypeValue: 1, // Ship\r\n DeliveryAddress: shippingAddress\r\n }\r\n };\r\n });\r\n\r\n // Make API call to update delivery speicifications\r\n const tempCart = await updateLineDeliverySpecificationsAsync(\r\n { callerContext: this.props.context.actionContext },\r\n checkoutState.checkoutCart.cart.Id,\r\n deliverySpecifications\r\n );\r\n\r\n const deliveryOptionsOfCurrentCart = tempCart?.CartLines?.map(cartLine => cartLine.DeliveryMode);\r\n\r\n let newCart;\r\n if (deliveryOptionsOfCurrentCart?.length && deliveryOptionsOfCurrentCart?.length > 1) {\r\n newCart = {\r\n ...tempCart,\r\n ChargeLines: selectedItem?.DeliveryChargeLines,\r\n DeliveryMode: selectedItem?.Code\r\n };\r\n } else {\r\n newCart = {\r\n ...tempCart\r\n };\r\n }\r\n\r\n // Update Cart state\r\n (await this.props.data.checkout).checkoutCart.updateCart({ newCartObject: newCart });\r\n //VSI customization for dealing click and collect.\r\n if (newCart.ShippingChargeAmount === 0) {\r\n if ((newCart && newCart.DeliveryMode === 'Common MOD') || newCart.DeliveryMode === 'PF' || newCart.DeliveryMode === 'STD') {\r\n const userToken = this.props.context.request.user.token;\r\n const isAuthenticated = this.props.context.request.user.isAuthenticated;\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n OUN: this.props.context.request.apiSettings.oun\r\n };\r\n if (isAuthenticated) {\r\n headers['Authorization'] = `id_token ${userToken}`;\r\n }\r\n await axios({\r\n method: 'POST',\r\n url: `${this.props.context.request.apiSettings.baseUrl}/Commerce/VSIAddCharge/VSI_AddCharge`,\r\n data: {\r\n cartId: checkoutState.checkoutCart.cart.Id,\r\n moduleTypeValue: 1,\r\n chargeCode: 'Shipping',\r\n amount: selectedItem?.ShippingChargeAmount\r\n },\r\n headers: headers\r\n })\r\n .then((res: AxiosResponse) => checkoutState.checkoutCart.updateCart({ newCartObject: res.data }))\r\n .catch(error => {\r\n this.setError(resources.genericErrorMessage);\r\n });\r\n }\r\n }\r\n\r\n this.onReady();\r\n this.props.moduleState.setIsCancellable(true);\r\n } catch (e) {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n };\r\n\r\n private readonly getCartLinesForShipping = (): CartLine[] => {\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context, resources, config } = this.props;\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n const cartId = (cartState.cart as Cart).Id;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n try {\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n if (hasShippingDeliveryLines) {\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({\r\n cart,\r\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n });\r\n }\r\n\r\n // TODO: Check if we can move this getDeliveryOptions to checkout state\r\n let deliveryOptionFilter: FilterDeliveryModeOption;\r\n switch (config.filterDeliveryModeOption) {\r\n case filterDeliveryModeOption.none:\r\n deliveryOptionFilter = FilterDeliveryModeOption.None;\r\n break;\r\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n break;\r\n default:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n }\r\n const response = await getDeliveryOptionsAsync(\r\n {\r\n callerContext: context.actionContext,\r\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\r\n },\r\n cartId,\r\n shippingAddress,\r\n [],\r\n deliveryOptionFilter,\r\n true\r\n );\r\n\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n\r\n if (response && response.length > 0) {\r\n this.deliveryOptions = response;\r\n }\r\n } catch {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n\r\n if (this.deliveryOptions.length === 0) {\r\n this.setError(resources.deliveryOptionsNotFound);\r\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n if (\r\n this.props.data.checkout.result.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n !this.isPaymentVerificationRedirection\r\n ) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n } else {\r\n this.onUpdating();\r\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n // private readonly getStoredDeliveryOptions = async (): Promise => {\r\n // if (!this.props.data.checkout.result) {\r\n // return;\r\n // }\r\n\r\n // const { context } = this.props;\r\n // const cartState = this.props.data.checkout.result.checkoutCart;\r\n\r\n // if (context) {\r\n // this.isLoading = true;\r\n // this.deliveryOptions = [];\r\n // this.selectedItemId = '';\r\n // this.clearError();\r\n\r\n // let originalDeliveryMode: string = '';\r\n // const shippingCartLines = this.getCartLinesForShipping();\r\n // const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n // if (hasShippingDeliveryLines) {\r\n // // First store the delivery mode, so that we can restore the shipping information.\r\n // originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n // const cart = cartState.cart;\r\n // await cartState.clearCartLinesDeliveryInformation({\r\n // cart,\r\n // channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n // });\r\n // if (hasShippingDeliveryLines) {\r\n // await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n // }\r\n // }\r\n\r\n // if (this.cartDeliveryMode) {\r\n // this.selectedItemId = this.cartDeliveryMode;\r\n // this.cartDeliveryMode = undefined;\r\n // this.onReady();\r\n\r\n // // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n // this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n // if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\r\n // await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n // }\r\n // }\r\n\r\n // this.isLoading = false;\r\n // }\r\n // };\r\n\r\n private readonly loadDeliveryOptions = async (): Promise => {\r\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\r\n\r\n if (this.canShip() && shippingAddress) {\r\n if (this.canShip() && shippingAddress) {\r\n await this.getDeliveryOptions(shippingAddress);\r\n\r\n if (this.isSelectDefaultOptionEnabled) {\r\n this.onSubmit();\r\n }\r\n }\r\n }\r\n };\r\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\r\n const deliveryModeId = event.currentTarget.value;\r\n this.selectedItemId = deliveryModeId;\r\n };\r\n\r\n private readonly onReady = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n private readonly onPending = () => {\r\n if (!this.isSelectDefaultOptionEnabled) {\r\n this.props.moduleState.onPending();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutDeliveryOptions;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { DeliveryOption as IDeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionEdit,\r\n ICheckoutDeliveryOptionsList,\r\n ICheckoutDeliveryOptionsViewProps\r\n} from './dobbies-checkout-delivery-options';\r\ninterface IDeliveryOptionsSelection {\r\n deliveryOptionsData: IDeliveryOption[];\r\n excludedDeliveryOptions: string[] | undefined;\r\n}\r\n\r\nconst DeliveryOptionList: React.FC = ({\r\n DeliveryOptionsList,\r\n list,\r\n deliveryOptionsData,\r\n excludedDeliveryOptions\r\n}) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n /* VSI Customization - START - 03/03/21 */\r\n // Check if there are more than 1 delivery options, remove deliveryoption which is in config else leave it as it is\r\n if (deliveryOptionsData.length > 1) {\r\n // find index of exluded delivery option\r\n const excludedOptions: number[] = [];\r\n deliveryOptionsData.map((option, index) => {\r\n excludedDeliveryOptions &&\r\n excludedDeliveryOptions.map(exludedOption => {\r\n if (option.Code && option.Code.toLowerCase() === exludedOption.toLowerCase()) {\r\n excludedOptions.push(index);\r\n }\r\n });\r\n });\r\n // Remove exluded items from list one be one\r\n excludedOptions.map(itemTobeRemoved => {\r\n list.splice(itemTobeRemoved, 1);\r\n });\r\n }\r\n /* VSI Customization - END */\r\n\r\n return (\r\n \r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n \r\n {deliveryOption.radioButton}\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n // checkoutErrorRef,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionSelected,\r\n alert,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton,\r\n deliveryOptionsData,\r\n config: { excludedDeliveryOptions }\r\n } = props;\r\n const deliveryOptionSelection: IDeliveryOptionsSelection = {\r\n deliveryOptionsData: deliveryOptionsData,\r\n excludedDeliveryOptions: excludedDeliveryOptions\r\n };\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isLoading && waiting}\r\n {viewState.isError && alert}\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['dobbies-checkout-delivery-options'] = {\n c: () => require('partner/modules/dobbies-checkout-delivery-options/dobbies-checkout-delivery-options.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'catalogs', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'products', path:'modules/dobbies-checkout-delivery-options/actions/get-products-details-in-active-checkout-cart', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-checkout-delivery-options',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-checkout-delivery-options'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'modules/dobbies-checkout-delivery-options/actions/get-products-details-in-active-checkout-cart';\n let dataAction = require('partner/modules/dobbies-checkout-delivery-options/actions/get-products-details-in-active-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|dobbies-checkout-delivery-options|dobbies-checkout-delivery-options'] = {\n c: () => require('partner/modules/dobbies-checkout-delivery-options/dobbies-checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-dobbies-checkout-delivery-options'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"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","filterDeliveryModeOption","useDefaultDeliveryOption","HeadingTag","_ref","description","React","className","message","title","isChecked","value","ariaSetSize","ariaPosInSet","ariaLabel","telemetryContent","onChange","payLoad","getPayloadObject","TelemetryConstant","DeliveryOptions","attributes","getTelemetryAttributes","Object","assign","checked","type","contentAction","etext","name","CheckoutDeliveryOptions","props","super","selectedItemId","deliveryOptions","isLoading","retailMultiplePickUpOptionEnabled","checkoutErrorRef","init","this","moduleState","onEdit","isSelectDefaultOptionEnabled","onCancel","onSubmit","status","config","notDisplaySelectedDeliveryOption","canShip","cartDeliveryMode","getSavedDeliveryOption","loadDeliveryOptions","_this$props$data$chec","data","checkout","result","getCartLinesForShipping","isDeliveryModeExists","deliveryMode","find","deliveryOption","Code","getDeliveryOptionSelected","selectedItem","context","typeName","priceFree","resources","price","get","DeliveryOption","DescriptionComponent","Description","PriceComponent","CustomerContextualPrice","freePriceText","getErrorMessage","errorMessageTitle","CheckoutDeliveryOptionsError","tag","role","ErrorTitleComponent","ErrorMessageComponent","errorMessage","getDeliveryOptionList","count","index","code","radioButton","RadioButtonComponent","onDeliveryOptionChange","getSaveButton","saveBtnLabel","Button","color","disabled","onClick","onSave","getEditButton","editBtnLabel","getCancelButton","cancelBtnLabel","setError","setHasError","onUpdating","clearError","_this$props$data$chec2","information","shouldEnableSinglePaymentAuthorizationCheckout","updateShouldCollapsePaymentSection","newShouldCollapsePaymentSection","_this$props$data$chec3","updateCartDeliverySpecification","savedDeliveryOption","_this$props$data$chec4","onReady","cartLinesForShipping","DeliveryMode","deliveryModeId","trim","onPending","_checkoutState$checko","_tempCart$CartLines","shippingAddress","cartShipping","getDeliveryOptionsForCartLineItems","ProductDeliveryOptionsForCartLineItems","request","actionContext","deliverySpecifications","LineId","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","DeliveryAddress","tempCart","updateLineDeliverySpecificationsAsync","callerContext","Id","deliveryOptionsOfCurrentCart","newCart","_objectSpread","ChargeLines","DeliveryChargeLines","updateCart","newCartObject","ShippingChargeAmount","userToken","user","token","isAuthenticated","headers","OUN","oun","axios","method","url","baseUrl","cartId","moduleTypeValue","chargeCode","amount","res","genericErrorMessage","setIsCancellable","e","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","_this$channelDelivery","channelDeliveryOptionConfig","PickupDeliveryModeCodes","getDeliveryOptions","_this$props$data$chec5","cartState","originalDeliveryMode","shippingCartLines","hasShippingDeliveryLines","clearCartLinesDeliveryInformation","channelDeliveryOptionConfiguration","deliveryOptionFilter","none","FilterDeliveryModeOption","None","filterOutNonCarrierDeliveryMode","FilterOutNonCarrierDeliveryMode","response","getDeliveryOptionsAsync","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","_unused","deliveryOptionsNotFound","_this$props$data$chec6","updateHasCartDeliveryMode","newHasCartDeliveryMode","isPaymentVerificationRedirection","_this$props$data$chec7","_this$props$data$chec8","event","currentTarget","getTelemetryObject","telemetryPageName","friendlyName","requestFormData","query","pv","reaction","_this$props$data$chec9","_this$props$data$chec10","_this$props$data$chec11","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","deliveryOptionsData","alert","ErrorComponent","errorMessageData","viewState","isShowSaveButton","hasExternalSubmitGroup","isShowEditButton","isShowCancelButton","moduleProps","classname","DeliveryOptionsList","list","deliveryOptionSelected","waiting","Waiting","saveButton","editButton","cancelButton","renderView","__decorate","observable","computed","withModuleState","observer","DeliveryOptionList","excludedDeliveryOptions","excludedOptions","option","exludedOption","toLowerCase","push","itemTobeRemoved","splice","Node","key","DeliveryOptionSelected","_ref2","deliveryOptionSelection","Module","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}