sprinque-js-sdk-wip
Version:
UI kit to implement Pay by Invoice with Sprinque
49 lines (48 loc) • 2.51 kB
JavaScript
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);
}
});
};