{"version":3,"sources":["webpack:///./Scripts/Components/Cart.js","webpack:///./Scripts/Components/CountryPicker.js","webpack:///./Scripts/Components/Checkout.PrivateCustomerInfo.js","webpack:///./Scripts/Components/Checkout.BusinessCustomerInfo.js","webpack:///./Scripts/Components/Checkout.DeliveryMethods.js","webpack:///./Scripts/Components/Checkout.PaymentMethods.js","webpack:///./Scripts/Components/Checkout.OrderInfo.js","webpack:///./Scripts/AdyenDropin/AdyenDropinWidget.js","webpack:///./Scripts/Components/Payments/PaymentWidget.js","webpack:///./Scripts/Services/Ingrid.service.js","webpack:///./Scripts/Components/IngridDeliveryCheckoutWidget.js","webpack:///./Scripts/Containers/Checkout.container.js"],"names":["ProductImage","url","image","name","className","href","src","alt","GiftWrappingInfo","articleNumber","setGiftWrappingInfo","initialValue","useState","giftWrapText","setGiftWrapText","translate","value","onChange","event","target","onBlur","result","ProductName","content","title","ProductPrice","campaignPrice","price","totalPrice","ProductQuantity","isFreeGift","quantity","rowSystemId","updateOrderRowQuantity","QuantityChanger","updateQuantity","updatedQuantity","ProductRemove","removingRow","onDeleteRequest","removeOrderRow","onClick","ProductTotal","ProductInfoContainer","children","ProductCartRow","subRow","GiftWrapping","addToCart","orderRow","id","type","checked","noMiniCartUpdate","htmlFor","translateWithFallback","Cart","props","state","editingQuantity","showDeleteButton","this","setState","previousState","giftWrapping","orderRows","hasGiftWrappingRow","giftWrappingOrderRow","find","row","map","key","comments","bind","Component","CountryOption","data","label","imgSrc","Option","style","height","marginLeft","CountryPicker","customerDetails","labelName","length","components","SingleValue","options","Object","values","uniqueCountryLangPairs","defaultValue","country","setCookie","window","__litium","geoLocationData","cookieName","put","location","isSearchable","styles","container","provided","marginBottom","control","borderRadius","border","borderColor","boxShadow","option","margin","padding","indicatorContainer","color","menu","top","CheckoutPrivateCustomerInfo","signUp","authenticated","onSignUpChange","isGiftWrappingEnabled","errors","input","cssClass","stateKey","autoComplete","placeholder","toLowerCase","data-error-for","deliveryToCountryWithSpecialChars","some","c","CheckoutBusinessCustomerInfo","companyAddresses","companyName","selectedCompanyAddressId","setSelectedCompanyAddress","disabled","selectedAddress","address","systemId","getCountry","addressCountry","constants","countryLanguagePairs","attributes","alpha2","text","split","zipCode","city","CheckoutDeliveryMethods","deliveryMethods","selectedId","method","displayName","description","formattedPrice","CheckoutPaymentMethods","paymentMethods","CheckoutOrderInfo","cart","orderTotal","deliveryCostValue","deliveryCost","paymentCostValue","paymentCost","discountValue","discount","grandTotal","vat","AdyenDropinWidget","paymentContainer","React","createRef","paymentComponent","onSubmit","onAdditionalDetails","onError","dropinConfig","JSON","parse","responseString","configuration","paymentMethodsResponse","originKey","locale","environment","paymentMethodsConfiguration","card","hasHolderName","holderNameRequired","showPayButton","setWidgetConfig","prevProps","checkout","adyen","isSubmitting","submit","config","refreshComponent","AdyenCheckout","unmount","create","mount","current","details","handleAction","dropin","payload","reCaptchaSiteKey","trim","grecaptcha","ready","execute","action","then","token","post","response","json","success","isValid","catch","ex","error","submitted","ref","connect","dispatch","adyenSubmitted","submitDone","additionalDetails","scriptPattern","scriptFilePattern","PaymentWidget","renderWidget","paymentSession","WidgetCheckout","DynamicComponent","loader","args","extractScripts","executeScript","includeScript","domString","matches","html","scripts","scriptFiles","exec","replace","push","domId","scriptContent","script","document","createElement","appendChild","createTextNode","e","getElementById","srciptUrl","PureComponent","getSession","get","updateSession","status","undefined","replaceScriptNode","node","tagName","isScriptNode","isExternalScript","parentNode","replaceChild","innerHTML","i","setAttribute","cloneScriptNode","childNodes","IngridDeliveryCheckoutWidget","updateDependencies","onCustomerDetailsChange","ingridWidgetLoaded","setIngridWidgetLoaded","htmlSnippet","setHtmlSnippet","previousUpdateDeps","setPreviousUpdateDeps","wrapperRef","useRef","useDispatch","useEffect","initIngrid","session","handleApiError","anyDepsHasChanged","idx","isEqual","updateIngridSession","onShippingMethodChanged","_sw","api","suspend","res","console","log","loadCart","resume","useCallback","debounce","ingridSession","onDeliveryAddressChanged","customerData","deliveryAddress","delivery_address","street","street_number","filter","s","join","first_name","last_name","postal_code","phone_number","email","err","errorMessage","message","querySelector","on","meta","price_changed","shipping_method_changed","pickup_location_changed","external_method_id_changed","delivery_address_changed","dangerouslySetInnerHTML","__html","privateCustomerAdditionalDetailsSchema","object","shape","acceptTermsOfCondition","boolean","required","oneOf","selectedDeliveryMethod","string","privateCustomerAddressSchema","phoneNumber","mixed","notOneOf","lastName","firstName","privateCustomerAlternativeAddressSchema","businessCustomerDetailsSchema","CheckoutContainer","showVoucherField","ingridError","selectedPaymentMethod","setPayment","alternativeAddress","currentCountryAlpha2","isBusinessCustomer","notCustomerDetailFields","addressPath","path","indexOf","submitError","submitRequest","validate","checkAltAddress","showAlternativeAddress","checkoutMode","isNewsLetterSubscriber","paymentWidget","subscribeToNewsLetter","ingridDeliveryCheckoutId","ingridIsSelectedDeliveryMethod","isChangeable","renderCartSection","renderCampaignCodeSection","displayCustomerDetails","renderCustomerDetailsSection","displayDeliveryMethods","renderDeliveryMethodsSection","renderIngridDeliveryCheckout","renderPaymentMethodsSection","termsUrl","verify","companyCustomers","placeOrder","loginUrl","redirectUrl","errorKeys","keys","errorNode","inputNode","parentElement","setTimeout","focus","scrollIntoView","behavior","block","toggleVoucherCodeField","setCampaignCode","submitCampaignCode","privateCustomerInfoComponent","businessCustomerInfoComponent","both","setBusinessCustomer","setIngridError","setDelivery","onCampaignCodeChange","onSubmitCampaignCode","code","setCountry","setOrderNote","note","setGiftWrapping","setAlternativeAddress","accept","subscribe","additionalInfo","artNo","callback","orderId","setSignUp","toggleTemporaryDeliveryAddress","useTemporaryDeliveryAddress","companyAddressId","propName","setCustomerDetails","params","cartActions","reloadPayment","rowId"],"mappings":"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","file":"5.1f3d298e6c69af78cd14.js","sourcesContent":["import React, { Component, Fragment, useState } from 'react'\r\nimport QuantityChanger from '../Components/QuantityChanger'\r\nimport { translate, translateWithFallback } from '../Services/translation'\r\n\r\nfunction ProductImage({ url, image, name }) {\r\n return (\r\n <div className=\"checkout-cart__image-container\">\r\n <a href={url}>\r\n <img className=\"checkout-cart__image\" src={image} alt={name} />\r\n </a>\r\n </div>\r\n )\r\n}\r\n\r\nfunction GiftWrappingInfo({ articleNumber, setGiftWrappingInfo, initialValue = '' }) {\r\n const [giftWrapText, setGiftWrapText] = useState(initialValue);\r\n\r\n const addGiftWrappingInfo = (value) => {\r\n setGiftWrappingInfo(value, articleNumber, (result) => {\r\n setGiftWrapText(result);\r\n });\r\n }\r\n\r\n return (\r\n <div className=\"checkout-cart__product-giftwrappinginfo\">\r\n <h5>{translate('checkout.cart.giftwrappinginfo')}</h5>\r\n <textarea className=\"checkout-cart__product-giftwrappinginfo--textarea\" value={giftWrapText} onChange={(event) => setGiftWrapText(event.target.value)}\r\n onBlur={async (event) => addGiftWrappingInfo(event.target.value)} />\r\n <h6>{translate('checkout.cart.giftwrappingmaxchars')}</h6>\r\n </div>\r\n )\r\n}\r\n\r\nfunction ProductName({ url, name }) {\r\n const content = (\r\n <div className=\"checkout-cart__product-name\" title={name}>\r\n {name}\r\n </div>\r\n )\r\n\r\n return (\r\n <div className=\"checkout-cart__product-name-container\">\r\n {url ? <a href={url}>{content}</a> : content}\r\n </div>\r\n )\r\n}\r\n\r\nfunction ProductPrice({ campaignPrice, price, totalPrice }) {\r\n return (\r\n <div className=\"checkout-cart__product-price-container\">\r\n <div className=\"checkout-cart__product-price\">\r\n {campaignPrice && (\r\n <Fragment>\r\n <div className=\"checkout-cart__product-price--campaign\">\r\n {campaignPrice}\r\n </div>\r\n <div className=\"checkout-cart__product-price--old\">\r\n {price}\r\n </div>\r\n </Fragment>\r\n )}\r\n {!campaignPrice && price}\r\n </div>\r\n <div className=\"checkout-cart__product-price checkout-cart__product-price--total\">\r\n {totalPrice}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nfunction ProductQuantity({\r\n isFreeGift,\r\n quantity,\r\n rowSystemId,\r\n updateOrderRowQuantity,\r\n}) {\r\n return (\r\n <div className=\"checkout-cart__product-quantity-container\">\r\n {isFreeGift ? (\r\n <div>{quantity}</div>\r\n ) : (\r\n <QuantityChanger\r\n {...{\r\n quantity,\r\n updateQuantity: (updatedQuantity) =>\r\n updateOrderRowQuantity(\r\n rowSystemId,\r\n updatedQuantity\r\n ),\r\n rowSystemId,\r\n }}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nfunction ProductRemove({\r\n isFreeGift,\r\n rowSystemId,\r\n removingRow,\r\n onDeleteRequest,\r\n removeOrderRow,\r\n}) {\r\n return (\r\n <div className=\"checkout-cart__product-remove-container\">\r\n {!isFreeGift &&\r\n (!removingRow[rowSystemId] ? (\r\n <a\r\n className=\"table__icon icon-bin\"\r\n onClick={() => onDeleteRequest(rowSystemId, true)}\r\n title={translate('general.remove')}\r\n ></a>\r\n ) : (\r\n <Fragment>\r\n <a\r\n className=\"table__icon icon-check\"\r\n onClick={() => removeOrderRow(rowSystemId)}\r\n title={translate('general.ok')}\r\n ></a>\r\n <a\r\n className=\"table__icon icon-wrong\"\r\n onClick={() => onDeleteRequest(rowSystemId, false)}\r\n title={translate('general.cancel')}\r\n ></a>\r\n </Fragment>\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nfunction ProductTotal({ campaignPrice, totalPrice }) {\r\n return (\r\n <div className=\"checkout-cart__product-total-price-container\">\r\n <div className=\"checkout-cart__product-price\">\r\n {campaignPrice && (\r\n <div className=\"checkout-cart__product-price--campaign\">\r\n {totalPrice}\r\n </div>\r\n )}\r\n {!campaignPrice && totalPrice}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nfunction ProductInfoContainer({ children }) {\r\n return (\r\n <div className=\"checkout-cart__product-info-container\">\r\n {children}\r\n <div className=\"checkout-cart__break-row\"></div>\r\n </div>\r\n )\r\n}\r\n\r\nfunction ProductCartRow({ children, subRow = null }) {\r\n return (\r\n <>\r\n <div className=\"checkout-cart__row\">{children}</div>\r\n {subRow}\r\n <hr />\r\n </>\r\n )\r\n}\r\n\r\nfunction GiftWrapping({ addToCart, removeOrderRow, orderRow, id, name }) {\r\n const onChange = (event) => {\r\n if (event.target.checked) {\r\n addToCart({\r\n articleNumber: id,\r\n quantity: 1,\r\n noMiniCartUpdate: true,\r\n })\r\n } else if (orderRow) {\r\n removeOrderRow(orderRow.rowSystemId)\r\n }\r\n }\r\n return (\r\n <ProductCartRow>\r\n <input\r\n className=\"checkout__checkbox-input\"\r\n type=\"checkbox\"\r\n id=\"giftWrapping\"\r\n checked={orderRow != null}\r\n onChange={onChange}\r\n />\r\n <label className=\"checkout__checkbox-label\" htmlFor=\"giftWrapping\">\r\n {translateWithFallback('checkout.giftwrapping', name)}\r\n </label>\r\n </ProductCartRow>\r\n )\r\n}\r\n\r\nclass Cart extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n editingQuantity: {},\r\n removingRow: {},\r\n }\r\n }\r\n\r\n onDeleteRequest(rowSystemId, showDeleteButton) {\r\n this.setState((previousState) => ({\r\n ...previousState,\r\n removingRow: {\r\n ...previousState.removingRow,\r\n [rowSystemId]: showDeleteButton,\r\n },\r\n }))\r\n }\r\n\r\n render() {\r\n const { removingRow } = this.state\r\n const {\r\n addToCart,\r\n giftWrapping,\r\n updateOrderRowQuantity,\r\n removeOrderRow,\r\n orderRows,\r\n setGiftWrappingInfo,\r\n hasGiftWrappingRow,\r\n } = this.props\r\n\r\n const giftWrappingOrderRow =\r\n giftWrapping &&\r\n orderRows.find((row) => row.articleNumber === giftWrapping.id)\r\n\r\n return (\r\n <div className=\"checkout__section\">\r\n {orderRows.map((row) => (<>\r\n <ProductCartRow key={row.rowSystemId} subRow={giftWrappingOrderRow && giftWrappingOrderRow.articleNumber == row.articleNumber ? <GiftWrappingInfo articleNumber={row.articleNumber} setGiftWrappingInfo={setGiftWrappingInfo} initialValue={row.comments}/> : null}>\r\n <ProductImage {...row} />\r\n <ProductInfoContainer> \r\n <ProductName {...row} />\r\n <ProductPrice {...row} />\r\n <ProductQuantity\r\n {...row}\r\n updateOrderRowQuantity={updateOrderRowQuantity}\r\n />\r\n <ProductRemove\r\n {...row}\r\n removingRow={removingRow}\r\n onDeleteRequest={this.onDeleteRequest.bind(\r\n this\r\n )}\r\n removeOrderRow={removeOrderRow}\r\n />\r\n <ProductTotal {...row} />\r\n </ProductInfoContainer>\r\n </ProductCartRow>\r\n </>\r\n ))}\r\n {giftWrapping && (!hasGiftWrappingRow || giftWrappingOrderRow == null) && (\r\n <GiftWrapping\r\n {...giftWrapping}\r\n orderRow={giftWrappingOrderRow}\r\n addToCart={addToCart}\r\n removeOrderRow={removeOrderRow}\r\n />\r\n )}\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Cart\r\n","import React from \"react\";\r\nimport { translate } from \"../Services/translation\";\r\nimport { put } from \"../Services/http\";\r\nimport { setCookie } from \"../Services/cookieService\";\r\nimport Select, { components } from 'react-select';\r\nimport { uniqueCountryLangPairs } from \"../constants\";\r\n\r\nfunction CountryOption({ data, ...props }) {\r\n const { label, value, imgSrc } = data\r\n return (\r\n <components.Option {...props}>\r\n <img src={imgSrc} style={{ height: '26px' }} />\r\n <span style={{ marginLeft: '10px' }}>{label}</span>\r\n </components.Option>\r\n )\r\n}\r\n\r\nconst CountryPicker = (props) => {\r\n const { customerDetails = {}, labelName } = props;\r\n \r\n return (<>\r\n {labelName.length > 0 && <label className=\"form__label\" htmlFor=\"country\">\r\n {translate(labelName)}\r\n </label>}\r\n <Select\r\n components={{ Option: CountryOption, SingleValue: CountryOption,}}\r\n options={Object.values(uniqueCountryLangPairs)}\r\n defaultValue={uniqueCountryLangPairs[customerDetails.country]}\r\n onChange={async ({ value }) => {\r\n setCookie(\r\n window.__litium.geoLocationData\r\n .cookieName,\r\n value\r\n )\r\n await put(\r\n `/api/navigation/setCountry/${value}`\r\n )\r\n window.location =\r\n uniqueCountryLangPairs[value].href\r\n }}\r\n isSearchable={false}\r\n styles={{\r\n container: (provided) => ({...provided,marginBottom: '24px',}),\r\n control: (provided) => ({...provided,borderRadius: 0,\r\n ':hover': {\r\n border: '1px solid black',\r\n },\r\n ':focus': {\r\n border: '1px solid black',\r\n },\r\n ':active': {\r\n border: '1px solid black',\r\n },\r\n borderColor: 'rgb(199, 199, 199)',\r\n boxShadow: 'none',\r\n }),\r\n option: (provided) => ({...provided,\r\n margin: '8px 0px -6px 7px',\r\n padding: '4px 2px 0px 3px',\r\n }),\r\n indicatorContainer: (provided) => ({...provided,\r\n color: 'rgb(199, 199, 199)',\r\n }),\r\n menu: (provided) => ({...provided,\r\n borderRadius: 0,\r\n top: '90%',\r\n }),\r\n }}\r\n />\r\n </>)\r\n};\r\n\r\nexport default CountryPicker;","import React from 'react'\r\nimport { uniqueCountryLangPairs } from '../constants'\r\nimport { translate } from '../Services/translation'\r\nimport { put } from '../Services/http'\r\nimport Select, { components } from 'react-select'\r\nimport { setCookie } from '../Services/cookieService'\r\nimport CountryPicker from './CountryPicker'\r\n\r\nfunction CountryOption({ data, ...props }) {\r\n const { label, value, imgSrc } = data\r\n return (\r\n <components.Option {...props}>\r\n <img src={imgSrc} style={{ height: '26px' }} />\r\n <span style={{ marginLeft: '10px' }}>{label}</span>\r\n </components.Option>\r\n )\r\n}\r\n\r\nconst CheckoutPrivateCustomerInfo = (props) => {\r\n const {\r\n customerDetails = {},\r\n signUp,\r\n authenticated,\r\n onChange,\r\n onSignUpChange,\r\n isGiftWrappingEnabled,\r\n errors = {},\r\n } = props\r\n const input = (\r\n cssClass,\r\n stateKey,\r\n id,\r\n autoComplete = 'on',\r\n placeholder = null,\r\n type = 'text'\r\n ) => (\r\n <div className={cssClass}>\r\n <label className=\"form__label\" htmlFor={`${stateKey}-${id}`}>\r\n {translate(`checkout.customerinfo.${id.toLowerCase()}`)}​\r\n </label>\r\n <input\r\n className=\"form__input\"\r\n id={`${stateKey}-${id}`}\r\n name={`${stateKey}-${id}`}\r\n type={type}\r\n value={(props[stateKey] || {})[id] || ''}\r\n placeholder={placeholder}\r\n autoComplete={autoComplete}\r\n onChange={(event) => onChange(stateKey, id, event.target.value)}\r\n />\r\n {errors[`${stateKey}-${id}`] && (\r\n <span\r\n className=\"form__validator--error form__validator--top-narrow\"\r\n data-error-for={`${stateKey}-${id}`}\r\n >\r\n {errors[`${stateKey}-${id}`][0]}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n\r\n const deliveryToCountryWithSpecialChars = [\r\n 'AZ',\r\n 'BY',\r\n 'CN',\r\n 'GR',\r\n 'HK',\r\n 'IN',\r\n 'ID',\r\n 'IL',\r\n 'JP',\r\n 'KZ',\r\n 'MY',\r\n 'RU',\r\n 'KR',\r\n 'TW',\r\n 'TH',\r\n 'UA',\r\n 'AE',\r\n ].some((c) => c === customerDetails.country)\r\n\r\n return (\r\n <div className=\"checkout__section\">\r\n <div className=\"small-12 checkout-customer__information\">\r\n {deliveryToCountryWithSpecialChars && (\r\n <div className=\"small-12 checkout-customer__information--input-info\">\r\n <i className=\"fa fa-info\"></i>\r\n {translate('checkout.customerinfo.input.info')}\r\n </div>\r\n )}\r\n <div className=\"small-12 medium-6\">\r\n <div className=\"row-inner\">\r\n {input('small-6 columns','customerDetails','firstName','billing given-name')}\r\n {input('small-6 columns','customerDetails','lastName','billing family-name')}\r\n {input('small-12 columns','customerDetails','address','billing street-address')}\r\n {input('small-12 columns', 'customerDetails', 'careOf')}\r\n {input('small-6 columns','customerDetails','zipCode','billing postal-code')}\r\n {input('small-6 columns','customerDetails','city','billing address-level2')}\r\n <div className='small-12 columns'>{<CountryPicker customerDetails={customerDetails} labelName=\"checkout.customerinfo.country\" />}</div>\r\n {input('small-12 columns','customerDetails','phoneNumber','billing tel')}\r\n {input('small-12 columns','customerDetails','email','email')}\r\n </div>\r\n </div>\r\n {deliveryToCountryWithSpecialChars && (\r\n <div className=\"small-12 checkout-customer__information--input-info\">\r\n <i className=\"fa fa-info\"></i>\r\n {translate('checkout.customerinfo.input.info')}\r\n </div>\r\n )}\r\n </div>\r\n \r\n {isGiftWrappingEnabled && (<>\r\n <h3>{translate('checkout.otherdelivery.customerinfo.title')}</h3>\r\n <div className=\"small-12 checkout-customer__alternative-address\">\r\n <div className=\"small-12 medium-6\">\r\n <div className=\"row-inner\">\r\n {input('small-6 columns', 'alternativeAddress', 'firstName', 'shipping given-name')}\r\n {input('small-6 columns', 'alternativeAddress', 'lastName', 'shipping family-name')}\r\n {input('small-12 columns', 'alternativeAddress', 'address', 'shipping street-address')}\r\n {input('small-12 columns', 'alternativeAddress', 'careOf')}\r\n {input('small-6 columns', 'alternativeAddress', 'zipCode', 'shipping postal-code')}\r\n {input('small-6 columns', 'alternativeAddress', 'city', 'shipping address-level2')}\r\n <div className=\"small-12 columns\">\r\n <label className=\"form__label\" htmlFor=\"country2\">{translate('checkout.customerinfo.country')}</label>\r\n <Select\r\n components={{ Option: CountryOption, SingleValue: CountryOption,}}\r\n options={Object.values(uniqueCountryLangPairs)}\r\n defaultValue={uniqueCountryLangPairs[customerDetails.country]}\r\n onChange={(event) => onChange('alternativeAddress', 'country', event.value)}\r\n isSearchable={false}\r\n styles={{container: (provided) => ({...provided,marginBottom: '24px',}),\r\n control: (provided) => ({...provided,borderRadius: 0,\r\n ':hover': {\r\n border: '1px solid black',\r\n },\r\n ':focus': {\r\n border: '1px solid black',\r\n },\r\n ':active': {\r\n border: '1px solid black',\r\n },\r\n borderColor: 'rgb(199, 199, 199)',\r\n boxShadow: 'none',\r\n }),\r\n option: (provided) => ({...provided,\r\n margin: '8px 0px -6px 7px',\r\n padding: '4px 2px 0px 3px',\r\n }),\r\n indicatorContainer: (provided) => ({...provided,\r\n color: 'rgb(199, 199, 199)',\r\n }),\r\n menu: (provided) => ({...provided,\r\n borderRadius: 0,\r\n top: '90%',\r\n }),\r\n }}\r\n />\r\n </div>\r\n {input('small-12 columns', 'alternativeAddress', 'phoneNumber', 'shipping tel')}\r\n {input('small-12 columns','alternativeAddress','email','email')}\r\n </div>\r\n </div>\r\n </div></>\r\n )}\r\n\r\n {!authenticated && (\r\n <div className=\"small-12\">\r\n <div className=\"row-inner\">\r\n <div className=\"small-12 columns\">\r\n <input\r\n className=\"checkout__checkbox-input\"\r\n type=\"checkbox\"\r\n id=\"signupandlogin\"\r\n checked={signUp}\r\n onChange={(event) => onSignUpChange(event.target.checked)}\r\n />\r\n <label className=\"checkout__checkbox-label\"htmlFor=\"signupandlogin\">\r\n {translate('checkout.customerinfo.signupandlogin')}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default CheckoutPrivateCustomerInfo\r\n","import React from 'react'\r\nimport { translate } from '../Services/translation'\r\nimport constants from '../constants'\r\n\r\nconst CheckoutBusinessCustomerInfo = (props) => {\r\n const {\r\n companyAddresses = [],\r\n companyName,\r\n authenticated,\r\n selectedCompanyAddressId,\r\n onChange,\r\n setSelectedCompanyAddress,\r\n errors = {},\r\n } = props\r\n const input = (\r\n cssClass,\r\n stateKey,\r\n id,\r\n autoComplete = null,\r\n placeholder = null,\r\n type = 'text'\r\n ) => (\r\n <div className={cssClass}>\r\n <label className=\"form__label\" htmlFor={`${stateKey}-${id}`}>\r\n {translate(`checkout.customerinfo.${id.toLowerCase()}`)}​\r\n </label>\r\n <input\r\n className=\"form__input\"\r\n disabled={!authenticated}\r\n id={`${stateKey}-${id}`}\r\n name={`${stateKey}-${id}`}\r\n type={type}\r\n value={(props[stateKey] || {})[id] || ''}\r\n placeholder={placeholder}\r\n autoComplete={autoComplete}\r\n onChange={(event) => onChange(stateKey, id, event.target.value)}\r\n />\r\n {errors[`${stateKey}-${id}`] && (\r\n <span\r\n className=\"form__validator--error form__validator--top-narrow\"\r\n data-error-for={`${stateKey}-${id}`}\r\n >\r\n {errors[`${stateKey}-${id}`][0]}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n const selectedAddress =\r\n selectedCompanyAddressId && companyAddresses\r\n ? companyAddresses.find(\r\n (address) => address.systemId === selectedCompanyAddressId\r\n )\r\n : null\r\n const getCountry = (address) => {\r\n const addressCountry = constants.countryLanguagePairs\r\n ? constants.countryLanguagePairs.find(\r\n (country) => country.attributes.alpha2 === address.country\r\n )\r\n : null\r\n return addressCountry\r\n ? addressCountry.text.split(' (')[0]\r\n : address.country\r\n }\r\n return (\r\n <div className=\"checkout__section\">\r\n <div className=\"small-12 medium-6\">\r\n <div className=\"row-inner\">\r\n <div className=\"small-12 columns\">\r\n <h5>{translate('checkout.customerinfo.reference')}</h5>\r\n </div>\r\n </div>\r\n <div className=\"row-inner\">\r\n {input(\r\n 'small-6 columns',\r\n 'customerDetails',\r\n 'firstName',\r\n 'billing given-name'\r\n )}\r\n {input(\r\n 'small-6 columns',\r\n 'customerDetails',\r\n 'lastName',\r\n 'billing family-name'\r\n )}\r\n </div>\r\n <div className=\"row-inner\">\r\n {input(\r\n 'small-12 columns',\r\n 'customerDetails',\r\n 'phoneNumber',\r\n 'billing tel'\r\n )}\r\n </div>\r\n <div className=\"row-inner\">\r\n {input(\r\n 'small-12 columns',\r\n 'customerDetails',\r\n 'email',\r\n 'email'\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"small-12 medium-6\">\r\n <div className=\"row-inner\">\r\n <div className=\"small-12 columns\">\r\n <label className=\"form__label\" htmlFor=\"address\">\r\n {translate('checkout.customerinfo.address')}\r\n </label>\r\n <select\r\n className=\"form__input\"\r\n value={selectedCompanyAddressId || ''}\r\n disabled={!authenticated}\r\n onChange={(event) =>\r\n setSelectedCompanyAddress(\r\n event.target.value,\r\n companyAddresses.find(\r\n (address) =>\r\n address.systemId ===\r\n event.target.value\r\n ).country\r\n )\r\n }\r\n >\r\n <option value=\"\" disabled>\r\n {translate(\r\n 'checkout.customerinfo.companyaddress.placeholder'\r\n )}\r\n </option>\r\n {companyAddresses &&\r\n companyAddresses.map((address) => (\r\n <option\r\n value={address.systemId}\r\n key={`companyAddress-${address.systemId}`}\r\n >{`${address.address}, ${\r\n address.zipCode\r\n }, ${address.city}, ${getCountry(\r\n address\r\n )}`}</option>\r\n ))}\r\n </select>\r\n {errors['selectedCompanyAddressId'] && (\r\n <span\r\n className=\"form__validator--error form__validator--top-narrow\"\r\n data-error-for=\"selectedCompanyAddressId\"\r\n >\r\n {errors['selectedCompanyAddressId'][0]}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n {selectedAddress && (\r\n <div className=\"row-inner\">\r\n <div className=\"small-12 columns\">{companyName}</div>\r\n <div className=\"small-12 columns\">\r\n {selectedAddress.address}\r\n </div>\r\n <div className=\"small-12 columns\">\r\n <span>{selectedAddress.zipCode}</span> \r\n <span>{selectedAddress.city}</span>\r\n </div>\r\n <div className=\"small-12 columns\">\r\n {getCountry(selectedAddress)}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CheckoutBusinessCustomerInfo\r\n","import React, { Fragment } from 'react'\r\n\r\nconst CheckoutDeliveryMethods = ({ deliveryMethods, selectedId, onChange }) => (\r\n <Fragment>\r\n <section className=\"checkout__section\">\r\n <div className=\"small-12\">\r\n {deliveryMethods &&\r\n deliveryMethods.map((method) => (\r\n <label\r\n className=\"checkout__radio-input\"\r\n key={method.id}\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"deliveryMethods\"\r\n className=\"checkout__radio-input--input\"\r\n value={method.id}\r\n checked={method.id === selectedId}\r\n onChange={() => onChange(method.id)}\r\n />\r\n <div className=\"checkout__radio-input--text\">\r\n <div className=\"checkout__radio-input--name\">\r\n {method.displayName}\r\n <div className=\"checkout__radio-input--decription\">\r\n {method.description}\r\n </div>\r\n </div>\r\n <div className=\"checkout__radio-input--price\">\r\n {method.formattedPrice}\r\n </div>\r\n </div>\r\n </label>\r\n ))}\r\n </div>\r\n </section>\r\n <hr />\r\n </Fragment>\r\n)\r\n\r\nexport default CheckoutDeliveryMethods\r\n","import React, { Fragment } from 'react'\r\nimport { translate } from '../Services/translation'\r\n\r\nconst CheckoutPaymentMethods = ({ paymentMethods, selectedId, onChange }) => (\r\n <Fragment>\r\n <section className=\"checkout__section\">\r\n <div className=\"small-12\">\r\n {paymentMethods &&\r\n paymentMethods.map((method) => (\r\n <label\r\n className=\"checkout__radio-input\"\r\n key={method.id}\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"paymentMethods\"\r\n className=\"checkout__radio-input--input\"\r\n value={method.id}\r\n checked={method.id === selectedId}\r\n onChange={() => onChange(method.id)}\r\n />\r\n <div className=\"checkout__radio-input--text\">\r\n <div className=\"checkout__radio-input--name\">\r\n {method.displayName}\r\n <div className=\"checkout__radio-input--decription\">\r\n {method.description}\r\n </div>\r\n </div>\r\n <div className=\"checkout__radio-input--price\">\r\n {method.formattedPrice}\r\n </div>\r\n </div>\r\n </label>\r\n ))}\r\n </div>\r\n </section>\r\n <hr />\r\n </Fragment>\r\n)\r\n\r\nexport default CheckoutPaymentMethods\r\n","import React from 'react'\r\nimport { translate } from '../Services/translation'\r\n\r\nconst CheckoutOrderInfo = ({ cart }) => (\r\n <div className=\"checkout-order-summary\">\r\n <h3>{translate('checkout.order.summary')}</h3>\r\n <div>\r\n {cart.orderRows &&\r\n cart.orderRows.map((row) => (\r\n <div\r\n className=\"checkout-order-summary__row\"\r\n key={row.rowSystemId}\r\n >\r\n <div\r\n className=\"checkout-order-summary__row--name\"\r\n title={`${row.name}${\r\n row.quantity > 1 ? ` x ${row.quantity}` : ''\r\n }`}\r\n >\r\n {row.name}\r\n {row.quantity > 1 && ` x ${row.quantity}`}\r\n </div>\r\n <div className=\"checkout-order-summary__row--price\">\r\n {row.totalPrice}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n <hr />\r\n <div>\r\n <div className=\"checkout-order-summary__row\">\r\n <div className=\"checkout-order-summary__row--name\">\r\n {translate('checkout.order.total')}\r\n </div>\r\n <div className=\"checkout-order-summary__row--price\">\r\n {cart.orderTotal}\r\n </div>\r\n </div>\r\n {cart.deliveryCostValue != 0 && (\r\n <div className=\"checkout-order-summary__row\">\r\n <div className=\"checkout-order-summary__row--name\">\r\n {translate('checkout.order.deliverycost')}\r\n </div>\r\n <div className=\"checkout-order-summary__row--price\">\r\n {cart.deliveryCost}\r\n </div>\r\n </div>\r\n )}\r\n {cart.paymentCostValue != 0 && (\r\n <div className=\"checkout-order-summary__row\">\r\n <div className=\"checkout-order-summary__row--name\">\r\n {translate('checkout.order.paymentcost')}\r\n </div>\r\n <div className=\"checkout-order-summary__row--price\">\r\n {cart.paymentCost}\r\n </div>\r\n </div>\r\n )}\r\n {cart.discountValue != 0 && (\r\n <div className=\"checkout-order-summary__row\">\r\n <div className=\"checkout-order-summary__row--name\">\r\n {translate('checkout.order.discount')}\r\n </div>\r\n <div className=\"checkout-order-summary__row--price\">\r\n - {cart.discount}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n <hr />\r\n <div>\r\n <div className=\"checkout-order-summary__row\">\r\n <div className=\"checkout-order-summary__row--name checkout-order-summary__row--grand-total-name\">\r\n {translate('checkout.order.grandTotal')}\r\n </div>\r\n <div className=\"checkout-order-summary__row--price checkout-order-summary__row--grand-total-price\">\r\n {cart.grandTotal}\r\n </div>\r\n </div>\r\n <div className=\"checkout-order-summary__row\">\r\n <div className=\"checkout-order-summary__row--name\">\r\n {translate('checkout.order.vat')}\r\n </div>\r\n <div className=\"checkout-order-summary__row--price\">\r\n {cart.vat}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n)\r\n\r\nexport default CheckoutOrderInfo\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n setWidgetConfig,\r\n submit,\r\n adyenSubmitted,\r\n additionalDetails,\r\n} from './AdyenDropin.action';\r\nimport { submitError, submitDone } from '../Actions/Checkout.action';\r\nimport { post } from '../Services/http';\r\n\r\nclass AdyenDropinWidget extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.paymentContainer = React.createRef();\r\n this.paymentComponent = null;\r\n\r\n this.onSubmit = this.onSubmit.bind(this);\r\n this.onAdditionalDetails = this.onAdditionalDetails.bind(this);\r\n this.onError = this.onError.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n var dropinConfig = JSON.parse(this.props.responseString);\r\n\r\n const configuration = {\r\n paymentMethodsResponse: dropinConfig.paymentMethodsResponse,\r\n originKey: dropinConfig.originKey,\r\n locale: dropinConfig.locale,\r\n environment: dropinConfig.environment,\r\n paymentMethodsConfiguration: {\r\n card: {\r\n hasHolderName: true,\r\n holderNameRequired: true,\r\n }\r\n },\r\n showPayButton: true,\r\n };\r\n\r\n this.props.setWidgetConfig(configuration);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.paymentComponent &&\r\n this.props.checkout.adyen.isSubmitting &&\r\n this.props.checkout.isSubmitting\r\n ) {\r\n this.paymentComponent.submit();\r\n };\r\n\r\n var { config, refreshComponent } = this.props.checkout.adyen;\r\n\r\n if (\r\n config &&\r\n (!prevProps.checkout.adyen ||\r\n config !== prevProps.checkout.adyen.config ||\r\n refreshComponent !== prevProps.checkout.adyen.refreshComponent)\r\n ) {\r\n const configuration = {\r\n ...config,\r\n onSubmit: this.onSubmit,\r\n onAdditionalDetails: this.onAdditionalDetails,\r\n onError: this.onError,\r\n };\r\n\r\n const checkout = new AdyenCheckout(configuration);\r\n if (this.paymentComponent) {\r\n this.paymentComponent.unmount();\r\n };\r\n this.paymentComponent = checkout\r\n .create('dropin')\r\n .mount(this.paymentContainer.current);\r\n };\r\n\r\n const details = this.props.checkout.adyen.details;\r\n if (\r\n config &&\r\n prevProps.checkout.adyen &&\r\n details !== prevProps.checkout.adyen.details\r\n ) {\r\n this.paymentComponent.handleAction(details);\r\n };\r\n }\r\n\r\n onSubmit(state, dropin) {\r\n if (this.props.checkout.payload.reCaptchaSiteKey?.trim().length > 0) {\r\n grecaptcha.ready(() => {\r\n grecaptcha\r\n .execute(this.props.checkout.payload.reCaptchaSiteKey, {\r\n action: 'submit',\r\n })\r\n .then((token) => \r\n post(\"/api/adyen/recaptcha/validate\", {token})\r\n )\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.success == true) {\r\n if (state.isValid) {\r\n this.props.submit(state.data);\r\n this.paymentComponent = dropin;\r\n };\r\n };\r\n })\r\n .catch((ex) => this.onError(ex));\r\n });\r\n }\r\n else if (state.isValid) {\r\n this.props.submit(state.data);\r\n this.paymentComponent = dropin;\r\n }\r\n }\r\n\r\n onAdditionalDetails(state, dropin) {\r\n this.props.onAdditionalDetails(state.data);\r\n this.paymentComponent = dropin;\r\n }\r\n\r\n onError(error) {\r\n // enable confirm button by reseting its state.\r\n this.props.submitted();\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"checkout-widget\">\r\n <div ref={this.paymentContainer} className=\"payment\"></div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { checkout } = state;\r\n return {\r\n checkout,\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n submit: (data) => dispatch(submit(data)),\r\n setWidgetConfig: (data) => dispatch(setWidgetConfig(data)),\r\n submitted: () => {\r\n dispatch(adyenSubmitted());\r\n dispatch(submitDone(null));\r\n },\r\n onAdditionalDetails: (data) => {\r\n dispatch(additionalDetails(data));\r\n },\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AdyenDropinWidget);\r\n","import React, { PureComponent } from 'react'\r\nimport DynamicComponent from '../DynamicComponent'\r\nimport AdyenDropinWidget from '../../AdyenDropin/AdyenDropinWidget'\r\nconst scriptPattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script>/gi\r\nconst scriptFilePattern = /<script.*?src=[\"'](.*?)[\"']/gi\r\n\r\nclass PaymentWidget extends PureComponent {\r\n render() {\r\n // Adyen: start sample code\r\n const { id, responseString } = this.props\r\n\r\n if (id === 'AdyenDropin') {\r\n return <AdyenDropinWidget responseString={responseString} />\r\n }\r\n // Adyen: end sample code\r\n\r\n return this.renderWidget(responseString)\r\n }\r\n\r\n renderWidget(paymentSession) {\r\n const WidgetCheckout = DynamicComponent({\r\n loader: () => import('./CheckoutWidget'),\r\n })\r\n const args = {\r\n paymentSession,\r\n extractScripts: this.extractScripts,\r\n executeScript: this.executeScript,\r\n includeScript: this.includeScript,\r\n }\r\n return <WidgetCheckout {...args} />\r\n }\r\n\r\n extractScripts(domString) {\r\n let matches,\r\n html = domString\r\n const scripts = [],\r\n scriptFiles = []\r\n while ((matches = scriptPattern.exec(domString)) !== null) {\r\n html = html.replace(matches[0], '')\r\n matches[1] && matches[1].trim() !== '' && scripts.push(matches[1])\r\n }\r\n while ((matches = scriptFilePattern.exec(domString)) !== null) {\r\n matches[1] &&\r\n matches[1].trim() !== '' &&\r\n scriptFiles.push(matches[1])\r\n }\r\n\r\n return {\r\n html,\r\n scripts,\r\n scriptFiles,\r\n }\r\n }\r\n\r\n executeScript(domId, scriptContent) {\r\n const script = document.createElement('script')\r\n script.type = 'text/javascript'\r\n try {\r\n script.appendChild(document.createTextNode(scriptContent))\r\n } catch (e) {\r\n // to support IE\r\n script.text = scriptContent\r\n }\r\n document.getElementById(domId).appendChild(script)\r\n }\r\n\r\n includeScript(domId, srciptUrl) {\r\n const script = document.createElement('script')\r\n script.type = 'text/javascript'\r\n script.src = srciptUrl\r\n document.getElementById(domId).appendChild(script)\r\n }\r\n}\r\n\r\nexport default PaymentWidget\r\n","import { get, post } from \"./http\";\r\n\r\nexport const getSession = async () => {\r\n const response = await get('/api/ingrid');\r\n return response.json();\r\n}\r\n\r\nexport const updateSession = async () => {\r\n const response = await post('/api/ingrid');\r\n return response.status == 200 ? response.json() : undefined;\r\n}\r\n\r\nexport const replaceScriptNode = (node) => {\r\n if (isScriptNode(node) && !isExternalScript(node)) {\r\n node.parentNode.replaceChild(cloneScriptNode(node), node);\r\n } else {\r\n var i = 0,\r\n children = node.childNodes;\r\n while (i < children.length) {\r\n replaceScriptNode(children[i++]);\r\n }\r\n }\r\n return node;\r\n }\r\n \r\n function isScriptNode(node) {\r\n return node.tagName === \"SCRIPT\";\r\n }\r\n \r\n function isExternalScript(node) {\r\n return !!node.src && node.src !== \"\";\r\n }\r\n \r\n function cloneScriptNode(node) {\r\n var script = document.createElement(\"script\");\r\n script.text = node.innerHTML;\r\n for (var i = node.attributes.length - 1; i >= 0; i--) {\r\n script.setAttribute(node.attributes[i].name, node.attributes[i].value);\r\n }\r\n return script;\r\n}","import React, { useRef, useEffect, useState, useCallback }from \"react\";\r\nimport { post} from '../Services/http';\r\nimport { load as loadCart } from \"../Actions/Cart.action\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport isEqual from 'fast-deep-equal';\r\nimport { replaceScriptNode, getSession, updateSession } from \"../Services/Ingrid.service\";\r\nimport { debounce } from 'lodash'\r\n\r\nconst IngridDeliveryCheckoutWidget = (props) => {\r\n const { onError, updateDependencies, onCustomerDetailsChange } = props;\r\n\r\n const uniqueContainerId = 'shipwallet-container';\r\n const [ingridWidgetLoaded, setIngridWidgetLoaded] = useState(false);\r\n const [htmlSnippet, setHtmlSnippet] = useState('');\r\n const [previousUpdateDeps, setPreviousUpdateDeps] = useState(updateDependencies);\r\n const wrapperRef = useRef(null);\r\n var dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n initIngrid();\r\n }, []);\r\n\r\n const initIngrid = async () => {\r\n try {\r\n const session = await getSession();\r\n if (session) {\r\n setHtmlSnippet(session.htmlSnippet);\r\n }\r\n } catch (err) {\r\n await handleApiError(err);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const anyDepsHasChanged = updateDependencies.some(\r\n (current, idx) =>\r\n !isEqual(\r\n current,\r\n previousUpdateDeps.length > idx ? previousUpdateDeps[idx] : undefined\r\n )\r\n );\r\n\r\n if (\r\n ingridWidgetLoaded &&\r\n updateDependencies.length > 0 &&\r\n anyDepsHasChanged\r\n ) {\r\n setPreviousUpdateDeps(updateDependencies);\r\n updateIngridSession();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [updateDependencies]);\r\n\r\n const onShippingMethodChanged = async (data) => {\r\n try {\r\n window._sw((api) => api.suspend());\r\n await post('/api/ingrid/shippingoption', data)\r\n .then((res) => console.log(res))\r\n .then((result) => {\r\n dispatch(loadCart())\r\n })\r\n } catch (err) {\r\n await handleApiError(err);\r\n } finally {\r\n window._sw((api) => api.resume());\r\n }\r\n }\r\n\r\n const updateIngridSession = useCallback(\r\n debounce(async () => {\r\n try {\r\n window._sw((api) => api.suspend());\r\n const ingridSession = await updateSession();\r\n if (ingridSession?.htmlSnippet) {\r\n setHtmlSnippet(ingridSession.htmlSnippet);\r\n }\r\n } catch (err) {\r\n await handleApiError(err);\r\n } finally {\r\n window._sw((api) => api.resume());\r\n }\r\n }, 500),\r\n []\r\n );\r\n\r\n const registerIngridEvents = () => {\r\n window._sw(function (api) {\r\n api.on('loaded', () => setIngridWidgetLoaded(true));\r\n api.on(\"data_changed\", async (data, meta) => {\r\n if (\r\n meta.price_changed ||\r\n meta.shipping_method_changed ||\r\n meta.pickup_location_changed ||\r\n meta.external_method_id_changed\r\n ) {\r\n await onShippingMethodChanged(data);\r\n onError(\"\");\r\n }\r\n });\r\n api.on(\"summary_changed\", async (data, meta) => {\r\n if (meta.delivery_address_changed){\r\n onDeliveryAddressChanged(data);\r\n }\r\n })\r\n });\r\n }\r\n\r\n function onDeliveryAddressChanged(customerData) {\r\n const deliveryAddress = customerData.delivery_address;\r\n const street = [deliveryAddress.street, deliveryAddress.street_number].filter(s => s != null && s.trim()).join(\" \");\r\n if (deliveryAddress){\r\n const stateKey = \"customerDetails\";\r\n onCustomerDetailsChange(stateKey, \"firstName\", deliveryAddress.first_name);\r\n onCustomerDetailsChange(stateKey, \"lastName\", deliveryAddress.last_name);\r\n onCustomerDetailsChange(stateKey, \"address\", street);\r\n onCustomerDetailsChange(stateKey, \"zipCode\", deliveryAddress.postal_code);\r\n onCustomerDetailsChange(stateKey, \"city\", deliveryAddress.city);\r\n onCustomerDetailsChange(stateKey, \"phoneNumber\", deliveryAddress.phone_number);\r\n onCustomerDetailsChange(stateKey, \"email\", deliveryAddress.email);\r\n }\r\n }\r\n\r\n const handleApiError = useCallback(\r\n async (err) => {\r\n let errorMessage;\r\n if (err.response) {\r\n const data = await err.response.json();\r\n if (data.error){\r\n errorMessage = data.error;\r\n } else if (data.message) {\r\n errorMessage = data.message;\r\n } else {\r\n errorMessage = \"Error in ingrid delivery checkout\"\r\n }\r\n } else {\r\n errorMessage = err;\r\n }\r\n if (typeof onError === 'function') {\r\n onError(errorMessage);\r\n } else {\r\n console.log(errorMessage);\r\n }\r\n },\r\n [onError]\r\n );\r\n\r\n useEffect(() => {\r\n if (wrapperRef?.current && !!htmlSnippet && !ingridWidgetLoaded) {\r\n replaceScriptNode(\r\n wrapperRef.current.querySelector(`#${uniqueContainerId}`)\r\n );\r\n registerIngridEvents();\r\n }\r\n }, [htmlSnippet]);\r\n\r\n return (\r\n <div\r\n dangerouslySetInnerHTML={{ __html: htmlSnippet }}\r\n ref={wrapperRef}\r\n ></div>\r\n )\r\n};\r\n\r\nexport default IngridDeliveryCheckoutWidget;","import React, { Component, Fragment } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nimport Cart from '../Components/Cart'\r\nimport CheckoutPrivateCustomerInfo from '../Components/Checkout.PrivateCustomerInfo'\r\nimport CheckoutBusinessCustomerInfo from '../Components/Checkout.BusinessCustomerInfo'\r\nimport CheckoutDeliveryMethods from '../Components/Checkout.DeliveryMethods'\r\nimport CheckoutPaymentMethods from '../Components/Checkout.PaymentMethods'\r\nimport CheckoutOrderInfo from '../Components/Checkout.OrderInfo'\r\nimport PaymentWidget from '../Components/Payments/PaymentWidget'\r\nimport IngridDeliveryCheckoutWidget from '../Components/IngridDeliveryCheckoutWidget'\r\nimport CountryPicker from '../Components/CountryPicker'\r\n\r\nimport constants from '../constants'\r\n\r\nimport {\r\n acceptTermsOfCondition,\r\n setBusinessCustomer,\r\n setCampaignCode,\r\n setCountry,\r\n setDelivery,\r\n setPayment,\r\n setOrderNote,\r\n submit,\r\n verify,\r\n setCustomerDetails,\r\n setAlternativeAddress,\r\n setSignUp,\r\n toggleTemporaryDeliveryAddress,\r\n setSelectedCompanyAddress,\r\n submitError,\r\n reloadPayment,\r\n submitCampaignCode,\r\n submitRequest,\r\n submitDone,\r\n subscribeToNewsLetter,\r\n setGiftWrappingInfo,\r\n} from '../Actions/Checkout.action'\r\nimport * as cartActions from '../Actions/Cart.action'\r\n\r\nimport { translate } from '../Services/translation'\r\nimport { string, object, boolean, mixed } from 'yup'\r\n\r\nconst privateCustomerAdditionalDetailsSchema = object().shape({\r\n acceptTermsOfCondition: boolean()\r\n .required(translate(`validation.checkrequired`))\r\n .oneOf([true], translate(`validation.checkrequired`)),\r\n selectedDeliveryMethod: string().required(translate(`validation.required`)),\r\n})\r\n\r\nconst privateCustomerAddressSchema = object().shape({\r\n email: string()\r\n .required(translate(`validation.required`))\r\n .email(translate(`validation.email`)),\r\n phoneNumber: string().required(translate(`validation.required`)),\r\n country: mixed()\r\n .required(translate(`validation.required`))\r\n .notOneOf([''], translate('validation.required')),\r\n city: string().required(translate(`validation.required`)),\r\n zipCode: string().required(translate(`validation.required`)),\r\n address: string().required(translate(`validation.required`)),\r\n lastName: string().required(translate(`validation.required`)),\r\n firstName: string().required(translate(`validation.required`)),\r\n})\r\n\r\nconst privateCustomerAlternativeAddressSchema = object().shape({\r\n phoneNumber: string().required(translate(`validation.required`)),\r\n country: mixed()\r\n .required(translate(`validation.required`))\r\n .notOneOf([''], translate('validation.required')),\r\n city: string().required(translate(`validation.required`)),\r\n zipCode: string().required(translate(`validation.required`)),\r\n address: string().required(translate(`validation.required`)),\r\n lastName: string().required(translate(`validation.required`)),\r\n firstName: string().required(translate(`validation.required`)),\r\n})\r\n\r\nconst businessCustomerDetailsSchema = object().shape({\r\n acceptTermsOfCondition: boolean()\r\n .required(translate(`validation.checkrequired`))\r\n .oneOf([true], translate(`validation.checkrequired`)),\r\n selectedDeliveryMethod: string().required(translate(`validation.required`)),\r\n email: string()\r\n .required(translate(`validation.required`))\r\n .email(translate(`validation.email`)),\r\n phoneNumber: string().required(translate(`validation.required`)),\r\n lastName: string().required(translate(`validation.required`)),\r\n firstName: string().required(translate(`validation.required`)),\r\n selectedCompanyAddressId: string().required(\r\n translate(`validation.required`)\r\n ),\r\n})\r\n\r\nclass CheckoutContainer extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n showVoucherField: false,\r\n ingridError: '',\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props || !this.props.checkout) {\r\n return\r\n }\r\n // set selected value for payment method on load.\r\n const { selectedPaymentMethod } = this.props.checkout.payload\r\n selectedPaymentMethod && this.props.setPayment(selectedPaymentMethod)\r\n\r\n // fill default select value to the state\r\n const { customerDetails, alternativeAddress } =\r\n this.props.checkout.payload\r\n\r\n if (!customerDetails || !customerDetails.country) {\r\n this.props.onCustomerDetailsChange(\r\n 'customerDetails',\r\n 'country',\r\n window.__litium.currentCountryAlpha2\r\n )\r\n }\r\n\r\n if (!alternativeAddress || !alternativeAddress.country) {\r\n this.props.onCustomerDetailsChange(\r\n 'alternativeAddress',\r\n 'country',\r\n window.__litium.currentCountryAlpha2\r\n )\r\n }\r\n }\r\n\r\n placeOrder() {\r\n const { payload } = this.props.checkout\r\n const {\r\n isBusinessCustomer,\r\n selectedCompanyAddressId,\r\n acceptTermsOfCondition,\r\n selectedPaymentMethod,\r\n selectedDeliveryMethod,\r\n } = payload\r\n const notCustomerDetailFields = [\r\n 'selectedCompanyAddressId',\r\n 'selectedPaymentMethod',\r\n 'selectedDeliveryMethod',\r\n 'acceptTermsOfCondition',\r\n ]\r\n const onError = (error, addressPath = 'customerDetails') => {\r\n error.path =\r\n notCustomerDetailFields.indexOf(error.path) >= 0\r\n ? error.path\r\n : `${addressPath}-${error.path}`\r\n this.props.submitError(error)\r\n }\r\n this.props.submitRequest()\r\n if (isBusinessCustomer) {\r\n businessCustomerDetailsSchema\r\n .validate({\r\n ...payload.customerDetails,\r\n selectedCompanyAddressId,\r\n selectedPaymentMethod,\r\n selectedDeliveryMethod,\r\n acceptTermsOfCondition,\r\n })\r\n .then(() => {\r\n this.props.submit()\r\n })\r\n .catch(onError)\r\n } else {\r\n const checkAltAddress =\r\n payload.alternativeAddress.showAlternativeAddress &&\r\n (payload.alternativeAddress.firstName ||\r\n payload.alternativeAddress.lastName ||\r\n payload.alternativeAddress.address ||\r\n payload.alternativeAddress.zipCode ||\r\n payload.alternativeAddress.city ||\r\n payload.alternativeAddress.phoneNumber)\r\n\r\n privateCustomerAddressSchema\r\n .validate({\r\n ...payload.customerDetails,\r\n })\r\n .then(() => {\r\n payload.showAlternativeAddress =\r\n payload.alternativeAddress.showAlternativeAddress\r\n if (checkAltAddress) {\r\n privateCustomerAlternativeAddressSchema\r\n .validate({\r\n ...payload.alternativeAddress,\r\n })\r\n .then(() => {\r\n privateCustomerAdditionalDetailsSchema\r\n .validate({\r\n selectedPaymentMethod,\r\n selectedDeliveryMethod,\r\n acceptTermsOfCondition,\r\n })\r\n .then(() => {\r\n this.props.submit()\r\n })\r\n .catch(onError)\r\n })\r\n .catch((error) => {\r\n onError(error, 'alternativeAddress')\r\n })\r\n } else {\r\n privateCustomerAdditionalDetailsSchema\r\n .validate({\r\n selectedPaymentMethod,\r\n selectedDeliveryMethod,\r\n acceptTermsOfCondition,\r\n })\r\n .then(() => {\r\n this.props.submit()\r\n })\r\n .catch(onError)\r\n }\r\n })\r\n .catch(onError)\r\n }\r\n }\r\n\r\n render() {\r\n const { cart } = this.props\r\n if (!cart || !cart.orderRows || cart.orderRows.length < 1) {\r\n return (\r\n <div className=\"small-12\">\r\n <h3>{translate(`checkout.cart.empty`)}</h3>\r\n </div>\r\n )\r\n }\r\n\r\n const { checkout } = this.props\r\n const { payload, errors = {} } = checkout\r\n const {\r\n authenticated,\r\n checkoutMode,\r\n isBusinessCustomer,\r\n isNewsLetterSubscriber,\r\n paymentMethods,\r\n paymentWidget,\r\n subscribeToNewsLetter,\r\n ingridDeliveryCheckoutId,\r\n selectedDeliveryMethod,\r\n } = payload\r\n\r\n const ingridIsSelectedDeliveryMethod =\r\n selectedDeliveryMethod == ingridDeliveryCheckoutId\r\n\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__left-sections-container\">\r\n {(!paymentWidget || paymentWidget.isChangeable) &&\r\n this.renderCartSection()}\r\n {this.renderCampaignCodeSection()}\r\n {!ingridIsSelectedDeliveryMethod &&\r\n (!paymentWidget ||\r\n paymentWidget.displayCustomerDetails) &&\r\n this.renderCustomerDetailsSection()}\r\n {!ingridIsSelectedDeliveryMethod &&\r\n (!paymentWidget ||\r\n paymentWidget.displayDeliveryMethods) &&\r\n this.renderDeliveryMethodsSection()}\r\n {ingridIsSelectedDeliveryMethod &&\r\n this.renderIngridDeliveryCheckout()}\r\n {paymentMethods &&\r\n paymentMethods.length > 1 &&\r\n (!paymentWidget || paymentWidget.isChangeable) &&\r\n this.renderPaymentMethodsSection()}\r\n\r\n <div className=\"checkout__section hide-for-large\">\r\n <CheckoutOrderInfo cart={cart} />\r\n </div>\r\n <hr className=\"hide-for-large\" />\r\n\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <input\r\n className=\"checkout__checkbox-input\"\r\n type=\"checkbox\"\r\n id=\"acceptTermsOfCondition\"\r\n checked={payload.acceptTermsOfCondition}\r\n onChange={(event) =>\r\n this.props.acceptTermsOfCondition(\r\n event.target.checked\r\n )\r\n }\r\n />\r\n <label\r\n className=\"checkout__checkbox-label\"\r\n htmlFor=\"acceptTermsOfCondition\"\r\n >\r\n {translate(\r\n 'checkout.terms.acceptTermsOfCondition'\r\n )}{' '}\r\n <a\r\n className=\"checkout__link\"\r\n href={payload.termsUrl}\r\n target=\"_blank\"\r\n >\r\n {translate('checkout.terms.link')}\r\n </a>\r\n </label>\r\n {errors[\r\n 'acceptTermsOfCondition-acceptTermsOfCondition'\r\n ] && (\r\n <span\r\n className=\"form__validator--error\"\r\n data-error-for=\"acceptTermsOfCondition\"\r\n >\r\n {\r\n errors[\r\n 'acceptTermsOfCondition-acceptTermsOfCondition'\r\n ][0]\r\n }\r\n </span>\r\n )}\r\n </div>\r\n {!isNewsLetterSubscriber && (\r\n <>\r\n <div className=\"checkout__section\">\r\n <input\r\n className=\"checkout__checkbox-input\"\r\n type=\"checkbox\"\r\n id=\"subscribeToNewsLetter\"\r\n checked={subscribeToNewsLetter}\r\n onChange={(event) =>\r\n this.props.subscribeToNewsLetter(\r\n event.target.checked\r\n )\r\n }\r\n />\r\n <label\r\n className=\"checkout__checkbox-label\"\r\n htmlFor=\"subscribeToNewsLetter\"\r\n >\r\n {translate(\r\n 'checkout.subscribetonewsletter'\r\n )}\r\n </label>\r\n </div>\r\n <hr className=\"\" />\r\n </>\r\n )}\r\n <PaymentWidget\r\n {...paymentWidget}\r\n verify={this.props.verify}\r\n />\r\n {!paymentWidget && (\r\n <div className=\"checkout__section\">\r\n {!authenticated &&\r\n (isBusinessCustomer ||\r\n checkoutMode ===\r\n constants.checkoutMode\r\n .companyCustomers) ? (\r\n <button\r\n className=\"checkout__submit-button\"\r\n onClick={() =>\r\n (location.href = payload.loginUrl)\r\n }\r\n >\r\n {translate(\r\n 'checkout.login.to.placeorder'\r\n )}\r\n </button>\r\n ) : (\r\n <button\r\n type=\"submit\"\r\n className=\"checkout__submit-button\"\r\n disabled={checkout.isSubmitting}\r\n onClick={() => {\r\n if (\r\n payload.reCaptchaSiteKey.trim().length >\r\n 0\r\n ) {\r\n grecaptcha.ready(() => {\r\n grecaptcha\r\n .execute(\r\n payload.reCaptchaSiteKey,\r\n { action: 'submit' }\r\n )\r\n .then((token) => {\r\n this.placeOrder()\r\n })\r\n })\r\n }\r\n else {\r\n this.placeOrder()\r\n }\r\n }}\r\n >\r\n {translate('checkout.placeorder')}\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n {payload.reCaptchaSiteKey && (\r\n <div className=\"checkout__recaptcha-label\">\r\n <p>\r\n Google{' '}\r\n <a href=\"https://policies.google.com/privacy\">\r\n Privacy Policy\r\n </a>{' '}\r\n and{' '}\r\n <a href=\"https://policies.google.com/terms\">\r\n Terms of Service\r\n </a>{' '}\r\n apply.\r\n </p>\r\n </div>\r\n )}\r\n </Fragment>\r\n <div className=\"checkout__section\">\r\n {errors && errors['general'] && (\r\n <p className=\"checkout__validator--error\">\r\n {errors['general'][0]}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"checkout__right-sections-container\">\r\n <div className=\"checkout__section\">\r\n <CheckoutOrderInfo cart={cart} />\r\n </div>\r\n </div>\r\n </Fragment>\r\n )\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.checkout.result &&\r\n this.props.checkout.result.redirectUrl\r\n ) {\r\n window.location = this.props.checkout.result.redirectUrl\r\n return\r\n }\r\n\r\n const { checkout } = this.props\r\n if (!checkout.isSubmitting || !checkout.errors) {\r\n return\r\n }\r\n\r\n const errorKeys = Object.keys(checkout.errors)\r\n if (!errorKeys || errorKeys.length < 1) {\r\n return\r\n }\r\n\r\n const errorNode = document.querySelector(\r\n `[data-error-for=\"${errorKeys[0]}\"]`\r\n )\r\n if (!errorNode) {\r\n return\r\n }\r\n\r\n const inputNode = errorNode.parentElement.querySelector('input')\r\n if (inputNode) {\r\n setTimeout(() => inputNode.focus(), 1000)\r\n inputNode.scrollIntoView({ behavior: 'smooth', block: 'center' })\r\n } else {\r\n errorNode.scrollIntoView({ behavior: 'smooth', block: 'center' })\r\n }\r\n }\r\n\r\n renderCartSection() {\r\n const { checkout } = this.props,\r\n { errors = {} } = checkout\r\n\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <h3>{translate('checkout.cart.title')}</h3>\r\n </div>\r\n <div className=\"checkout__section\">\r\n {errors && errors['cart'] && (\r\n <p className=\"checkout__validator--error\">\r\n {errors['cart'][0]}\r\n </p>\r\n )}\r\n </div>\r\n <Cart\r\n {...{\r\n ...this.props.cart,\r\n updateOrderRowQuantity:\r\n this.props.updateOrderRowQuantity,\r\n removeOrderRow: this.props.removeOrderRow,\r\n giftWrapping: checkout.payload.giftWrapping,\r\n addToCart: this.props.addToCart,\r\n setGiftWrappingInfo: this.props.setGiftWrappingInfo,\r\n hasGiftWrappingRow: checkout.payload.hasGiftWrappingRow,\r\n }}\r\n />\r\n </Fragment>\r\n )\r\n }\r\n\r\n toggleVoucherCodeField() {\r\n this.setState((previousState) => ({\r\n ...previousState,\r\n showVoucherField: !previousState.showVoucherField,\r\n }))\r\n }\r\n\r\n renderCampaignCodeSection() {\r\n const { checkout } = this.props,\r\n { errors = {} } = checkout\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <div className=\"checkout-campaign-code__text\">\r\n <a onClick={() => this.toggleVoucherCodeField()}>\r\n {translate('checkout.campaigncode.text')}\r\n </a>\r\n </div>\r\n {this.state.showVoucherField && (\r\n <div className=\"small-6 medium-8 checkout-campaign-code\">\r\n <div className=\"small-12 medium-4\">\r\n <input\r\n className=\"form__input\"\r\n id=\"campaign-code\"\r\n placeholder={translate(\r\n 'checkout.campaigncode'\r\n )}\r\n onChange={(event) =>\r\n this.props.setCampaignCode(\r\n event.target.value\r\n )\r\n }\r\n />\r\n {errors && errors['campaignCode'] && (\r\n <span\r\n className=\"form__validator--error\"\r\n data-error-for=\"campaign-code\"\r\n >\r\n {errors['campaignCode'][0]}\r\n </span>\r\n )}\r\n </div>\r\n <button\r\n className=\"checkout-campaign-code__button\"\r\n onClick={() => this.props.submitCampaignCode()}\r\n >\r\n {translate('checkout.usecampaigncode')}\r\n </button>\r\n </div>\r\n )}\r\n <hr />\r\n </div>\r\n </Fragment>\r\n )\r\n }\r\n\r\n renderCustomerDetailsSection() {\r\n const {\r\n checkout,\r\n onCustomerDetailsChange,\r\n onSignUpChange,\r\n setSelectedCompanyAddress,\r\n cart,\r\n } = this.props,\r\n { payload, errors = {} } = checkout,\r\n {\r\n companyName,\r\n authenticated,\r\n customerDetails,\r\n companyAddresses,\r\n selectedCompanyAddressId,\r\n alternativeAddress,\r\n giftWrapping,\r\n isBusinessCustomer,\r\n signUp,\r\n checkoutMode,\r\n } = payload\r\n\r\n const isGiftWrappingEnabled =\r\n (giftWrapping &&\r\n cart.orderRows.find(\r\n (row) => row.articleNumber === giftWrapping.id\r\n )) != null\r\n ? true\r\n : false\r\n\r\n const privateCustomerInfoComponent = (\r\n <CheckoutPrivateCustomerInfo\r\n {...{\r\n customerDetails,\r\n authenticated,\r\n onChange: onCustomerDetailsChange,\r\n signUp,\r\n onSignUpChange,\r\n alternativeAddress,\r\n isGiftWrappingEnabled,\r\n giftWrapping,\r\n errors,\r\n }}\r\n />\r\n )\r\n const businessCustomerInfoComponent = (\r\n <CheckoutBusinessCustomerInfo\r\n {...{\r\n customerDetails,\r\n companyAddresses,\r\n companyName,\r\n authenticated,\r\n selectedCompanyAddressId,\r\n onChange: onCustomerDetailsChange,\r\n setSelectedCompanyAddress,\r\n errors,\r\n }}\r\n />\r\n )\r\n if (!authenticated) {\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <h3>{translate('checkout.customerinfo.title')}</h3>\r\n <div className=\"small-12 medium-6 checkout-customer__login-info\">\r\n <label>\r\n {translate(\r\n 'checkout.customerinfo.existingcustomer'\r\n )}\r\n </label>\r\n <a\r\n href={payload.loginUrl}\r\n className=\"checkout__link\"\r\n >\r\n {translate(\r\n 'checkout.customerinfo.clicktologin'\r\n )}\r\n </a>\r\n {!isBusinessCustomer &&\r\n checkoutMode ===\r\n constants.checkoutMode.both && (\r\n <a\r\n onClick={() =>\r\n this.props.setBusinessCustomer(true)\r\n }\r\n className=\"checkout__link\"\r\n >\r\n {translate(\r\n 'checkout.customerinfo.businesscustomer'\r\n )}\r\n </a>\r\n )}\r\n {isBusinessCustomer &&\r\n checkoutMode ===\r\n constants.checkoutMode.both && (\r\n <a\r\n onClick={() =>\r\n this.props.setBusinessCustomer(\r\n false\r\n )\r\n }\r\n className=\"checkout__link\"\r\n >\r\n {translate(\r\n 'checkout.customerinfo.privatecustomer'\r\n )}\r\n </a>\r\n )}\r\n </div>\r\n </div>\r\n {!isBusinessCustomer &&\r\n checkoutMode !==\r\n constants.checkoutMode.companyCustomers &&\r\n privateCustomerInfoComponent}\r\n {(isBusinessCustomer ||\r\n checkoutMode ===\r\n constants.checkoutMode.companyCustomers) &&\r\n businessCustomerInfoComponent}\r\n <hr />\r\n </Fragment>\r\n )\r\n }\r\n if (isBusinessCustomer) {\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <h3>{translate('checkout.customerinfo.title')}</h3>\r\n </div>\r\n {authenticated && businessCustomerInfoComponent}\r\n <hr />\r\n </Fragment>\r\n )\r\n }\r\n\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <h3>{translate('checkout.customerinfo.title')}</h3>\r\n </div>\r\n {privateCustomerInfoComponent}\r\n <hr />\r\n </Fragment>\r\n )\r\n }\r\n\r\n renderIngridDeliveryCheckout() {\r\n const { cart, onCustomerDetailsChange, checkout } = this.props,\r\n { payload } = checkout,\r\n { customerDetails } = payload\r\n\r\n return (\r\n <>\r\n <div className=\"checkout__country-picker small-12 medium-6\">\r\n <CountryPicker\r\n customerDetails={customerDetails}\r\n labelName=\"checkout.customerinfo.country\"\r\n />\r\n </div>\r\n <div className=\"checkout__section ingrid-delivery-checkout\">\r\n {this.state.ingridError && (\r\n <div className=\"ingrid__error\">\r\n <span>{this.state.ingridError}</span>\r\n </div>\r\n )}\r\n <div>\r\n <IngridDeliveryCheckoutWidget\r\n updateDependencies={[cart.orderRows]}\r\n onCustomerDetailsChange={onCustomerDetailsChange}\r\n onError={(err) => this.setIngridError(err)}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n )\r\n }\r\n\r\n setIngridError(err) {\r\n this.setState((previousState) => ({\r\n ...previousState,\r\n ingridError: err,\r\n }))\r\n }\r\n\r\n renderDeliveryMethodsSection() {\r\n const { checkout } = this.props,\r\n { payload, errors = {} } = checkout,\r\n { deliveryMethods } = payload\r\n\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <h3>{translate('checkout.delivery.title')}</h3>\r\n </div>\r\n <CheckoutDeliveryMethods\r\n deliveryMethods={deliveryMethods}\r\n selectedId={payload.selectedDeliveryMethod}\r\n onChange={this.props.setDelivery}\r\n />\r\n {errors['selectedDeliveryMethod'] && (\r\n <span className=\"form__validator--error\">\r\n {errors['selectedDeliveryMethod'][0]}\r\n </span>\r\n )}\r\n </Fragment>\r\n )\r\n }\r\n\r\n renderPaymentMethodsSection() {\r\n const { checkout } = this.props,\r\n { payload, errors = {} } = checkout,\r\n { paymentMethods } = payload\r\n return (\r\n <Fragment>\r\n <div className=\"checkout__section\">\r\n <h3>{translate('checkout.payment.title')}</h3>\r\n </div>\r\n <CheckoutPaymentMethods\r\n paymentMethods={paymentMethods}\r\n selectedId={payload.selectedPaymentMethod}\r\n onChange={this.props.setPayment}\r\n errors={errors}\r\n onCampaignCodeChange={this.props.setCampaignCode}\r\n onSubmitCampaignCode={this.props.submitCampaignCode}\r\n />\r\n {errors['selectedPaymentMethod'] && (\r\n <span className=\"form__validator--error\">\r\n {errors['selectedPaymentMethod'][0]}\r\n </span>\r\n )}\r\n </Fragment>\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { cart, checkout } = state\r\n return {\r\n cart,\r\n checkout,\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n submit: () => dispatch(submit()),\r\n setBusinessCustomer: (value) => dispatch(setBusinessCustomer(value)),\r\n setCampaignCode: (code) => dispatch(setCampaignCode(code)),\r\n setCountry: (systemId) => dispatch(setCountry(systemId)),\r\n setDelivery: (systemId) => dispatch(setDelivery(systemId)),\r\n setPayment: (systemId) => dispatch(setPayment(systemId)),\r\n setOrderNote: (note) => dispatch(setOrderNote(note)),\r\n setGiftWrapping: (giftWrapping) =>\r\n dispatch(setGiftWrapping(giftWrapping)),\r\n setAlternativeAddress: (name, value) =>\r\n dispatch(setAlternativeAddress(name, value)),\r\n acceptTermsOfCondition: (accept) =>\r\n dispatch(acceptTermsOfCondition(accept)),\r\n subscribeToNewsLetter: (subscribe) =>\r\n dispatch(subscribeToNewsLetter(subscribe)),\r\n setGiftWrappingInfo: (additionalInfo, artNo, callback) =>\r\n dispatch(setGiftWrappingInfo(additionalInfo, artNo, callback)),\r\n verify: (url, orderId, payload) =>\r\n dispatch(verify(url, orderId, payload)),\r\n onSignUpChange: (signUp) => dispatch(setSignUp(signUp)),\r\n toggleTemporaryDeliveryAddress: (useTemporaryDeliveryAddress) =>\r\n dispatch(\r\n toggleTemporaryDeliveryAddress(useTemporaryDeliveryAddress)\r\n ),\r\n submitCampaignCode: () => dispatch(submitCampaignCode()),\r\n submitRequest: () => dispatch(submitRequest()),\r\n submitError: (error) => {\r\n dispatch(submitError(error))\r\n dispatch(submitDone(null))\r\n },\r\n setSelectedCompanyAddress: (companyAddressId, country) => {\r\n dispatch(setSelectedCompanyAddress(companyAddressId))\r\n dispatch(setCountry(country))\r\n },\r\n onCustomerDetailsChange: (stateKey, propName, value) => {\r\n switch (stateKey) {\r\n case 'customerDetails':\r\n dispatch(setCustomerDetails(propName, value))\r\n break\r\n case 'alternativeAddress':\r\n dispatch(setAlternativeAddress(propName, value))\r\n break\r\n }\r\n },\r\n addToCart: (params) =>\r\n dispatch(cartActions.add(params)).then(() =>\r\n dispatch(reloadPayment())\r\n ),\r\n updateOrderRowQuantity: (rowId, quantity) =>\r\n dispatch(cartActions.update(rowId, quantity)).then(() =>\r\n dispatch(reloadPayment())\r\n ),\r\n removeOrderRow: (rowId) =>\r\n dispatch(cartActions.update(rowId, 0)).then(() =>\r\n dispatch(reloadPayment())\r\n ),\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CheckoutContainer)\r\n"],"sourceRoot":""}