UNPKG

sprinque-js-sdk-wip

Version:

UI kit to implement Pay by Invoice with Sprinque

49 lines (48 loc) 2.51 kB
import i18next from 'i18next'; import { SprinqueModal } from '../inject-web-component'; import { ADDRESS_CITY, ADDRESS_LINE_1, ADDRESS_LINE_2, ADDRESS_ZIP, COUNTRY_SELECT, ORDER_TOTAL_AMOUNT, ORDER_TOTAL_CURRENCY, } from '../selectors'; import { CURRENCY_SYMBOL } from '../helpers/currency'; export const handlePasteOtpCode = (elem, allDigitsElems) => { elem.addEventListener('paste', event => { var _a; event.preventDefault(); let code = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text'); // insert code and focus to confirm button if (code && code.length === 5) { allDigitsElems.forEach((elem, index) => (elem.value = code[index])); } }); }; export const getAddressFromInputs = (shadowRoot) => ({ address_line1: shadowRoot.querySelector(ADDRESS_LINE_1).value, address_line2: shadowRoot.querySelector(ADDRESS_LINE_2).value, city: shadowRoot.querySelector(ADDRESS_CITY).value, zip_code: shadowRoot.querySelector(ADDRESS_ZIP).value, country_code: shadowRoot.querySelector(COUNTRY_SELECT).value, }); export const showNetTermsWithPrices = (eligibleNetTerms, prices, shadowRoot) => { eligibleNetTerms.forEach((termUpperCase, index) => { // show item const termLowerCase = termUpperCase.toLowerCase(); // net15 const termItemInput = shadowRoot.querySelector(`#${termLowerCase}`); const termItemLabel = shadowRoot.querySelector(`[for=${termLowerCase}]`); termItemLabel.style.display = 'flex'; // set price const termPrice = shadowRoot.querySelector(`.payment-term-price.${termLowerCase}`); const { order_amount, order_currency } = SprinqueModal.order; const priceInPercent = prices ? +prices[termLowerCase] : 0; const cost = (priceInPercent * order_amount) / 100; const currencySymbol = CURRENCY_SYMBOL[order_currency]; const formattedCost = currencySymbol + cost.toFixed(2); termPrice.innerHTML = cost === 0 ? i18next.t(`order.free`) : formattedCost; termItemInput.dataset.priceAbsolut = String(cost.toFixed(2)); // select first item as default if (index === 0) { termItemInput.checked = true; // set total amount shadowRoot.querySelector(ORDER_TOTAL_CURRENCY).innerHTML = currencySymbol; shadowRoot.querySelector(ORDER_TOTAL_AMOUNT).innerHTML = (order_amount + cost).toFixed(2); } }); };