{"version":3,"sources":["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":["onClick","title","disabled","type","fluid","rounded","isLink","getClassNames","useCallback","classes","push","join","className","mapCartToAbort","quantityDispatch","debounce","articleNumber","quantity","dispatch","AbortController","update","then","reloadPayment","catch","ex","catchError","error","loadError","useDispatch","removingRow","setRemovingRow","useState","cart","useSelector","state","orderRows","setOrderRows","discountRows","useEffect","removeOrderRow","handleQuantityInput","rowSystemId","ensureCorrectness","console","log","floatQuantity","parseFloat","validValue","isNaN","index","findIndex","item","abort","cancel","tempOrderRows","ProductImage","order","src","image","alt","ProductAvaliability","Fragment","isInStock","deliveryStatusText","ProductName","href","name","ProductQuantity","isFreeGift","campaignPrice","price","readOnly","min","maxLength","value","quantityString","ProductTotalPrice","totalCampaignPrice","totalPrice","RemoveBtn","orderTotal","translate","map","key","errors","cssClass","id","autoComplete","placeholder","onChange","label","htmlFor","event","target","values","idx","getCountry","address","addressCountry","constants","country","text","onSave","onCompanyAddressChange","valueForm","isEditingAddress","payload","checkout","companyAddresses","companyName","authenticated","input","stateKey","toLowerCase","selectedAddress","useMemo","selectedCompanyAddressId","find","systemId","zipCode","city","signUpCheckboxVisibility","signUp","isValidating","customerDetails","alternativeAddress","checked","showAlternativeAddress","setShowAlternativeAddress","setSignUp","privateCustomerAdditionalDetailsSchema","object","shape","acceptTermsOfCondition","boolean","required","oneOf","selectedDeliveryMethod","selectedPaymentMethod","privateCustomerAddressSchema","email","string","phoneNumber","mixed","notOneOf","lastName","firstName","privateCustomerAlternativeAddressSchema","businessCustomerDetailsSchema","businessCustomerAdditionalDetailsSchema","validateAlternativeAddress","validateCustomerInfo","result","isBusinessCustomer","validate","addressPath","addressFormValue","setAddressFormValue","setIsEditingAddress","loginUrl","checkoutMode","onCustomerInfoChange","previousState","companyAddressId","onEditForm","onUpdateCustomerDetails","notCustomerDetailFields","setValidateStatus","clearError","saveCustomerDetail","updateCustomerDetails","setSelectedCompanyAddress","companyAddress","c","setCountry","path","indexOf","submitError","finally","privateCustomerInfoComponent","businessCustomerInfoComponent","setBusinessCustomer","deliveryMethods","length","method","setDelivery","formattedPrice","usedDiscountCodes","discountCodeEl","useRef","current","ref","setDiscountCode","submitDiscountCode","discountCode","deleteDiscountCode","discount","deliveryCost","paymentCost","grandTotal","vat","orderNote","setOrderNote","paymentMethods","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","submit","onSubmitError","submitDone","placeOrder","onError","setStatusSubmitButton","resetVisibilityValues","checkIntegrationTypeExist","integrationTypeCheck","integrationType","firstRender","setPayment","PaymentIntegrationType","ShippingIntegrationType","redirectUrl","window","location","errorKeys","Object","keys","errorNode","querySelector","inputNode","parentElement","setTimeout","focus","scrollIntoView","behavior","paymentWidget","updateKey","_force_update","termsUrl","rel","enableConfirmButton"],"mappings":"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kBACA,kBACA,WACA,uBAEHA,EACG,mBACA,kBACA,SACA,KACA,KACA,OACA,KAEHA,EACG,mBACA,kBACA,UACA,0BAEHA,EACG,kBACA,kBACA,UACA,sBACA,KACA,OACA,IAEHA,EACG,kBACA,kBACA,OACA,yBACA,KACA,OACA,KAEJ,uBAAKnG,UAAU,oBACX,yBACIA,UAAU,cACV+E,QAAQ,YAEPV,OAAU,kCAEf,0BACIrE,UAAU,cACV0E,GAAG,UACHZ,MAAOkD,EAAgBxB,QACvBb,aAAa,UACbE,SAAWG,IACPH,EACI,qBACA,UACAG,EAAMC,OAAOnB,OAEjBe,EACI,kBACA,UACAG,EAAMC,OAAOnB,MAChB,GAGL,0BAAQA,MAAM,GAAGxE,UAAQ,IACpB+E,OACG,8CAGPkB,gBACGA,oBACI,EAAGE,OAAM3B,WACL,0BACIA,MAAOA,EACPS,IAAM,WAAUT,KAEf2B,OAMxBU,EACG,mBACA,kBACA,cACA,cACA,KACA,SAIZ,uBAAKnG,UAAU,6BACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,oBACX,yBACIA,UAAU,gCACVT,KAAK,WACLmF,GAAG,yBACHpB,KAAK,yBACL4D,QACID,EAAmBE,yBACnB,EAEJtC,SAAWG,IACPH,EACI,qBACA,yBACAG,EAAMC,OAAOiC,SAEjB5G,GACI8G,QACIpC,EAAMC,OAAOiC,SAEpB,IAGT,yBACIlH,UAAU,gCACV+E,QAAQ,2BAEPV,OACG,mDAKf4C,EAAmBE,wBAChB,uBAAKnH,UAAU,aACVmG,EACG,kBACA,qBACA,YACA,uBAEHA,EACG,kBACA,qBACA,WACA,wBAEHA,EACG,mBACA,qBACA,SACA,KACA,KACA,OACA,KAEHA,EACG,mBACA,qBACA,UACA,2BAEHA,EACG,kBACA,qBACA,UACA,uBACA,KACA,OACA,IAEHA,EACG,kBACA,qBACA,OACA,0BACA,KACA,OACA,KAEJ,uBAAKnG,UAAU,oBACX,yBACIA,UAAU,cACV+E,QAAQ,aAEPV,OACG,kCAGR,0BACIrE,UAAU,cACV0E,GAAG,WACHZ,MAAOmD,EAAmBzB,QAC1Bb,aAAa,UACb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","file":"685.89f5d484a2f48476e399.js","sourcesContent":["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 console.log('click');\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 console.log(validValue);\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 <div className=\"product\"><img src={order.image} alt=\"\" /> </div>\n );\n }, []);\n\n const ProductAvaliability = useCallback(({ order }) => {\n return (\n <Fragment>\n <div className=\"availability\">\n {order.isInStock ? (<div className=\"availability-icon available\">\n {order.deliveryStatusText}\n </div>) : (\n <div className=\"availability-icon unavailable\">\n {order.deliveryStatusText}\n </div>\n )}\n </div>\n </Fragment>\n );\n }, []);\n\n const ProductName = useCallback(({ order }) => {\n return (\n <Fragment>\n <div className=\"information\">\n <div className=\"name\"><a href=\"#\">{order.name}</a></div>\n </div>\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\n return (\n <Fragment>\n <div className=\"amount\">\n {order.isFreeGift ? (<div>{order.quantity}</div>) :\n <div className=\"number-input\">\n <button onClick={() => handleQuantityInput(\n order.articleNumber,\n order.quantity - 1,\n order.rowSystemId,\n false\n )}></button>\n <input readOnly={true} type=\"number\" className=\"quantity\" min=\"1\" name=\"quantity\" maxLength={3} value={order.quantityString} />\n <button onClick={() => handleQuantityInput(\n order.articleNumber,\n order.quantity + 1,\n order.rowSystemId,\n false\n )} className=\"plus\"></button>\n </div>\n }\n </div>\n </Fragment>\n );\n },\n [handleQuantityInput]\n );\n\n const ProductTotalPrice = ({ order }) => {\n return (\n <Fragment>\n {order.totalCampaignPrice ? (\n <Fragment>\n <div className=\"price\">\n <div className=\"prices\">\n <span className=\"new\">{order.totalCampaignPrice}</span>\n <span className=\"old\">{order.totalPrice}</span>\n </div>\n </div>\n </Fragment>\n ) : (\n <div className=\"price\">\n <div className=\"prices\">\n <span className=\"regular\">{order.totalPrice}</span>\n </div>\n </div>\n )}\n </Fragment>\n );\n };\n\n const RemoveBtn = useCallback(\n ({ order }) => {\n return (\n <Fragment>\n {!order.isFreeGift && !removingRow[order.rowSystemId] && (\n <div className=\"x\" onClick={() =>\n setRemovingRow({\n ...removingRow,\n [order.rowSystemId]: true,\n })\n }>✕</div>\n\n )}\n {!order.isFreeGift && removingRow[order.rowSystemId] && (\n <Fragment>\n <div className=\"x\" onClick={() =>\n removeOrderRow(order.articleNumber)\n }>✓</div>\n <div className=\"y\" onClick={() =>\n setRemovingRow({\n ...removingRow,\n [order.rowSystemId]: false,\n })\n }>✕</div>\n\n </Fragment>\n )}\n </Fragment>\n );\n },\n [removeOrderRow, removingRow]\n );\n\n const CartTotal = useCallback(({ cart }) => {\n return (\n <div className=\"row\">\n <div className=\"product\"></div>\n <div className=\"information\"></div>\n <div className=\"availability\"></div>\n <div className=\"amount\"></div>\n <div className=\"price\">\n <div className='prices'>\n <span className='regular'>{cart.orderTotal}</span>\n </div>\n </div>\n <div className=\"x\"></div>\n <div className=\"y\"></div>\n </div>\n );\n }, []);\n\n return (\n <div className=\"items-listing\">\n\n <div className=\"row header\">\n <div className=\"product\">\n {translate(\"checkout.product\")}\n </div>\n <div className=\"information\">\n {translate(\"checkout.information\")}\n </div>\n <div className=\"availability\">\n {translate(\"checkout.availability\")}\n </div>\n <div className=\"amount\">\n {translate(\"checkout.amount\")}\n </div>\n <div className=\"price\">\n {translate(\"checkout.price\")}\n </div>\n <div className=\"x\"></div>\n <div className=\"y\"></div>\n </div>\n {orderRows.map((order) => (\n <div className=\"row\" key={order.rowSystemId}>\n <ProductImage order={order} />\n <ProductName order={order} />\n <ProductAvaliability order={order} />\n <ProductQuantity order={order} />\n <ProductTotalPrice order={order} />\n <RemoveBtn order={order} />\n </div>\n ))}\n {discountRows.map((order) => (\n <div className=\"row\" key={order.rowSystemId}>\n <div className=\"product\"></div>\n <ProductName order={order} />\n <div className=\"availability\"></div>\n <div className=\"amount\"></div>\n <ProductTotalPrice order={order} />\n <div className=\"x\"></div>\n <div className=\"y\"></div>\n </div>\n ))}\n\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 <section className=\"wide\">\n <div className=\"kassa-holder\">\n <div className=\"header\"> \n <h1>{translate('checkout.title')}</h1>\n </div>\n <Cart />\n <div className=\"row\">\n {errors && errors['cart'] && (\n <p className=\"checkout__validator--error\">\n {errors['cart'][0]}\n </p>\n )}\n </div>\n </div>\n </section>\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 } from 'react';\nimport { useSelector } from 'react-redux';\nimport constants from '../constants';\nimport { translate } from '../Services/translation';\nimport InputField from './InputField';\nimport InfoField from './InfoField';\nimport Button from './Button';\n\nconst getCountry = (address) => {\n const addressCountry = constants.countries\n ? constants.countries.find(\n (country) => country.value === address.country\n )\n : null;\n return addressCountry ? addressCountry.text : address.country;\n};\n\nconst CheckoutBusinessCustomerInfo = ({\n onChange,\n onSave,\n onCompanyAddressChange,\n valueForm,\n isEditingAddress,\n}) => {\n const { payload, errors = {} } = useSelector((state) => state.checkout);\n const { companyAddresses = [], companyName, authenticated } = payload;\n\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) =>\n address.systemId === valueForm.selectedCompanyAddressId\n )\n : null;\n }, [valueForm.selectedCompanyAddressId, companyAddresses]);\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\n className=\"form__label\"\n htmlFor=\"address\"\n >\n {translate('checkout.customerinfo.address')}\n </label>\n\n <select\n className=\"form__input\"\n value={\n valueForm.selectedCompanyAddressId || ''\n }\n disabled={!authenticated}\n onChange={(event) =>\n onCompanyAddressChange(\n event.target.value,\n companyAddresses.find(\n (address) =>\n address.systemId ===\n 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}, ${\n address.zipCode\n }, ${address.city}, ${getCountry(\n address\n )}`}</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 className=\"row-inner\">\n <div className=\"small-12 columns\">\n {companyName}\n </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 </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\n values={[selectedAddress.zipCode, selectedAddress.city]}\n />\n <InfoField values={[getCountry(selectedAddress)]} />\n <InfoField\n values={[valueForm['customerDetails']['phoneNumber']]}\n />\n <InfoField\n values={[valueForm['customerDetails']['email']]}\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\n className=\"form__label\"\n htmlFor=\"country\"\n >\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(\n 'customerDetails',\n 'country',\n event.target.value\n );\n }}\n >\n <option value=\"\" disabled>\n {translate(\n 'checkout.customerinfo.country.placeholder'\n )}\n </option>\n {constants.countries &&\n constants.countries.map(\n ({ text, value }) => (\n <option\n value={value}\n key={`country-${value}`}\n >\n {text}\n </option>\n )\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={\n alternativeAddress.showAlternativeAddress ||\n false\n }\n onChange={(event) => {\n onChange(\n 'alternativeAddress',\n 'showAlternativeAddress',\n event.target.checked\n );\n dispatch(\n setShowAlternativeAddress(\n event.target.checked\n )\n );\n }}\n />\n <label\n className=\"checkout-info__checkbox-label\"\n htmlFor=\"showAlternativeAddress\"\n >\n {translate(\n 'checkout.customerinfo.showAlternativeAddress'\n )}\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\n className=\"form__label\"\n htmlFor=\"country2\"\n >\n {translate(\n 'checkout.customerinfo.country'\n )}\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(\n 'checkout.customerinfo.country.placeholder'\n )}\n </option>\n {constants.countries &&\n constants.countries.map(\n ({ text, value }) => (\n <option\n value={value}\n key={`country2-${value}`}\n >\n {text}\n </option>\n )\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(\n setSignUp(event.target.checked)\n )\n }\n />\n <label\n className=\"checkout-info__checkbox-label\"\n htmlFor=\"signupandlogin\"\n >\n {translate(\n 'checkout.customerinfo.signupandlogin'\n )}\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\n values={[valueForm['customerDetails']['careOf']]}\n />\n )}\n <InfoField\n values={[valueForm['customerDetails']['address']]}\n />\n <InfoField\n values={[\n valueForm['customerDetails']['zipCode'],\n valueForm['customerDetails']['city'],\n ]}\n />\n <InfoField values={[getCountry(customerDetails)]} />\n\n <InfoField\n values={[valueForm['customerDetails']['phoneNumber']]}\n />\n <InfoField\n values={[valueForm['customerDetails']['email']]}\n />\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(\n translate(`validation.required`)\n ),\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 } 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 = (result, isBusinessCustomer) => {\n const {\n customerDetails,\n selectedCompanyAddressId,\n alternativeAddress,\n } = result;\n\n if (isBusinessCustomer) {\n return businessCustomerDetailsSchema.validate({\n ...customerDetails,\n selectedCompanyAddressId,\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\n const onCustomerInfoChange = useCallback(\n (stateKey, id, value) => {\n setAddressFormValue((previousState) => ({\n ...previousState,\n [stateKey]: {\n ...previousState[stateKey],\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 },\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\n const onValid = () => {\n const { payload } = checkout,\n { isBusinessCustomer } = payload;\n const {\n customerDetails,\n selectedCompanyAddressId,\n alternativeAddress,\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 dispatch(setCountry(companyAddress.country));\n } else {\n dispatch(\n updateCustomerDetails(\n 'alternativeAddress',\n alternativeAddress\n )\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'}-${\n error.path\n }`;\n dispatch(submitError(error));\n };\n\n dispatch(setValidateStatus(true));\n dispatch(clearError());\n\n validateCustomerInfo(addressFormValue, isBusinessCustomer)\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 ]);\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 />\n );\n }, [\n addressFormValue,\n isEditingAddress,\n onCompanyAddressChange,\n onCustomerInfoChange,\n onUpdateCustomerDetails,\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(\n 'checkout.customerinfo.existingcustomer'\n )}\n </label>\n \n <a href={loginUrl} className=\"checkout__link\">\n {translate(\n 'checkout.customerinfo.clicktologin'\n )}\n </a>\n \n {!isBusinessCustomer &&\n checkoutMode ===\n constants.checkoutMode.both && (\n <a\n onClick={() =>\n dispatch(\n setBusinessCustomer(true)\n )\n }\n className=\"checkout__link\"\n >\n {translate(\n 'checkout.customerinfo.businesscustomer'\n )}\n </a>\n )}\n {isBusinessCustomer &&\n checkoutMode ===\n constants.checkoutMode.both && (\n <a\n onClick={() =>\n dispatch(\n setBusinessCustomer(false)\n )\n }\n className=\"checkout__link\"\n >\n {translate(\n 'checkout.customerinfo.privatecustomer'\n )}\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 <section>\n <div className=\"row margin-top-cart-item\">\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 </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 {/* <div className=\"row\">\n <h3 className=\"checkout__section-title\">\n {translate('checkout.payment.title')}\n </h3>\n </div>\n {paymentMethods && paymentMethods.length > 0 && (\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={\n method.id === selectedPaymentMethod.id\n }\n onChange={() =>\n dispatch(setPayment(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['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';\n\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 <section className='wide'>\n <section className=\"row checkout-info__container checkout-info__summary\">\n <CheckoutOrderNote />\n <CheckoutOrderInfo />\n </section>\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":""}