{"version":3,"sources":["webpack:///./Scripts/Actions/Checkout.action.js","webpack:///./Scripts/Components/Button.js","webpack:///./Scripts/Components/Cart.js","webpack:///./Scripts/Components/Checkout.Cart.js","webpack:///./Scripts/Components/InputField.js","webpack:///./Scripts/Components/InfoField.js","webpack:///./Scripts/Components/Checkout.BusinessCustomerInfo.js","webpack:///./Scripts/Components/Checkout.PrivateCustomerInfo.js","webpack:///./Scripts/Components/Checkout.ValidationSchema.js","webpack:///./Scripts/Components/Checkout.CustomerInfo.js","webpack:///./Scripts/Components/Checkout.DeliveryMethods.js","webpack:///./Scripts/Components/Checkout.DiscountCodes.js","webpack:///./Scripts/Components/Checkout.OrderInfo.js","webpack:///./Scripts/Components/Checkout.OrderNote.js","webpack:///./Scripts/Components/Checkout.PaymentMethods.js","webpack:///./Scripts/Components/Payments/PaymentWidget.js","webpack:///./Scripts/Components/Checkout.js"],"names":["setBusinessCustomer","isBusinessCustomer","type","CHECKOUT_SET_PRIVATE_CUSTOMER","payload","updateCustomerDetails","key","data","CHECKOUT_UPDATE_CUSTOMER_INFO","setDelivery","method","dispatch","getState","CHECKOUT_SET_DELIVERY","selectedDeliveryMethod","checkout","put","then","response","json","result","loadCart","paymentWidget","setPaymentWidget","catch","ex","catchError","error","submitError","setCountry","systemId","CHECKOUT_SET_COUNTRY","selectedCountry","deliveryMethods","CHECKOUT_SET_PAYMENT","paymentMethods","selectedPaymentMethod","setPayment","modelState","payment","reloadPayment","CHECKOUT_SET_PAYMENT_WIDGET","setDiscountCode","discountCode","CHECKOUT_SET_DISCOUNT_CODE","setUsedDiscountCodes","usedDiscountCodes","CHECKOUT_SET_USED_DISCOUNT_CODE","_submit","url","model","post","submitDone","setStatusSubmitButton","CHECKOUT_SUBMIT","CHECKOUT_SUBMIT_ERROR","value","CHECKOUT_SET_STATUS_SUBMIT_BUTTON","enableConfirmButton","setShowAlternativeAddress","showAlternativeAddress","CHECKOUT_SET_SHOW_ALTERNATIVE_ADDRESS","setValidateStatus","isValidating","CHECKOUT_VALIDATE_ADDRESS","onClick","title","disabled","fluid","rounded","isLink","getClassNames","useCallback","classes","push","join","className","mapCartToAbort","quantityDispatch","debounce","articleNumber","quantity","AbortController","update","loadError","useDispatch","removingRow","setRemovingRow","useState","cart","useSelector","state","orderRows","setOrderRows","discountRows","useEffect","removeOrderRow","handleQuantityInput","rowSystemId","ensureCorrectness","floatQuantity","parseFloat","validValue","isNaN","index","findIndex","item","abort","cancel","tempOrderRows","ProductImage","order","src","image","alt","name","ProductName","Fragment","href","brand","ProductPrice","isFreeGift","campaignPrice","price","ProductQuantity","min","maxLength","toString","onChange","event","target","onBlur","ProductTotalPrice","totalCampaignPrice","totalPrice","RemoveBtn","translate","CartTotal","orderTotal","map","errors","cssClass","id","autoComplete","placeholder","label","htmlFor","data-error-for","values","idx","getCountry","address","addressCountry","constants","country","text","onSave","onCompanyAddressChange","valueForm","isEditingAddress","useTempDeliveryAddress","setUseTempDeliveryAddress","lastCompanyAddressId","setLastCompanyAddressId","companyAddresses","companyName","authenticated","alternativeAddress","input","stateKey","toLowerCase","selectedAddress","useMemo","selectedCompanyAddressId","find","addresRef","useRef","ref","length","zipCode","city","checked","toggleVal","toggleAlternativeAddress","signUpCheckboxVisibility","signUp","customerDetails","CHECKOUT_SET_SIGN_UP","setSignUp","privateCustomerAdditionalDetailsSchema","object","shape","acceptTermsOfCondition","boolean","required","oneOf","privateCustomerAddressSchema","email","string","phoneNumber","mixed","notOneOf","lastName","firstName","privateCustomerAlternativeAddressSchema","businessCustomerDetailsSchema","businessCustomerAdditionalDetailsSchema","validateAlternativeAddress","validateCustomerInfo","addressPath","addressFormValue","setAddressFormValue","setIsEditingAddress","loginUrl","checkoutMode","onCustomerInfoChange","previousState","companyAddressId","onEditForm","onUpdateCustomerDetails","notCustomerDetailFields","CLEAR_ERROR","updatedData","CHECKOUT_UPDATE_ALTERNATIVE_ADDRESS","CHECKOUT_SET_SELECTED_COMPANY_ADDRESS","setSelectedCompanyAddress","companyAddress","c","path","indexOf","finally","privateCustomerInfoComponent","businessCustomerInfoComponent","formattedPrice","discountCodeEl","current","remove","deleteDiscountCode","discount","deliveryCost","paymentCost","grandTotal","vat","orderNote","CHECKOUT_SET_ORDER_NOTE","setOrderNote","scriptPattern","scriptFilePattern","extractScripts","domString","matches","html","scripts","scriptFiles","exec","replace","trim","executeScript","domId","scriptContent","script","document","createElement","appendChild","createTextNode","e","getElementById","includeScript","srciptUrl","React","responseString","paymentSession","WidgetCheckout","DynamicComponent","loader","args","renderWidget","shippingOptionVisibility","setShippingOptionVisibility","paymentOptionVisibility","setPaymentOptionVisibility","customerDetailsVisibility","setCustomerDetailsVisibility","deliveryWidgetVisibility","setDeliveryWidgetVisibility","paymentWidgetVisibility","setPaymentWidgetVisibility","orderSummaryVisibility","setOrderSummaryVisibility","setSignUpCheckboxVisibility","onSubmit","onSubmitError","placeOrder","onError","resetVisibilityValues","checkIntegrationTypeExist","integrationTypeCheck","integrationType","firstRender","PaymentIntegrationType","ShippingIntegrationType","redirectUrl","window","location","errorKeys","Object","keys","errorNode","querySelector","inputNode","parentElement","setTimeout","focus","scrollIntoView","behavior","updateKey","_force_update","CHECKOUT_ACCEPT_TERMS_OF_CONDITION","termsUrl","rel"],"mappings":"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","file":"758.ecbbba56852305a25f68.js","sourcesContent":["import { post, put, remove } from '../Services/http';\nimport { load as loadCart } from './Cart.action';\nimport { catchError } from './Error.action';\n\nimport {\n CHECKOUT_SET_SELECTED_COMPANY_ADDRESS,\n CHECKOUT_SET_PRIVATE_CUSTOMER,\n CHECKOUT_SET_SIGN_UP,\n CHECKOUT_SET_DELIVERY,\n CHECKOUT_SET_COUNTRY,\n CHECKOUT_SET_PAYMENT,\n CHECKOUT_SET_DISCOUNT_CODE,\n CHECKOUT_SET_ORDER_NOTE,\n CHECKOUT_ACCEPT_TERMS_OF_CONDITION,\n CHECKOUT_SUBMIT,\n CHECKOUT_SUBMIT_ERROR,\n CHECKOUT_SET_PAYMENT_WIDGET,\n CHECKOUT_SET_USED_DISCOUNT_CODE,\n CHECKOUT_UPDATE_CUSTOMER_INFO,\n CHECKOUT_SET_SHOW_ALTERNATIVE_ADDRESS,\n CHECKOUT_UPDATE_ALTERNATIVE_ADDRESS,\n CLEAR_ERROR,\n CHECKOUT_SET_STATUS_SUBMIT_BUTTON,\n CHECKOUT_VALIDATE_ADDRESS,\n} from '../constants';\n\nexport const setBusinessCustomer = (isBusinessCustomer) => ({\n type: CHECKOUT_SET_PRIVATE_CUSTOMER,\n payload: {\n isBusinessCustomer,\n },\n});\n\nexport const setSignUp = (signUp) => ({\n type: CHECKOUT_SET_SIGN_UP,\n payload: {\n signUp,\n },\n});\n\nexport const updateCustomerDetails = (key, data) => ({\n type: CHECKOUT_UPDATE_CUSTOMER_INFO,\n payload: {\n key,\n data,\n },\n});\n\nexport const setSelectedCompanyAddress = (selectedCompanyAddressId) => ({\n type: CHECKOUT_SET_SELECTED_COMPANY_ADDRESS,\n payload: {\n selectedCompanyAddressId,\n },\n});\n\nexport const setDelivery = (method) => (dispatch, getState) => {\n dispatch({\n type: CHECKOUT_SET_DELIVERY,\n payload: {\n selectedDeliveryMethod: method,\n },\n });\n const { payload } = getState().checkout;\n return put('/api/checkout/setDeliveryProvider', payload)\n .then((response) => response.json())\n .then((result) => {\n dispatch(loadCart());\n if (result !== null && result.paymentWidget) {\n dispatch(setPaymentWidget(result.paymentWidget));\n }\n })\n .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\n};\n\nexport const setCountry = (systemId) => (dispatch, getState) => {\n dispatch({\n type: CHECKOUT_SET_COUNTRY,\n payload: {\n selectedCountry: systemId,\n },\n });\n const { payload } = getState().checkout;\n\n // reset paymentWidget to null to avoid sending unnecessary request to payment provider\n dispatch(setPaymentWidget(null));\n\n return put('/api/checkout/setCountry', payload)\n .then((response) => response.json())\n .then((result) => {\n dispatch(loadCart());\n dispatch(setPaymentWidget(result.paymentWidget));\n dispatch({\n type: CHECKOUT_SET_DELIVERY,\n payload: {\n deliveryMethods: result.deliveryMethods,\n selectedDeliveryMethod: result.selectedDeliveryMethod,\n },\n });\n dispatch({\n type: CHECKOUT_SET_PAYMENT,\n payload: {\n paymentMethods: result.paymentMethods,\n selectedPaymentMethod: result.selectedPaymentMethod,\n },\n });\n })\n .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\n};\n\nexport const setPayment = (method) => (dispatch, getState) => {\n dispatch({\n type: CHECKOUT_SET_PAYMENT,\n payload: {\n selectedPaymentMethod: method,\n },\n });\n\n const { payload } = getState().checkout;\n // reset paymentWidget to null to avoid sending unnecessary request to payment provider\n dispatch(setPaymentWidget(null));\n // reset payment error on the checkout\n dispatch(\n submitError({\n modelState: {\n payment: [],\n },\n })\n );\n\n return put('/api/checkout/setPaymentProvider', payload)\n .then((response) => response.json())\n .then((result) => {\n dispatch(loadCart());\n dispatch(setPaymentWidget(result.paymentWidget));\n })\n .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\n};\n\nexport const reloadPayment = () => (dispatch, getState) => {\n const { payload } = getState().checkout;\n return put('/api/checkout/reloadPaymentWidget', payload)\n .then((response) => response.json())\n .then((result) => {\n if (result && result.paymentWidget) {\n dispatch(setPaymentWidget(result.paymentWidget));\n }\n })\n .catch((ex) => dispatch(catchError(ex, (error) => submitError(error))));\n};\n\nconst setPaymentWidget = (paymentWidget) => ({\n type: CHECKOUT_SET_PAYMENT_WIDGET,\n payload: {\n paymentWidget,\n },\n});\n\nexport const setOrderNote = (orderNote) => ({\n type: CHECKOUT_SET_ORDER_NOTE,\n payload: {\n orderNote,\n },\n});\n\nexport const acceptTermsOfCondition = (acceptTermsOfCondition) => ({\n type: CHECKOUT_ACCEPT_TERMS_OF_CONDITION,\n payload: {\n acceptTermsOfCondition,\n },\n});\n\nexport const setDiscountCode = (discountCode) => ({\n type: CHECKOUT_SET_DISCOUNT_CODE,\n payload: {\n discountCode,\n },\n});\n\nexport const submitDiscountCode = () => (dispatch, getState) => {\n const { payload } = getState().checkout;\n return put('/api/checkout/setDiscountCode', payload)\n .then((response) => response.json())\n .then((result) => {\n dispatch(setUsedDiscountCodes(result.usedDiscountCodes));\n dispatch(loadCart());\n dispatch(setPaymentWidget(result.paymentWidget));\n // reset error of campaign code\n dispatch(\n submitError({\n modelState: {\n discountCode: [],\n },\n })\n );\n })\n .catch((ex) => {\n dispatch(catchError(ex, (error) => submitError(error)));\n // restore the initial cart\n dispatch(loadCart());\n });\n};\n\nexport const deleteDiscountCode = (discountCode) => (dispatch, getState) => {\n const { payload } = getState().checkout;\n payload.discountCode = discountCode;\n return remove('/api/checkout/deleteDiscountCode', payload)\n .then((response) => response.json())\n .then((result) => {\n dispatch(setUsedDiscountCodes(result.usedDiscountCodes));\n dispatch(loadCart());\n dispatch(setPaymentWidget(result.paymentWidget));\n dispatch(setDiscountCode(''));\n // reset error of campaign code\n dispatch(\n submitError({\n modelState: {\n discountCode: [],\n },\n })\n );\n })\n .catch((ex) => {\n dispatch(catchError(ex, (error) => submitError(error)));\n // restore the initial cart\n dispatch(loadCart());\n });\n};\n\nconst setUsedDiscountCodes = (usedDiscountCodes) => ({\n type: CHECKOUT_SET_USED_DISCOUNT_CODE,\n payload: {\n usedDiscountCodes,\n },\n});\n\nexport const submit = () => (dispatch, getState) => {\n const { payload } = getState().checkout;\n return _submit('/api/checkout', payload, dispatch);\n};\n\nconst _submit = (url, model, dispatch) => {\n return post(url, model)\n .then((response) => response.json())\n .then((result) => {\n dispatch(submitDone(result));\n })\n .catch((ex) => {\n if (ex.response) {\n ex.response.json().then((error) => {\n dispatch(submitError(error));\n dispatch(submitDone(null));\n // reload the cart, it might be changed after validation\n dispatch(loadCart());\n });\n } else {\n dispatch(submitError(ex));\n }\n dispatch(setStatusSubmitButton(true));\n });\n};\n\nexport const saveCustomerDetail = (data) => (dispatch, getState) => {\n const { payload } = getState().checkout;\n const updatedData = { ...payload, ...data };\n return put('/api/checkout/setCustomerDetail', updatedData)\n .then((response) => response.json())\n .then((response) => {\n dispatch({\n type: CHECKOUT_UPDATE_ALTERNATIVE_ADDRESS,\n payload: {\n alternativeAddress: response.alternativeAddress,\n enableConfirmButton: true,\n },\n });\n })\n .catch((ex) => {\n if (ex.response) {\n ex.response.json().then((error) => {\n dispatch(submitError(error));\n dispatch(setStatusSubmitButton(false));\n });\n } else {\n dispatch(submitError(ex));\n }\n throw ex;\n });\n};\n\nexport const clearError = () => ({\n type: CLEAR_ERROR,\n payload: {\n errors: [],\n },\n});\n\nexport const submitDone = (result) => ({\n type: CHECKOUT_SUBMIT,\n payload: {\n result,\n },\n});\n\nexport const submitError = (error) => ({\n type: CHECKOUT_SUBMIT_ERROR,\n payload: {\n error,\n },\n});\n\nexport const setStatusSubmitButton = (value) => ({\n type: CHECKOUT_SET_STATUS_SUBMIT_BUTTON,\n payload: {\n enableConfirmButton: value,\n },\n});\n\nexport const setShowAlternativeAddress = (showAlternativeAddress) => ({\n type: CHECKOUT_SET_SHOW_ALTERNATIVE_ADDRESS,\n payload: {\n showAlternativeAddress,\n },\n});\nexport const setValidateStatus = (isValidating) => ({\n type: CHECKOUT_VALIDATE_ADDRESS,\n payload: {\n isValidating,\n },\n});\n","import React from 'react';\nimport { useCallback } from 'react';\nconst Button = ({\n onClick,\n title,\n disabled = false,\n type = 'button',\n fluid = false,\n rounded = false,\n isLink = false,\n}) => {\n const getClassNames = useCallback(() => {\n const classes = ['button'];\n if (fluid) classes.push('expanded');\n if (rounded) classes.push('rounded');\n if (isLink) classes.push('link');\n return classes.join(' ');\n }, [fluid, rounded, isLink]);\n return (\n <button\n className={getClassNames()}\n onClick={onClick}\n disabled={disabled}\n type={type}\n >\n {title}\n </button>\n );\n};\nexport default Button;\n","import React, { useState, Fragment, useCallback, useEffect } from 'react';\nimport { translate } from '../Services/translation';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { reloadPayment } from '../Actions/Checkout.action';\nimport { update, loadError } from '../Actions/Cart.action';\nimport { debounce } from 'lodash-es';\nimport { catchError } from '../Actions/Error.action';\n\nconst mapCartToAbort = {};\n\nconst quantityDispatch = debounce((articleNumber, quantity, dispatch) => {\n mapCartToAbort[articleNumber] = new AbortController();\n dispatch(update(articleNumber, quantity, mapCartToAbort[articleNumber]))\n .then(() => dispatch(reloadPayment()))\n .catch((ex) => dispatch(catchError(ex, (error) => loadError(error))));\n}, 500);\n\nconst Cart = () => {\n const dispatch = useDispatch();\n const [removingRow, setRemovingRow] = useState({});\n const cart = useSelector((state) => state.cart);\n const [orderRows, setOrderRows] = useState(cart?.orderRows);\n const { discountRows } = cart;\n\n useEffect(() => {\n setOrderRows(cart?.orderRows);\n }, [cart]);\n\n const removeOrderRow = useCallback(\n (articleNumber) =>\n dispatch(update(articleNumber, 0)).then(() =>\n dispatch(reloadPayment())\n ),\n [dispatch]\n );\n\n const handleQuantityInput = useCallback(\n (articleNumber, quantity, rowSystemId, ensureCorrectness = true) => {\n // In case of onBlur event, we need ensureCorrectness as true in order to ensure if the value is a valid float number\n // In case of onChange event, we accept invalid float number, but we don't send any request to the server.\n let floatQuantity = parseFloat(quantity);\n let validValue = !isNaN(floatQuantity) && floatQuantity > 0;\n if (ensureCorrectness) {\n quantity = validValue ? floatQuantity : 1;\n floatQuantity = quantity;\n validValue = true;\n }\n const index = orderRows.findIndex(\n (item) => item.rowSystemId === rowSystemId\n );\n const oldQuantity = parseFloat(orderRows[index].quantity);\n if (floatQuantity !== oldQuantity) {\n mapCartToAbort[articleNumber] &&\n mapCartToAbort[articleNumber].abort();\n quantityDispatch && quantityDispatch.cancel();\n validValue &&\n quantityDispatch(articleNumber, quantity, dispatch);\n }\n const tempOrderRows = [...orderRows];\n tempOrderRows[index] = {\n ...tempOrderRows[index],\n quantity,\n };\n setOrderRows(tempOrderRows);\n },\n [dispatch, orderRows]\n );\n\n const ProductImage = useCallback(({ order }) => {\n return (\n <img\n className=\"checkout-cart__image\"\n src={order.image}\n alt={order.name}\n />\n );\n }, []);\n\n const ProductName = useCallback(({ order }) => {\n return (\n <Fragment>\n <a href={order.url}>{order.name}</a>\n <span className=\"checkout-cart__brand-name\">{order.brand}</span>\n </Fragment>\n );\n }, []);\n\n const ProductPrice = useCallback(({ order }) => {\n return (\n <Fragment>\n {order.isFreeGift ? order.campaignPrice : order.price}\n </Fragment>\n );\n }, []);\n\n const ProductQuantity = useCallback(\n (order) => {\n return (\n <Fragment>\n {order.isFreeGift ? (\n <div>{order.quantity}</div>\n ) : (\n <input\n className=\"checkout-cart__input\"\n type=\"number\"\n min=\"1\"\n maxLength={3}\n value={order.quantity.toString()}\n onChange={(event) =>\n handleQuantityInput(\n order.articleNumber,\n event.target.value,\n order.rowSystemId,\n false\n )\n }\n onBlur={(event) =>\n handleQuantityInput(\n order.articleNumber,\n event.target.value,\n order.rowSystemId\n )\n }\n />\n )}\n </Fragment>\n );\n },\n [handleQuantityInput]\n );\n\n const ProductTotalPrice = ({ order }) => {\n return (\n <Fragment>\n {order.isFreeGift ? order.totalCampaignPrice : order.totalPrice}\n </Fragment>\n );\n };\n\n const RemoveBtn = useCallback(\n ({ order }) => {\n return (\n <Fragment>\n {!order.isFreeGift && !removingRow[order.rowSystemId] && (\n <a\n className=\"table__icon table__icon--delete\"\n onClick={() =>\n setRemovingRow({\n ...removingRow,\n [order.rowSystemId]: true,\n })\n }\n title={translate('general.remove')}\n ></a>\n )}\n {!order.isFreeGift && removingRow[order.rowSystemId] && (\n <Fragment>\n <a\n className=\"table__icon table__icon--accept\"\n onClick={() =>\n removeOrderRow(order.articleNumber)\n }\n title={translate('general.ok')}\n ></a>\n <a\n className=\"table__icon table__icon--cancel\"\n onClick={() =>\n setRemovingRow({\n ...removingRow,\n [order.rowSystemId]: false,\n })\n }\n title={translate('general.cancel')}\n ></a>\n </Fragment>\n )}\n </Fragment>\n );\n },\n [removeOrderRow, removingRow]\n );\n\n const CartTotal = useCallback(({ cart }) => {\n return (\n <h3 className=\"text--right\">\n {translate('checkout.cart.total')}: {cart.orderTotal}\n </h3>\n );\n }, []);\n\n return (\n <div className=\"row checkout__container\">\n <div className=\"small-12 simple-table hide-for-small-only\">\n <div className=\"row small-unstack no-margin\">\n <div className=\"columns small-12 medium-4 large-5\"></div>\n <div className=\"columns small-3 medium-2 large-2\">\n {translate('checkout.cart.header.price')}\n </div>\n <div className=\"columns small-4 medium-2 large-2\">\n {translate('checkout.cart.header.quantity')}\n </div>\n <div className=\"columns small-5 medium-3 large-3\">\n {translate('checkout.cart.header.total')}\n </div>\n </div>\n {orderRows.map((order) => (\n <div\n className=\"row small-unstack no-margin checkout-cart__row\"\n key={order.rowSystemId}\n >\n <div className=\"columns small-12 medium-4 large-5 checkout-cart__image-container\">\n <div className=\"checkout-cart__image-wrapper\">\n <ProductImage order={order} />\n </div>\n <div className=\"checkout-cart__image-info\">\n <ProductName order={order} />\n </div>\n </div>\n <div className=\"columns small-3 medium-2 large-2 simple-table__cell--no-break-word\">\n <ProductPrice order={order} />\n </div>\n <div className=\"columns small-2 medium-2 large-2\">\n {ProductQuantity(order)}\n </div>\n <div className=\"checkout-cart__total-price columns small-2 medium-3 large-2 simple-table__cell--no-break-word\">\n <ProductTotalPrice order={order} />\n </div>\n <div className=\"columns small-3 medium-1 large-1\">\n <RemoveBtn order={order} />\n </div>\n </div>\n ))}\n {discountRows.map((order) => (\n <div\n className=\"row small-unstack no-margin checkout-cart__row\"\n key={order.rowSystemId}\n >\n <div className=\"columns small-12 medium-4 large-5 checkout-cart__image-container\">\n <div className=\"checkout-cart__discount-info checkout-cart__discount-row\">\n <ProductName order={order} />\n </div>\n </div>\n <div className=\"columns small-3 medium-2 large-2 simple-table__cell--no-break-word\"></div>\n <div className=\"columns small-2 medium-2 large-2\"></div>\n <div className=\"checkout-cart__discount-price columns small-2 medium-3 large-2 simple-table__cell--no-break-word\">\n <ProductTotalPrice order={order} />\n </div>\n <div className=\"columns small-3 medium-1 large-1\"></div>\n </div>\n ))}\n <div className=\"row small-unstack no-margin checkout-cart__row\">\n <div className=\"columns\">\n <CartTotal cart={cart} />\n </div>\n </div>\n </div>\n <div className=\"small-12 simple-table checkout-mobile show-for-small-only\">\n {orderRows.map((order) => (\n <div className=\"row no-margin\" key={order.rowSystemId}>\n <div className=\"columns small-3\">\n <ProductImage order={order} />\n </div>\n <div className=\"columns small-9\">\n <div className=\"row\">\n <div className=\"small-8 columns\">\n <div className=\"flex-container flex-dir-column align-center\">\n <ProductName order={order} />\n </div>\n </div>\n <div className=\"small-4 columns flex-container align-right\">\n <RemoveBtn order={order} />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"small-12 columns flex-container align-justify\">\n <div>\n <ProductPrice order={order} />\n </div>\n <div>{ProductQuantity(order)}</div>\n </div>\n </div>\n <div className=\"row\">\n <div className=\"checkout-cart__total-price small-12 columns text--right\">\n <ProductTotalPrice order={order} />\n </div>\n </div>\n </div>\n </div>\n ))}\n {discountRows.map((order) => (\n <div className=\"row no-margin\" key={order.rowSystemId}>\n <div className=\"columns\">\n <div className=\"checkout-cart__discount-row\">\n <ProductName order={order} />\n </div>\n <div className=\"checkout-cart__discount-price text--right\">\n <ProductTotalPrice order={order} />\n </div>\n </div>\n </div>\n ))}\n <div className=\"row no-margin\">\n <div className=\"columns\">\n <CartTotal cart={cart} />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Cart;\n","import React, { Fragment } from 'react';\nimport Cart from './Cart';\nimport { translate } from '../Services/translation';\n\nconst CheckoutCart = ({ errors }) => {\n return (\n <Fragment>\n <div className=\"row\">\n <div className=\"small-12\">\n <h2 className=\"checkout__title\">\n {translate('checkout.title')}\n </h2>\n </div>\n </div>\n <div className=\"row\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.cart.title')}\n </h3>\n </div>\n <div className=\"row\">\n {errors && errors['cart'] && (\n <p className=\"checkout__validator--error\">\n {errors['cart'][0]}\n </p>\n )}\n </div>\n <Cart />\n </Fragment>\n );\n};\n\nexport default CheckoutCart;\n","import React from 'react';\n\nconst InputField = ({\n cssClass,\n name,\n id,\n autoComplete = null,\n placeholder = null,\n type = 'text',\n maxLength = 200,\n disabled,\n onChange,\n value,\n label,\n errors,\n}) => {\n return (\n <div className={cssClass}>\n <label className=\"form__label\" htmlFor={id}>\n {label}\n </label>\n <input\n className=\"form__input\"\n disabled={disabled}\n id={id}\n name={name}\n type={type}\n value={value}\n placeholder={placeholder}\n autoComplete={autoComplete}\n onChange={(event) => onChange(event.target.value)}\n maxLength={maxLength}\n />\n {errors[id] && (\n <span\n className=\"form__validator--error form__validator--top-narrow\"\n data-error-for={id}\n >\n {errors[id][0]}\n </span>\n )}\n </div>\n );\n};\n\nexport default InputField;\n","import React from 'react';\n\nfunction InfoField({ values }) {\n return (\n <div className=\"small-12 medium-12 columns\">\n {values.map((item, idx) => (\n <>\n <span key={idx}>{item}</span> \n </>\n ))}\n </div>\n );\n}\n\nexport default InfoField;\n","import React, { Fragment, useMemo, useState, useEffect, useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport constants from '../constants';\nimport { translate } from '../Services/translation';\nimport InputField from './InputField';\nimport InfoField from './InfoField';\nimport Button from './Button';\nimport { setShowAlternativeAddress } from '../Actions/Checkout.action';\n\nconst getCountry = (address) => {\n const addressCountry = constants.countries\n ? constants.countries.find((country) => country.value === address.country)\n : null;\n return addressCountry ? addressCountry.text : address.country;\n};\n\nconst CheckoutBusinessCustomerInfo = ({\n onChange,\n onSave,\n onCompanyAddressChange,\n valueForm,\n isEditingAddress,\n useTempDeliveryAddress,\n setUseTempDeliveryAddress,\n}) => {\n const [lastCompanyAddressId, setLastCompanyAddressId] = useState();\n\n const { payload, errors = {} } = useSelector((state) => state.checkout);\n const { companyAddresses = [], companyName, authenticated } = payload;\n const { alternativeAddress = {} } = valueForm;\n const dispatch = useDispatch();\n const input = (\n cssClass,\n stateKey,\n id,\n autoComplete = 'on',\n type = 'text'\n ) => (\n <InputField\n cssClass={cssClass}\n id={`${stateKey}-${id}`}\n name={`${stateKey}-${id}`}\n autoComplete={autoComplete}\n disabled={!authenticated}\n value={(valueForm[stateKey] || {})[id] || ''}\n onChange={(value) => onChange(stateKey, id, value)}\n label={translate(`checkout.customerinfo.${id.toLowerCase()}`)}\n errors={errors}\n type={type}\n />\n );\n\n const selectedAddress = useMemo(() => {\n return valueForm.selectedCompanyAddressId && companyAddresses\n ? companyAddresses.find(\n (address) => address.systemId === valueForm.selectedCompanyAddressId\n )\n : null;\n }, [valueForm.selectedCompanyAddressId, companyAddresses]);\n const addresRef = useRef(null);\n const toggleAlternativeAddress = () => {\n const toggleVal = !useTempDeliveryAddress;\n dispatch(setShowAlternativeAddress(toggleVal));\n setUseTempDeliveryAddress(toggleVal);\n\n //if (toggleVal) {\n // setLastCompanyAddressId(valueForm.selectedCompanyAddressId);\n // const country = companyAddresses?.find(\n // (address) => address.systemId === valueForm.selectedCompanyAddressId\n // )?.country;\n //} else {\n // onCompanyAddressChange(\n // lastCompanyAddressId,\n // companyAddresses?.find(\n // (address) => address.systemId === lastCompanyAddressId\n // )?.country\n // );\n //}\n };\n\n return (\n <div className=\"row checkout-info__container\">\n {isEditingAddress ? (\n <Fragment>\n <div className=\"small-12 medium-6 columns\">\n <div className=\"row-inner\">\n {input(\n 'small-6 columns',\n 'customerDetails',\n 'firstName',\n 'billing given-name'\n )}\n\n {input(\n 'small-6 columns',\n 'customerDetails',\n 'lastName',\n 'billing family-name'\n )}\n </div>\n <div className=\"row-inner\">\n {input(\n 'small-12 columns',\n 'customerDetails',\n 'phoneNumber',\n 'billing tel',\n 'tel'\n )}\n </div>\n <div className=\"row-inner\">\n {input(\n 'small-12 columns',\n 'customerDetails',\n 'email',\n 'email',\n 'email'\n )}\n </div>\n </div>\n <div className=\"small-12 medium-6 columns\">\n <div className=\"row-inner\">\n <div className=\"small-12 columns\">\n <label className=\"form__label\" htmlFor=\"address\">\n {translate('checkout.customerinfo.address')}\n </label>\n\n <select\n ref={addresRef}\n className={`form__input checkout__address-selector ${\n useTempDeliveryAddress ? 'form__temp-address-not-used' : ''\n }`}\n value={valueForm.selectedCompanyAddressId}\n disabled={\n !authenticated ||\n !selectedAddress ||\n selectedAddress.length < 1 ||\n useTempDeliveryAddress\n }\n onChange={(event) =>\n onCompanyAddressChange(\n event.target.value,\n companyAddresses.find(\n (address) => address.systemId === event.target.value\n ).country\n )\n }\n >\n <option value=\"\" disabled>\n {translate(\n 'checkout.customerinfo.companyaddress.placeholder'\n )}\n </option>\n {companyAddresses &&\n companyAddresses.map((address) => (\n <option\n value={address.systemId}\n key={`companyAddress-${address.systemId}`}\n >{`${address.address}, ${address.zipCode}, ${\n address.city\n }, ${getCountry(address)}`}</option>\n ))}\n </select>\n {errors['selectedCompanyAddressId'] && (\n <span\n className=\"form__validator--error form__validator--top-narrow\"\n data-error-for=\"selectedCompanyAddressId\"\n >\n {errors['selectedCompanyAddressId'][0]}\n </span>\n )}\n </div>\n </div>\n {selectedAddress && (\n <div\n className={`row-inner ${\n useTempDeliveryAddress ? 'form__temp-address-not-used' : ''\n }`}\n >\n <div className=\"small-12 columns\">{companyName}</div>\n <div className=\"small-12 columns\">\n {selectedAddress.address}\n </div>\n <div className=\"small-12 columns\">\n <span>{selectedAddress.zipCode}</span> \n <span>{selectedAddress.city}</span>\n </div>\n <div className=\"small-12 columns\">\n {getCountry(selectedAddress)}\n </div>\n </div>\n )}\n\n <div className=\"row-inner\">\n <div className=\"small-12 columns\">\n <label className=\"form__label\">\n {translate('checkout.customerinfo.showAlternativeAddress')}\n </label>\n <input\n type=\"checkbox\"\n checked={useTempDeliveryAddress}\n onChange={() => {\n toggleAlternativeAddress();\n }}\n />\n </div>\n </div>\n {useTempDeliveryAddress && (\n <div className=\"row-inner\">\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'firstName',\n 'shipping given-name'\n )}\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'lastName',\n 'shipping family-name'\n )}\n {input(\n 'small-12 columns',\n 'alternativeAddress',\n 'careOf',\n 'on',\n null,\n 'text',\n 100\n )}\n {input(\n 'small-12 columns',\n 'alternativeAddress',\n 'address',\n 'shipping street-address'\n )}\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'zipCode',\n 'shipping postal-code',\n null,\n 'text',\n 50\n )}\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'city',\n 'shipping address-level2',\n null,\n 'text',\n 100\n )}\n <div className=\"small-12 columns\">\n <label className=\"form__label\" htmlFor=\"country2\">\n {translate('checkout.customerinfo.country')}\n </label>\n <select\n className=\"form__input\"\n id=\"country2\"\n value={alternativeAddress.country}\n autoComplete=\"country\"\n onChange={(event) => {\n onChange(\n 'alternativeAddress',\n 'country',\n event.target.value\n );\n onChange(\n 'customerDetails',\n 'country',\n event.target.value\n );\n }}\n >\n <option value=\"\" disabled>\n {translate('checkout.customerinfo.country.placeholder')}\n </option>\n {constants.countries &&\n constants.countries.map(({ text, value }) => (\n <option value={value} key={`country2-${value}`}>\n {text}\n </option>\n ))}\n </select>\n </div>\n {input(\n 'small-12 columns',\n 'alternativeAddress',\n 'phoneNumber',\n 'shipping tel',\n null,\n 'tel'\n )}\n </div>\n )}\n </div>\n <div className=\"small-12 columns flex-container align-right\">\n <Button\n onClick={onSave}\n title={translate('checkout.continue')}\n rounded={true}\n />\n </div>\n </Fragment>\n ) : (\n <Fragment>\n <InfoField\n values={[\n valueForm['customerDetails']['firstName'],\n valueForm['customerDetails']['lastName'],\n ]}\n />\n <InfoField values={[companyName]} />\n <InfoField values={[selectedAddress.address]} />\n <InfoField values={[selectedAddress.zipCode, selectedAddress.city]} />\n <InfoField values={[getCountry(selectedAddress)]} />\n <InfoField values={[valueForm['customerDetails']['phoneNumber']]} />\n <InfoField values={[valueForm['customerDetails']['email']]} />\n\n {useTempDeliveryAddress && (\n <Fragment>\n <InfoField values={['']} />\n <InfoField values={[translate('orderdetail.deliveryaddress')]} />\n <InfoField\n values={[valueForm['alternativeAddress']['firstName']]}\n />\n <InfoField\n values={[valueForm['alternativeAddress']['lastName']]}\n />\n <InfoField values={[valueForm['alternativeAddress']['careOf']]} />\n <InfoField\n values={[valueForm['alternativeAddress']['address']]}\n />\n <InfoField\n values={[valueForm['alternativeAddress']['zipCode']]}\n />\n <InfoField values={[valueForm['alternativeAddress']['city']]} />\n <InfoField\n values={[valueForm['alternativeAddress']['country']]}\n />\n </Fragment>\n )}\n </Fragment>\n )}\n </div>\n );\n};\n\nexport default CheckoutBusinessCustomerInfo;\nexport { getCountry };\n","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport constants from '../constants';\nimport { translate } from '../Services/translation';\nimport {\n setSignUp,\n setShowAlternativeAddress,\n} from '../Actions/Checkout.action';\nimport InputField from './InputField';\nimport { Fragment } from 'react';\nimport InfoField from './InfoField';\nimport { getCountry } from './Checkout.BusinessCustomerInfo';\nimport Button from './Button';\n\nconst CheckoutPrivateCustomerInfo = ({\n onChange,\n onSave,\n valueForm,\n isEditingAddress,\n signUpCheckboxVisibility,\n}) => {\n const dispatch = useDispatch();\n const { payload, errors = {} } = useSelector((state) => state.checkout);\n const { authenticated, signUp, isValidating } = payload;\n const { customerDetails = {}, alternativeAddress = {} } = valueForm;\n\n const input = (\n cssClass,\n stateKey,\n id,\n autoComplete = 'on',\n placeholder = null,\n type = 'text',\n maxLength = 200\n ) => (\n <InputField\n cssClass={cssClass}\n id={`${stateKey}-${id}`}\n name={`${stateKey}-${id}`}\n autoComplete={autoComplete}\n value={(valueForm[stateKey] || {})[id] || ''}\n onChange={(value) => onChange(stateKey, id, value)}\n label={translate(`checkout.customerinfo.${id.toLowerCase()}`)}\n errors={errors}\n placeholder={placeholder}\n type={type}\n maxLength={maxLength}\n />\n );\n\n return (\n <div className=\"row checkout-info__container\">\n {isEditingAddress ? (\n <Fragment>\n <div className=\"small-12 medium-6 columns\">\n <div className=\"row-inner\">\n <div className=\"small-12 columns checkout-info__placeholder-container\"></div>\n </div>\n <div className=\"row-inner\">\n {input(\n 'small-6 columns',\n 'customerDetails',\n 'firstName',\n 'billing given-name'\n )}\n {input(\n 'small-6 columns',\n 'customerDetails',\n 'lastName',\n 'billing family-name'\n )}\n {input(\n 'small-12 columns',\n 'customerDetails',\n 'careOf',\n 'on',\n null,\n 'text',\n 100\n )}\n {input(\n 'small-12 columns',\n 'customerDetails',\n 'address',\n 'billing street-address'\n )}\n {input(\n 'small-6 columns',\n 'customerDetails',\n 'zipCode',\n 'billing postal-code',\n null,\n 'text',\n 50\n )}\n {input(\n 'small-6 columns',\n 'customerDetails',\n 'city',\n 'billing address-level2',\n null,\n 'text',\n 100\n )}\n <div className=\"small-12 columns\">\n <label className=\"form__label\" htmlFor=\"country\">\n {translate('checkout.customerinfo.country')}\n </label>\n <select\n className=\"form__input\"\n id=\"country\"\n value={customerDetails.country}\n autoComplete=\"country\"\n onChange={(event) => {\n onChange(\n 'alternativeAddress',\n 'country',\n event.target.value\n );\n onChange('customerDetails', 'country', event.target.value);\n }}\n >\n <option value=\"\" disabled>\n {translate('checkout.customerinfo.country.placeholder')}\n </option>\n {constants.countries &&\n constants.countries.map(({ text, value }) => (\n <option value={value} key={`country-${value}`}>\n {text}\n </option>\n ))}\n </select>\n </div>\n {input(\n 'small-12 columns',\n 'customerDetails',\n 'phoneNumber',\n 'billing tel',\n null,\n 'tel'\n )}\n </div>\n </div>\n <div className=\"small-12 medium-6 columns\">\n <div className=\"row-inner\">\n <div className=\"small-12 columns\">\n <input\n className=\"checkout-info__checkbox-input\"\n type=\"checkbox\"\n id=\"showAlternativeAddress\"\n name=\"showAlternativeAddress\"\n checked={alternativeAddress.showAlternativeAddress || false}\n onChange={(event) => {\n onChange(\n 'alternativeAddress',\n 'showAlternativeAddress',\n event.target.checked\n );\n dispatch(setShowAlternativeAddress(event.target.checked));\n }}\n />\n <label\n className=\"checkout-info__checkbox-label\"\n htmlFor=\"showAlternativeAddress\"\n >\n {translate('checkout.customerinfo.showAlternativeAddress')}\n </label>\n </div>\n </div>\n {alternativeAddress.showAlternativeAddress && (\n <div className=\"row-inner\">\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'firstName',\n 'shipping given-name'\n )}\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'lastName',\n 'shipping family-name'\n )}\n {input(\n 'small-12 columns',\n 'alternativeAddress',\n 'careOf',\n 'on',\n null,\n 'text',\n 100\n )}\n {input(\n 'small-12 columns',\n 'alternativeAddress',\n 'address',\n 'shipping street-address'\n )}\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'zipCode',\n 'shipping postal-code',\n null,\n 'text',\n 50\n )}\n {input(\n 'small-6 columns',\n 'alternativeAddress',\n 'city',\n 'shipping address-level2',\n null,\n 'text',\n 100\n )}\n <div className=\"small-12 columns\">\n <label className=\"form__label\" htmlFor=\"country2\">\n {translate('checkout.customerinfo.country')}\n </label>\n <select\n className=\"form__input\"\n id=\"country2\"\n value={alternativeAddress.country}\n autoComplete=\"country\"\n onChange={(event) => {\n onChange(\n 'alternativeAddress',\n 'country',\n event.target.value\n );\n onChange(\n 'customerDetails',\n 'country',\n event.target.value\n );\n }}\n >\n <option value=\"\" disabled>\n {translate('checkout.customerinfo.country.placeholder')}\n </option>\n {constants.countries &&\n constants.countries.map(({ text, value }) => (\n <option value={value} key={`country2-${value}`}>\n {text}\n </option>\n ))}\n </select>\n </div>\n {input(\n 'small-12 columns',\n 'alternativeAddress',\n 'phoneNumber',\n 'shipping tel',\n null,\n 'tel'\n )}\n </div>\n )}\n </div>\n <div className=\"small-12 medium-6 columns\">\n <div className=\"row-inner\">\n {input(\n 'small-12 columns',\n 'customerDetails',\n 'email',\n 'email',\n null,\n 'email'\n )}\n </div>\n </div>\n <div\n className={`small-12 columns flex-container ${\n authenticated ? 'align-right' : 'align-justify'\n }`}\n >\n <div>\n {!authenticated && signUpCheckboxVisibility && (\n <>\n <input\n className=\"checkout-info__checkbox-input\"\n type=\"checkbox\"\n id=\"signupandlogin\"\n checked={signUp}\n onChange={(event) =>\n dispatch(setSignUp(event.target.checked))\n }\n />\n <label\n className=\"checkout-info__checkbox-label\"\n htmlFor=\"signupandlogin\"\n >\n {translate('checkout.customerinfo.signupandlogin')}\n </label>\n </>\n )}\n </div>\n <Button\n onClick={onSave}\n title={translate('checkout.continue')}\n rounded={true}\n disabled={isValidating}\n />\n </div>\n </Fragment>\n ) : (\n <Fragment>\n <InfoField\n values={[\n valueForm['customerDetails']['firstName'],\n valueForm['customerDetails']['lastName'],\n ]}\n />\n {valueForm['customerDetails']['careOf'] && (\n <InfoField values={[valueForm['customerDetails']['careOf']]} />\n )}\n <InfoField values={[valueForm['customerDetails']['address']]} />\n <InfoField\n values={[\n valueForm['customerDetails']['zipCode'],\n valueForm['customerDetails']['city'],\n ]}\n />\n <InfoField values={[getCountry(customerDetails)]} />\n\n <InfoField values={[valueForm['customerDetails']['phoneNumber']]} />\n <InfoField values={[valueForm['customerDetails']['email']]} />\n </Fragment>\n )}\n </div>\n );\n};\n\nexport default CheckoutPrivateCustomerInfo;\n","import { string, object, boolean, mixed } from 'yup';\nimport { translate } from '../Services/translation';\n\nconst privateCustomerAdditionalDetailsSchema = object().shape({\n acceptTermsOfCondition: boolean()\n .required(translate(`validation.checkrequired`))\n .oneOf([true], translate(`validation.checkrequired`)),\n selectedDeliveryMethod: object().required(translate(`validation.required`)),\n selectedPaymentMethod: object().required(translate(`validation.required`)),\n});\n\nconst privateCustomerAddressSchema = object().shape({\n email: string()\n .required(translate(`validation.required`))\n .email(translate(`validation.email`)),\n phoneNumber: string().required(translate(`validation.required`)),\n country: mixed()\n .required(translate(`validation.required`))\n .notOneOf([''], translate('validation.required')),\n city: string().required(translate(`validation.required`)),\n zipCode: string().required(translate(`validation.required`)),\n address: string().required(translate(`validation.required`)),\n lastName: string().required(translate(`validation.required`)),\n firstName: string().required(translate(`validation.required`)),\n});\n\nconst privateCustomerAlternativeAddressSchema = object().shape({\n phoneNumber: string().required(translate(`validation.required`)),\n country: mixed()\n .required(translate(`validation.required`))\n .notOneOf([''], translate('validation.required')),\n city: string().required(translate(`validation.required`)),\n zipCode: string().required(translate(`validation.required`)),\n address: string().required(translate(`validation.required`)),\n lastName: string().required(translate(`validation.required`)),\n firstName: string().required(translate(`validation.required`)),\n});\n\nconst businessCustomerDetailsSchema = object().shape({\n email: string()\n .required(translate(`validation.required`))\n .email(translate(`validation.email`)),\n phoneNumber: string().required(translate(`validation.required`)),\n lastName: string().required(translate(`validation.required`)),\n firstName: string().required(translate(`validation.required`)),\n selectedCompanyAddressId: string().required(translate(`validation.required`)),\n});\n\nconst businessCustomerAdditionalDetailsSchema = object().shape({\n acceptTermsOfCondition: boolean()\n .required(translate(`validation.checkrequired`))\n .oneOf([true], translate(`validation.checkrequired`)),\n selectedDeliveryMethod: object().required(translate(`validation.required`)),\n selectedPaymentMethod: object().required(translate(`validation.required`)),\n});\n\nexport {\n privateCustomerAdditionalDetailsSchema,\n privateCustomerAddressSchema,\n privateCustomerAlternativeAddressSchema,\n businessCustomerDetailsSchema,\n businessCustomerAdditionalDetailsSchema,\n};\n","import React, { Fragment, useCallback, useState, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport {\n clearError,\n setBusinessCustomer,\n setSelectedCompanyAddress,\n submitError,\n updateCustomerDetails,\n setCountry,\n saveCustomerDetail,\n setValidateStatus,\n} from '../Actions/Checkout.action';\nimport CheckoutBusinessCustomerInfo from './Checkout.BusinessCustomerInfo';\nimport CheckoutPrivateCustomerInfo from './Checkout.PrivateCustomerInfo';\nimport {\n businessCustomerDetailsSchema,\n privateCustomerAddressSchema,\n privateCustomerAlternativeAddressSchema,\n} from './Checkout.ValidationSchema';\nimport constants from '../constants';\nimport { translate } from '../Services/translation';\nimport Button from './Button';\n\nconst validateAlternativeAddress = (alternativeAddress) => {\n return (\n alternativeAddress &&\n alternativeAddress.showAlternativeAddress &&\n (alternativeAddress.firstName ||\n alternativeAddress.lastName ||\n alternativeAddress.address ||\n alternativeAddress.zipCode ||\n alternativeAddress.city ||\n alternativeAddress.phoneNumber)\n );\n};\n\nconst validateCustomerInfo = (\n result,\n isBusinessCustomer,\n useTempDeliveryAddress = false\n) => {\n const {\n customerDetails,\n selectedCompanyAddressId,\n alternativeAddress,\n } = result;\n\n if (isBusinessCustomer) {\n return businessCustomerDetailsSchema\n .validate({\n ...customerDetails,\n selectedCompanyAddressId: selectedCompanyAddressId,\n })\n .then((result) => {\n if (\n useTempDeliveryAddress &&\n validateAlternativeAddress(alternativeAddress)\n ) {\n return privateCustomerAlternativeAddressSchema\n .validate({\n ...alternativeAddress,\n })\n .catch((error) => {\n error.addressPath = 'alternativeAddress';\n throw error;\n });\n } else {\n return result;\n }\n });\n }\n\n return privateCustomerAddressSchema\n .validate({\n ...customerDetails,\n })\n .then((result) => {\n if (validateAlternativeAddress(alternativeAddress)) {\n return privateCustomerAlternativeAddressSchema\n .validate({\n ...alternativeAddress,\n })\n .catch((error) => {\n error.addressPath = 'alternativeAddress';\n throw error;\n });\n } else {\n return result;\n }\n });\n};\n\nconst CheckoutCustomerInfo = ({\n checkout,\n addressFormValue,\n setAddressFormValue,\n isEditingAddress,\n setIsEditingAddress,\n signUpCheckboxVisibility,\n}) => {\n const dispatch = useDispatch();\n const {\n payload: { loginUrl, authenticated, isBusinessCustomer, checkoutMode },\n } = checkout;\n const [useTempDeliveryAddress, setUseTempDeliveryAddress] = useState(false);\n const onCustomerInfoChange = useCallback(\n (stateKey, id, value) => {\n setAddressFormValue((previousState) => ({\n ...previousState,\n [stateKey]: {\n ...previousState[stateKey],\n useTempDeliveryAddress,\n [id]: value,\n },\n }));\n },\n [setAddressFormValue]\n );\n const onCompanyAddressChange = useCallback(\n (companyAddressId, country) => {\n setAddressFormValue((previousState) => ({\n ...previousState,\n selectedCompanyAddressId: companyAddressId,\n customerDetails: {\n ...previousState.customerDetails,\n country,\n useTempDeliveryAddress,\n },\n }));\n },\n [setAddressFormValue]\n );\n\n const onEditForm = useCallback(() => {\n setIsEditingAddress(true);\n }, [setIsEditingAddress]);\n\n const onUpdateCustomerDetails = useCallback(() => {\n const notCustomerDetailFields = ['selectedCompanyAddressId'];\n const onValid = () => {\n const { payload } = checkout,\n { isBusinessCustomer } = payload;\n const {\n customerDetails,\n selectedCompanyAddressId,\n alternativeAddress,\n useTempDeliveryAddress,\n } = addressFormValue;\n\n dispatch(updateCustomerDetails('customerDetails', customerDetails));\n if (isBusinessCustomer) {\n dispatch(setSelectedCompanyAddress(selectedCompanyAddressId));\n const companyAddress = payload.companyAddresses.find(\n (c) => c.systemId === selectedCompanyAddressId\n );\n if (useTempDeliveryAddress) {\n dispatch(\n updateCustomerDetails('alternativeAddress', alternativeAddress)\n );\n }\n dispatch(setCountry(companyAddress.country));\n } else {\n dispatch(\n updateCustomerDetails('alternativeAddress', alternativeAddress)\n );\n dispatch(setCountry(customerDetails.country));\n }\n setIsEditingAddress(false);\n };\n\n const onSetCustomerDetail = () =>\n dispatch(saveCustomerDetail(addressFormValue));\n\n const onError = (error) => {\n error.path =\n notCustomerDetailFields.indexOf(error.path) >= 0\n ? error.path\n : `${error?.addressPath || 'customerDetails'}-${error.path}`;\n dispatch(submitError(error));\n };\n\n dispatch(setValidateStatus(true));\n dispatch(clearError());\n\n validateCustomerInfo(\n addressFormValue,\n isBusinessCustomer,\n useTempDeliveryAddress\n )\n .then(onSetCustomerDetail)\n .then(onValid)\n .catch(onError)\n .finally(() => {\n dispatch(setValidateStatus(false));\n });\n }, [\n dispatch,\n addressFormValue,\n isBusinessCustomer,\n checkout,\n setIsEditingAddress,\n useTempDeliveryAddress,\n ]);\n\n const privateCustomerInfoComponent = useCallback(() => {\n return (\n <CheckoutPrivateCustomerInfo\n onSave={onUpdateCustomerDetails}\n onChange={onCustomerInfoChange}\n valueForm={addressFormValue}\n isEditingAddress={isEditingAddress}\n signUpCheckboxVisibility={signUpCheckboxVisibility}\n />\n );\n }, [\n addressFormValue,\n isEditingAddress,\n onCustomerInfoChange,\n onUpdateCustomerDetails,\n signUpCheckboxVisibility,\n ]);\n\n const businessCustomerInfoComponent = useCallback(() => {\n return (\n <CheckoutBusinessCustomerInfo\n onChange={onCustomerInfoChange}\n onCompanyAddressChange={onCompanyAddressChange}\n onSave={onUpdateCustomerDetails}\n valueForm={addressFormValue}\n isEditingAddress={isEditingAddress}\n useTempDeliveryAddress={useTempDeliveryAddress}\n setUseTempDeliveryAddress={setUseTempDeliveryAddress}\n />\n );\n }, [\n addressFormValue,\n isEditingAddress,\n onCompanyAddressChange,\n onCustomerInfoChange,\n onUpdateCustomerDetails,\n useTempDeliveryAddress,\n setUseTempDeliveryAddress,\n ]);\n\n if (!authenticated) {\n return (\n <Fragment>\n <div className=\"row align-justify\">\n <div className=\"flex-container checkout__flex-wrapper\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.customerinfo.title')}\n </h3>\n {isEditingAddress && (\n <Fragment>\n <label className=\"checkout__text--in-line\">\n {translate('checkout.customerinfo.existingcustomer')}\n </label>\n \n <a href={loginUrl} className=\"checkout__link\">\n {translate('checkout.customerinfo.clicktologin')}\n </a>\n \n {!isBusinessCustomer &&\n checkoutMode === constants.checkoutMode.both && (\n <a\n onClick={() => dispatch(setBusinessCustomer(true))}\n className=\"checkout__link\"\n >\n {translate('checkout.customerinfo.businesscustomer')}\n </a>\n )}\n {isBusinessCustomer &&\n checkoutMode === constants.checkoutMode.both && (\n <a\n onClick={() => dispatch(setBusinessCustomer(false))}\n className=\"checkout__link\"\n >\n {translate('checkout.customerinfo.privatecustomer')}\n </a>\n )}\n </Fragment>\n )}\n </div>\n {!isEditingAddress && (\n <Button\n onClick={onEditForm}\n title={translate('checkout.edit')}\n isLink={true}\n />\n )}\n </div>\n {!isBusinessCustomer &&\n checkoutMode !== constants.checkoutMode.companyCustomers &&\n privateCustomerInfoComponent()}\n {(isBusinessCustomer ||\n checkoutMode === constants.checkoutMode.companyCustomers) &&\n businessCustomerInfoComponent()}\n </Fragment>\n );\n }\n\n return (\n <Fragment>\n <div className=\"row align-justify\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.customerinfo.title')}\n </h3>\n {!isEditingAddress && (\n <Button onClick={onEditForm} title=\"edit\" isLink={true} />\n )}\n </div>\n {!isBusinessCustomer && privateCustomerInfoComponent()}\n {isBusinessCustomer && businessCustomerInfoComponent()}\n </Fragment>\n );\n};\n\nexport default CheckoutCustomerInfo;\nexport { validateAlternativeAddress, validateCustomerInfo };\n","import React, { Fragment } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { setDelivery } from '../Actions/Checkout.action';\nimport { translate } from '../Services/translation';\n\nconst CheckoutDeliveryMethods = ({ errors }) => {\n const dispatch = useDispatch();\n const { deliveryMethods, selectedDeliveryMethod } = useSelector(\n (state) => state.checkout.payload\n );\n\n return (\n <Fragment>\n <div className=\"row\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.delivery.title')}\n </h3>\n </div>\n {deliveryMethods && deliveryMethods.length > 0 && (\n <section className=\"row checkout-info__container\">\n <div className=\"columns small-12\">\n {deliveryMethods.map((method) => (\n <label className=\"row no-margin\" key={method.id}>\n <input\n type=\"radio\"\n name=\"deliveryMethods\"\n className=\"checkout-info__checkbox-radio\"\n value={method.id}\n checked={\n method.id === selectedDeliveryMethod?.id\n }\n onChange={() =>\n dispatch(setDelivery(method))\n }\n />\n <span className=\"columns\">\n <b> {method.name} </b> -{' '}\n {method.formattedPrice}\n </span>\n </label>\n ))}\n </div>\n </section>\n )}\n <div className=\"row\">\n {errors['selectedDeliveryMethod'] && (\n <span className=\"form__validator--error form__validator--top-narrow\">\n {errors['selectedDeliveryMethod'][0]}\n </span>\n )}\n </div>\n </Fragment>\n );\n};\n\nexport default CheckoutDeliveryMethods;\n","import React, { Fragment, useEffect, useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { translate } from '../Services/translation';\nimport {\n setDiscountCode,\n submitDiscountCode,\n deleteDiscountCode,\n} from '../Actions/Checkout.action';\n\nconst CheckoutPaymentMethods = () => {\n const dispatch = useDispatch();\n const { payload, errors = {} } = useSelector((state) => state.checkout);\n const { usedDiscountCodes } = payload;\n const discountCodeEl = useRef(null);\n\n useEffect(() => {\n if (errors && !errors['discountCode']?.length) {\n discountCodeEl.current.value = '';\n }\n }, [errors]);\n\n return (\n <Fragment>\n <div className=\"row\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.discountcode')}\n </h3>\n </div>\n <section className=\"row checkout-info__container\">\n <div className=\"columns small-12\">\n <div className=\"row no-margin\">\n <div className=\"small-6 medium-4\">\n <input\n ref={discountCodeEl}\n className=\"form__input\"\n id=\"campaign-code\"\n placeholder={translate('checkout.discountcode')}\n onChange={(event) =>\n dispatch(\n setDiscountCode(event.target.value)\n )\n }\n />\n {errors && errors['discountCode'] && (\n <span\n className=\"form__validator--error form__validator--top-narrow\"\n data-error-for=\"campaign-code\"\n >\n {errors['discountCode'][0]}\n </span>\n )}\n </div>\n <div className=\"small-5 medium-4 columns\">\n <button\n className=\"checkout-info__campaign-button\"\n onClick={() => dispatch(submitDiscountCode())}\n >\n {translate('checkout.usediscountcode')}\n </button>\n </div>\n </div>\n <div className=\"row no-margin\">\n <div className=\"chip__container\">\n {usedDiscountCodes &&\n usedDiscountCodes.map((discountCode) => (\n <div className=\"chip\" key={discountCode}>\n <span className=\"chip__label checkout-discount-codes\">\n {discountCode}\n </span>\n <i className=\"chip__icon chip__icon--check\"></i>\n <i\n className=\"chip__icon chip__icon--delete\"\n onClick={() =>\n dispatch(\n deleteDiscountCode(\n discountCode\n )\n )\n }\n title={translate('general.remove')}\n ></i>\n </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n </Fragment>\n );\n};\n\nexport default CheckoutPaymentMethods;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { translate } from '../Services/translation';\n\nconst CheckoutOrderInfo = () => {\n const cart = useSelector((state) => state.cart);\n\n return (\n <div className=\"columns small-12 medium-6 checkout-info__summary--full-row\">\n <div>\n {translate('checkout.order.productstotal')}{' '}\n <span className=\"checkout-info__summary--expand\"></span>{' '}\n {cart.orderTotal}\n </div>\n <div>\n {translate('checkout.order.discount')}{' '}\n <span className=\"checkout-info__summary--expand\"></span>{' '}\n {cart.discount}\n </div>\n <div>\n {translate('checkout.order.deliverycost')}{' '}\n <span className=\"checkout-info__summary--expand\"></span>{' '}\n {cart.deliveryCost}\n </div>\n <div>\n {translate('checkout.order.paymentcost')}{' '}\n <span className=\"checkout-info__summary--expand\"></span>{' '}\n {cart.paymentCost}\n </div>\n <h3>\n {translate('checkout.order.grandTotal')}{' '}\n <span className=\"checkout-info__summary--expand\"></span>{' '}\n {cart.grandTotal}\n </h3>\n <div>\n {translate('checkout.order.vat')}{' '}\n <span className=\"checkout-info__summary--expand\"></span>{' '}\n {cart.vat}\n </div>\n </div>\n );\n};\n\nexport default CheckoutOrderInfo;\n","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { translate } from '../Services/translation';\nimport { setOrderNote } from '../Actions/Checkout.action';\n\nconst CheckoutOrderNote = () => {\n const dispatch = useDispatch();\n const orderNote = useSelector((state) => state.checkout.payload.orderNote);\n\n return (\n <div className=\"columns small-12 medium-6 checkout-info__summary--full-height\">\n {translate('checkout.order.message')}\n <textarea\n className=\"form__input checkout-info__messages\"\n value={orderNote}\n onChange={(event) => dispatch(setOrderNote(event.target.value))}\n ></textarea>\n </div>\n );\n};\n\nexport default CheckoutOrderNote;\n","import React, { Fragment } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { setPayment } from '../Actions/Checkout.action';\nimport { translate } from '../Services/translation';\n\nconst CheckoutPaymentMethods = ({ errors }) => {\n const dispatch = useDispatch();\n const { payload } = useSelector((state) => state.checkout);\n const { paymentMethods, selectedPaymentMethod } = payload;\n\n return (\n <Fragment>\n {paymentMethods && paymentMethods.length > 1 && (\n <div className=\"row\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.payment.title')}\n </h3>\n </div>\n )}\n {paymentMethods && paymentMethods.length > 1 && (\n <section className=\"row checkout-info__container\">\n <div className=\"columns small-12\">\n {paymentMethods.map((method) => (\n <label className=\"row no-margin\" key={method.id}>\n <input\n type=\"radio\"\n name=\"paymentMethods\"\n className=\"checkout-info__checkbox-radio\"\n value={method.id}\n checked={method.id === selectedPaymentMethod.id}\n onChange={() => dispatch(setPayment(method))}\n />\n <span className=\"columns\">\n <b> {method.name} </b> - {method.formattedPrice}\n </span>\n </label>\n ))}\n </div>\n </section>\n )}\n <div className=\"row\">\n {errors['selectedPaymentMethod'] && (\n <span className=\"form__validator--error form__validator--top-narrow\">\n {errors['selectedPaymentMethod'][0]}\n </span>\n )}\n </div>\n </Fragment>\n );\n};\n\nexport default CheckoutPaymentMethods;\n","import React from 'react';\nimport DynamicComponent from '../DynamicComponent';\nconst scriptPattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script>/gi;\nconst scriptFilePattern = /<script.*?src=[\"'](.*?)[\"']/gi;\n\nconst extractScripts = (domString) => {\n let matches,\n html = domString;\n const scripts = [],\n scriptFiles = [];\n while ((matches = scriptPattern.exec(domString)) !== null) {\n html = html.replace(matches[0], '');\n matches[1] && matches[1].trim() !== '' && scripts.push(matches[1]);\n }\n while ((matches = scriptFilePattern.exec(domString)) !== null) {\n matches[1] && matches[1].trim() !== '' && scriptFiles.push(matches[1]);\n }\n\n return {\n html,\n scripts,\n scriptFiles,\n };\n};\n\nconst executeScript = (domId, scriptContent) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n try {\n script.appendChild(document.createTextNode(scriptContent));\n } catch (e) {\n // to support IE\n script.text = scriptContent;\n }\n document.getElementById(domId).appendChild(script);\n};\n\nconst includeScript = (domId, srciptUrl) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = srciptUrl;\n document.getElementById(domId).appendChild(script);\n};\n\nconst PaymentWidget = React.memo(function PaymentWidget({ responseString }) {\n const renderWidget = (paymentSession) => {\n const WidgetCheckout = DynamicComponent({\n loader: () => import('./CheckoutWidget'),\n });\n const args = {\n paymentSession,\n extractScripts,\n executeScript,\n includeScript,\n };\n return <WidgetCheckout {...args} />;\n };\n\n return renderWidget(responseString);\n});\n\nexport default PaymentWidget;\n","import React, {\n Fragment,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n acceptTermsOfCondition,\n setDelivery,\n setPayment,\n setStatusSubmitButton,\n submit,\n submitDone,\n submitError,\n} from '../Actions/Checkout.action';\nimport constants, {\n PaymentIntegrationType,\n ShippingIntegrationType,\n} from '../constants';\nimport { translate } from '../Services/translation';\nimport Button from './Button';\nimport CheckoutCart from './Checkout.Cart';\nimport CheckoutCustomerInfo, {\n validateAlternativeAddress,\n validateCustomerInfo,\n} from './Checkout.CustomerInfo';\nimport CheckoutDeliveryMethods from './Checkout.DeliveryMethods';\nimport CheckoutDiscountCodes from './Checkout.DiscountCodes';\nimport CheckoutOrderInfo from './Checkout.OrderInfo';\nimport CheckoutOrderNote from './Checkout.OrderNote';\nimport CheckoutPaymentMethods from './Checkout.PaymentMethods';\nimport {\n businessCustomerAdditionalDetailsSchema,\n businessCustomerDetailsSchema,\n privateCustomerAdditionalDetailsSchema,\n privateCustomerAddressSchema,\n privateCustomerAlternativeAddressSchema,\n} from './Checkout.ValidationSchema';\nimport PaymentWidget from './Payments/PaymentWidget';\n\nconst Checkout = () => {\n const dispatch = useDispatch();\n const cart = useSelector((state) => state.cart);\n const checkout = useSelector((state) => state.checkout);\n\n const [shippingOptionVisibility, setShippingOptionVisibility] = useState(\n true\n );\n const [paymentOptionVisibility, setPaymentOptionVisibility] = useState(\n true\n );\n const [customerDetailsVisibility, setCustomerDetailsVisibility] = useState(\n true\n );\n const [deliveryWidgetVisibility, setDeliveryWidgetVisibility] = useState(\n true\n );\n const [paymentWidgetVisibility, setPaymentWidgetVisibility] = useState(\n true\n );\n const [orderSummaryVisibility, setOrderSummaryVisibility] = useState(true);\n const [signUpCheckboxVisibility, setSignUpCheckboxVisibility] = useState(\n true\n );\n\n const {\n payload: {\n customerDetails,\n alternativeAddress,\n selectedCompanyAddressId,\n selectedDeliveryMethod,\n selectedPaymentMethod,\n deliveryMethods,\n paymentMethods,\n },\n } = checkout;\n const [isEditingAddress, setIsEditingAddress] = useState(true);\n const [addressFormValue, setAddressFormValue] = useState({\n customerDetails,\n alternativeAddress,\n selectedCompanyAddressId,\n });\n const onSubmit = useCallback(() => dispatch(submit()), [dispatch]);\n const onSubmitError = useCallback(\n (error) => {\n dispatch(submitError(error));\n dispatch(submitDone(null));\n },\n [dispatch]\n );\n\n const placeOrder = useCallback(() => {\n const { payload } = checkout,\n {\n isBusinessCustomer,\n selectedCompanyAddressId,\n acceptTermsOfCondition,\n selectedPaymentMethod,\n selectedDeliveryMethod,\n } = payload;\n const notCustomerDetailFields = [\n 'selectedCompanyAddressId',\n 'selectedPaymentMethod',\n 'selectedDeliveryMethod',\n 'acceptTermsOfCondition',\n ];\n const onError = (error, addressPath = 'customerDetails') => {\n error.path =\n notCustomerDetailFields.indexOf(error.path) >= 0\n ? error.path\n : `${addressPath}-${error.path}`;\n onSubmitError(error);\n dispatch(setStatusSubmitButton(true));\n };\n dispatch(setStatusSubmitButton(false));\n if (isBusinessCustomer) {\n businessCustomerDetailsSchema\n .validate({\n ...payload.customerDetails,\n selectedCompanyAddressId,\n })\n .then(() => {\n businessCustomerAdditionalDetailsSchema\n .validate({\n selectedPaymentMethod,\n selectedDeliveryMethod,\n acceptTermsOfCondition,\n })\n .then(() => {\n onSubmit();\n })\n .catch(onError);\n })\n .catch(onError);\n } else {\n privateCustomerAddressSchema\n .validate({\n ...payload.customerDetails,\n })\n .then(() => {\n if (\n validateAlternativeAddress(payload.alternativeAddress)\n ) {\n privateCustomerAlternativeAddressSchema\n .validate({\n ...payload.alternativeAddress,\n })\n .then(() => {\n privateCustomerAdditionalDetailsSchema\n .validate({\n selectedPaymentMethod,\n selectedDeliveryMethod,\n acceptTermsOfCondition,\n })\n .then(() => {\n onSubmit();\n })\n .catch(onError);\n })\n .catch((error) => {\n onError(error, 'alternativeAddress');\n });\n } else {\n privateCustomerAdditionalDetailsSchema\n .validate({\n selectedPaymentMethod,\n selectedDeliveryMethod,\n acceptTermsOfCondition,\n })\n .then(() => {\n onSubmit();\n })\n .catch(onError);\n }\n })\n .catch(onError);\n }\n }, [checkout, dispatch, onSubmit, onSubmitError]);\n\n const resetVisibilityValues = useCallback(() => {\n setShippingOptionVisibility(true);\n setPaymentOptionVisibility(true);\n setCustomerDetailsVisibility(true);\n setDeliveryWidgetVisibility(true);\n setPaymentWidgetVisibility(true);\n setOrderSummaryVisibility(true);\n setSignUpCheckboxVisibility(true);\n }, []);\n\n const checkIntegrationTypeExist = useCallback(\n (integrationTypeCheck) => {\n return deliveryMethods.find(\n (method) => method.integrationType === integrationTypeCheck\n );\n },\n [deliveryMethods]\n );\n\n const firstRender = useRef(true);\n\n // Sets default value on first load.\n useEffect(() => {\n if (!firstRender.current) {\n return;\n }\n firstRender.current = false;\n\n if (!checkout) {\n return;\n }\n\n const {\n selectedPaymentMethod,\n selectedDeliveryMethod,\n customerDetails,\n alternativeAddress,\n } = checkout.payload;\n\n // set selected value for payment method on load.\n selectedPaymentMethod && dispatch(setPayment(selectedPaymentMethod));\n // set selected value for delivery method on load.\n selectedDeliveryMethod && dispatch(setDelivery(selectedDeliveryMethod));\n // fill default select value to the state\n setAddressFormValue((previousState) => ({\n ...previousState,\n customerDetails: {\n ...(customerDetails ?? {}),\n country:\n customerDetails?.country ?? constants.countries[0].value,\n },\n alternativeAddress: {\n ...(alternativeAddress ?? {}),\n country:\n alternativeAddress?.country ?? constants.countries[0].value,\n },\n }));\n }, [checkout, dispatch]);\n\n // Show or hide different sections depending on payment and delivery methods.\n useEffect(() => {\n resetVisibilityValues();\n switch (selectedPaymentMethod?.integrationType) {\n case PaymentIntegrationType.IframeCheckout:\n setCustomerDetailsVisibility(false);\n setOrderSummaryVisibility(false);\n break;\n case PaymentIntegrationType.PaymentWidgets:\n if (isEditingAddress) {\n setPaymentWidgetVisibility(false);\n }\n setOrderSummaryVisibility(false);\n setSignUpCheckboxVisibility(false);\n break;\n case PaymentIntegrationType.DirectPayment:\n if (isEditingAddress) {\n setOrderSummaryVisibility(false);\n }\n setPaymentWidgetVisibility(false);\n break;\n }\n if (\n checkIntegrationTypeExist(ShippingIntegrationType.DeliveryCheckout)\n ) {\n return setShippingOptionVisibility(false);\n }\n if (\n checkIntegrationTypeExist(ShippingIntegrationType.PaymentCheckout)\n ) {\n return (\n setShippingOptionVisibility(false) &&\n setDeliveryWidgetVisibility(false)\n );\n }\n if (\n selectedDeliveryMethod?.integrationType ===\n ShippingIntegrationType.Inline\n ) {\n setDeliveryWidgetVisibility(false);\n }\n }, [\n selectedDeliveryMethod,\n selectedPaymentMethod,\n deliveryMethods,\n paymentMethods,\n resetVisibilityValues,\n checkIntegrationTypeExist,\n isEditingAddress,\n ]);\n\n // Update place order button's status when the state of Customer Information form is changed.\n useEffect(() => {\n dispatch(setStatusSubmitButton(false));\n if (isEditingAddress) {\n return;\n }\n validateCustomerInfo(\n addressFormValue,\n checkout.payload.isBusinessCustomer\n )\n .then(() => {\n dispatch(setStatusSubmitButton(true));\n })\n .catch(() => {\n dispatch(setStatusSubmitButton(false));\n });\n }, [\n dispatch,\n isEditingAddress,\n addressFormValue,\n checkout.payload.isBusinessCustomer,\n ]);\n\n // Scroll the the first field that has validation error when saving the form.\n useEffect(() => {\n if (checkout.result && checkout.result.redirectUrl) {\n window.location = checkout.result.redirectUrl;\n return;\n }\n\n if (!checkout.errors) {\n return;\n }\n\n const errorKeys = Object.keys(checkout.errors);\n if (!errorKeys || errorKeys.length < 1) {\n return;\n }\n\n const errorNode = document.querySelector(\n `[data-error-for=\"${errorKeys[0]}\"]`\n );\n if (!errorNode) {\n return;\n }\n\n const inputNode = errorNode.parentElement.querySelector('input');\n if (inputNode) {\n setTimeout(() => inputNode.focus(), 1000);\n inputNode.scrollIntoView({ behavior: 'smooth' });\n } else {\n errorNode.scrollIntoView({ behavior: 'smooth' });\n }\n }, [checkout.result, checkout.errors]);\n\n if (!cart || !cart.orderRows || cart.orderRows.length < 1) {\n return (\n <div className=\"row\">\n <div className=\"small-12\">\n <h2 className=\"checkout__title\">\n {translate(`checkout.cart.empty`)}\n </h2>\n </div>\n </div>\n );\n }\n\n const { payload, errors = {} } = checkout,\n {\n paymentWidget,\n authenticated,\n isBusinessCustomer,\n checkoutMode,\n } = payload;\n const responseString = paymentWidget ? paymentWidget.responseString : null;\n const updateKey = paymentWidget ? paymentWidget._force_update : null;\n return (\n <Fragment>\n <CheckoutCart errors={errors} />\n <CheckoutDiscountCodes />\n\n {shippingOptionVisibility && (\n <CheckoutDeliveryMethods errors={errors} />\n )}\n\n {paymentOptionVisibility && (\n <CheckoutPaymentMethods errors={errors} />\n )}\n\n {customerDetailsVisibility && (\n <CheckoutCustomerInfo\n checkout={checkout}\n addressFormValue={addressFormValue}\n isEditingAddress={isEditingAddress}\n setAddressFormValue={setAddressFormValue}\n setIsEditingAddress={setIsEditingAddress}\n signUpCheckboxVisibility={signUpCheckboxVisibility}\n />\n )}\n\n {paymentWidget && paymentWidgetVisibility && (\n <PaymentWidget\n key={updateKey}\n responseString={responseString}\n />\n )}\n\n {orderSummaryVisibility && (\n <Fragment>\n <div className=\"row\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.order.title')}\n </h3>\n </div>\n\n <section className=\"row checkout-info__container checkout-info__summary\">\n <CheckoutOrderNote />\n <CheckoutOrderInfo />\n </section>\n\n <div className=\"row\">\n <input\n className=\"checkout-info__checkbox-input\"\n type=\"checkbox\"\n id=\"acceptTermsOfCondition\"\n checked={payload.acceptTermsOfCondition}\n onChange={(event) =>\n dispatch(\n acceptTermsOfCondition(event.target.checked)\n )\n }\n />\n <label\n className=\"checkout-info__checkbox-label\"\n htmlFor=\"acceptTermsOfCondition\"\n >\n {translate('checkout.terms.acceptTermsOfCondition')}{' '}\n <a\n className=\"checkout__link\"\n href={payload.termsUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {translate('checkout.terms.link')}\n </a>\n </label>\n {errors['acceptTermsOfCondition'] && (\n <span\n className=\"form__validator--error form__validator--top-narrow\"\n data-error-for=\"acceptTermsOfCondition\"\n >\n {errors['acceptTermsOfCondition'][0]}\n </span>\n )}\n </div>\n\n <div className=\"row checkout__submit\">\n {!authenticated &&\n (isBusinessCustomer ||\n checkoutMode ===\n constants.checkoutMode.companyCustomers) ? (\n <Button\n onClick={() =>\n (location.href = payload.loginUrl)\n }\n title={translate(\n 'checkout.login.to.placeorder'\n )}\n fluid={true}\n />\n ) : (\n <Button\n disabled={!checkout.enableConfirmButton}\n onClick={placeOrder}\n title={translate('checkout.placeorder')}\n fluid={true}\n type=\"submit\"\n />\n )}\n </div>\n </Fragment>\n )}\n\n <div className=\"row\">\n {errors && errors['general'] && (\n <p className=\"checkout__validator--error\">\n {errors['general'][0]}\n </p>\n )}\n {errors && errors['payment'] && (\n <p className=\"checkout__validator--error\">\n {errors['payment'][0]}\n </p>\n )}\n </div>\n </Fragment>\n );\n};\n\nexport default Checkout;\n"],"sourceRoot":""}