kwikui
Version:
KwikID's UI Component Library in Angular
109 lines • 17.3 kB
JavaScript
import { isEmptyValue, isNotEmptyValue } from "kwikid-toolkit";
import { EKwikUIInputCurrencyType } from "./input-currency.definitions";
const formattedValue = (formattedValue, originalValue, decimalPart) => {
formattedValue = formattedValue.replace(/-/g, "");
if (originalValue.includes(".")) {
formattedValue += ".";
}
if (isNotEmptyValue(decimalPart)) {
formattedValue += decimalPart;
}
if (originalValue.startsWith("-") && originalValue[1] == ".") {
formattedValue = `-0${formattedValue}`;
}
else if (originalValue.startsWith("-") && originalValue[1] !== ".") {
formattedValue = `-${formattedValue}`;
}
else if (!originalValue.startsWith("-") && originalValue[0] == ".") {
formattedValue = `0${formattedValue}`;
}
return formattedValue;
};
/**
* Removes leading zeros from a numeric string.
* @param value - The numeric string.
* @returns - The value without leading zeros.
*/
const removeLeadingZeros = (value) => {
if (value.startsWith("-")) {
return `-${value.replace(/^(-?)(0+)(\d+)/, "$1$3")}`;
}
if (isEmptyValue(value)) {
return "";
}
return value.replace(/^0+/, "") || "0";
};
export const formatToINR = (value) => {
const [integerPartRaw, decimalPart] = value.replace(/-/g, "").split(".");
const integerPart = removeLeadingZeros(integerPartRaw);
let lastThree = integerPart.slice(-3);
const otherNumbers = integerPart.slice(0, -3);
if (isNotEmptyValue(otherNumbers)) {
lastThree = `,${lastThree}`;
}
const formatted = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
return formattedValue(formatted, value, decimalPart);
};
export const formatToUSD = (value) => {
const [integerPartRaw, decimalPart] = value.replace(/-/g, "").split(".");
const integerPart = removeLeadingZeros(integerPartRaw);
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return formattedValue(formattedInteger, value, decimalPart);
};
export const formatToEUR = (value) => {
const [integerPartRaw, decimalPart] = value.replace(/-/g, "").split(",");
const integerPart = removeLeadingZeros(integerPartRaw);
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
return formattedValue(formattedInteger, value, decimalPart);
};
export const formatToGBP = (value) => {
const [integerPartRaw, decimalPart] = value.replace(/-/g, "").split(".");
const integerPart = removeLeadingZeros(integerPartRaw);
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return formattedValue(formattedInteger, value, decimalPart);
};
export const formatToJPY = (value) => {
const formattedInteger = removeLeadingZeros(value.replace("-", "").replace(/\B(?=(\d{3})+(?!\d))/g, ","));
return formattedInteger;
};
export const formatToCNY = (value) => {
const [integerPartRaw, decimalPart] = value.replace(/-/g, "").split(".");
const integerPart = removeLeadingZeros(integerPartRaw);
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return formattedValue(formattedInteger, value, decimalPart);
};
export const formatToAUD = (value) => {
const [integerPartRaw, decimalPart] = value.replace(/-/g, "").split(".");
const integerPart = removeLeadingZeros(integerPartRaw);
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return formattedValue(formattedInteger, value, decimalPart);
};
export const formatToCAD = (value) => {
const [integerPartRaw, decimalPart] = value.replace(/-/g, "").split(".");
const integerPart = removeLeadingZeros(integerPartRaw);
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return formattedValue(formattedInteger, value, decimalPart);
};
export const formatCurrency = (currencyType, value) => {
switch (currencyType) {
case EKwikUIInputCurrencyType.INR:
return formatToINR(value);
case EKwikUIInputCurrencyType.USD:
return formatToUSD(value);
case "EUR":
return formatToEUR(value);
case "GBP":
return formatToGBP(value);
case "JPY":
return formatToJPY(value);
case "CNY":
return formatToCNY(value);
case "AUD":
return formatToAUD(value);
case "CAD":
return formatToCAD(value);
default:
return value;
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY3VycmVuY3kuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWt1aS9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tL2lucHV0LWN1cnJlbmN5L2lucHV0LWN1cnJlbmN5LmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsd0JBQXdCLEVBRXpCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxFQUFFO0lBQ3BFLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVsRCxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDL0IsY0FBYyxJQUFJLEdBQUcsQ0FBQztLQUN2QjtJQUVELElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2hDLGNBQWMsSUFBSSxXQUFXLENBQUM7S0FDL0I7SUFFRCxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtRQUM1RCxjQUFjLEdBQUcsS0FBSyxjQUFjLEVBQUUsQ0FBQztLQUN4QztTQUFNLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO1FBQ3BFLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO0tBQ3ZDO1NBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtR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Q0FBQztRQUM1QixLQUFLLEtBQUs7WUFDUixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixLQUFLLEtBQUs7WUFDUixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixLQUFLLEtBQUs7WUFDUixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixLQUFLLEtBQUs7WUFDUixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QjtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eVZhbHVlLCBpc05vdEVtcHR5VmFsdWUgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7XG4gIEVLd2lrVUlJbnB1dEN1cnJlbmN5VHlwZSxcbiAgVEt3aWtVSUlucHV0Q3VycmVuY3lUeXBlXG59IGZyb20gXCIuL2lucHV0LWN1cnJlbmN5LmRlZmluaXRpb25zXCI7XG5cbmNvbnN0IGZvcm1hdHRlZFZhbHVlID0gKGZvcm1hdHRlZFZhbHVlLCBvcmlnaW5hbFZhbHVlLCBkZWNpbWFsUGFydCkgPT4ge1xuICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlLnJlcGxhY2UoLy0vZywgXCJcIik7XG5cbiAgaWYgKG9yaWdpbmFsVmFsdWUuaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgZm9ybWF0dGVkVmFsdWUgKz0gXCIuXCI7XG4gIH1cblxuICBpZiAoaXNOb3RFbXB0eVZhbHVlKGRlY2ltYWxQYXJ0KSkge1xuICAgIGZvcm1hdHRlZFZhbHVlICs9IGRlY2ltYWxQYXJ0O1xuICB9XG5cbiAgaWYgKG9yaWdpbmFsVmFsdWUuc3RhcnRzV2l0aChcIi1cIikgJiYgb3JpZ2luYWxWYWx1ZVsxXSA9PSBcIi5cIikge1xuICAgIGZvcm1hdHRlZFZhbHVlID0gYC0wJHtmb3JtYXR0ZWRWYWx1ZX1gO1xuICB9IGVsc2UgaWYgKG9yaWdpbmFsVmFsdWUuc3RhcnRzV2l0aChcIi1cIikgJiYgb3JpZ2luYWxWYWx1ZVsxXSAhPT0gXCIuXCIpIHtcbiAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAtJHtmb3JtYXR0ZWRWYWx1ZX1gO1xuICB9IGVsc2UgaWYgKCFvcmlnaW5hbFZhbHVlLnN0YXJ0c1dpdGgoXCItXCIpICYmIG9yaWdpbmFsVmFsdWVbMF0gPT0gXCIuXCIpIHtcbiAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAwJHtmb3JtYXR0ZWRWYWx1ZX1gO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIGxlYWRpbmcgemVyb3MgZnJvbSBhIG51bWVyaWMgc3RyaW5nLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIG51bWVyaWMgc3RyaW5nLlxuICogQHJldHVybnMgLSBUaGUgdmFsdWUgd2l0aG91dCBsZWFkaW5nIHplcm9zLlxuICovXG5jb25zdCByZW1vdmVMZWFkaW5nWmVyb3MgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiLVwiKSkge1xuICAgIHJldHVybiBgLSR7dmFsdWUucmVwbGFjZSgvXigtPykoMCspKFxcZCspLywgXCIkMSQzXCIpfWA7XG4gIH1cbiAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXjArLywgXCJcIikgfHwgXCIwXCI7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VG9JTlIgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IFtpbnRlZ2VyUGFydFJhdywgZGVjaW1hbFBhcnRdID0gdmFsdWUucmVwbGFjZSgvLS9nLCBcIlwiKS5zcGxpdChcIi5cIik7XG4gIGNvbnN0IGludGVnZXJQYXJ0ID0gcmVtb3ZlTGVhZGluZ1plcm9zKGludGVnZXJQYXJ0UmF3KTtcblxuICBsZXQgbGFzdFRocmVlID0gaW50ZWdlclBhcnQuc2xpY2UoLTMpO1xuICBjb25zdCBvdGhlck51bWJlcnMgPSBpbnRlZ2VyUGFydC5zbGljZSgwLCAtMyk7XG4gIGlmIChpc05vdEVtcHR5VmFsdWUob3RoZXJOdW1iZXJzKSkge1xuICAgIGxhc3RUaHJlZSA9IGAsJHtsYXN0VGhyZWV9YDtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdHRlZCA9XG4gICAgb3RoZXJOdW1iZXJzLnJlcGxhY2UoL1xcQig/PShcXGR7Mn0pKyg/IVxcZCkpL2csIFwiLFwiKSArIGxhc3RUaHJlZTtcblxuICByZXR1cm4gZm9ybWF0dGVkVmFsdWUoZm9ybWF0dGVkLCB2YWx1ZSwgZGVjaW1hbFBhcnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRvVVNEID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBbaW50ZWdlclBhcnRSYXcsIGRlY2ltYWxQYXJ0XSA9IHZhbHVlLnJlcGxhY2UoLy0vZywgXCJcIikuc3BsaXQoXCIuXCIpO1xuICBjb25zdCBpbnRlZ2VyUGFydCA9IHJlbW92ZUxlYWRpbmdaZXJvcyhpbnRlZ2VyUGFydFJhdyk7XG4gIGNvbnN0IGZvcm1hdHRlZEludGVnZXIgPSBpbnRlZ2VyUGFydC5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIik7XG5cbiAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlKGZvcm1hdHRlZEludGVnZXIsIHZhbHVlLCBkZWNpbWFsUGFydCk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VG9FVVIgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IFtpbnRlZ2VyUGFydFJhdywgZGVjaW1hbFBhcnRdID0gdmFsdWUucmVwbGFjZSgvLS9nLCBcIlwiKS5zcGxpdChcIixcIik7XG4gIGNvbnN0IGludGVnZXJQYXJ0ID0gcmVtb3ZlTGVhZGluZ1plcm9zKGludGVnZXJQYXJ0UmF3KTtcbiAgY29uc3QgZm9ybWF0dGVkSW50ZWdlciA9IGludGVnZXJQYXJ0LnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLlwiKTtcbiAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlKGZvcm1hdHRlZEludGVnZXIsIHZhbHVlLCBkZWNpbWFsUGFydCk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VG9HQlAgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IFtpbnRlZ2VyUGFydFJhdywgZGVjaW1hbFBhcnRdID0gdmFsdWUucmVwbGFjZSgvLS9nLCBcIlwiKS5zcGxpdChcIi5cIik7XG4gIGNvbnN0IGludGVnZXJQYXJ0ID0gcmVtb3ZlTGVhZGluZ1plcm9zKGludGVnZXJQYXJ0UmF3KTtcbiAgY29uc3QgZm9ybWF0dGVkSW50ZWdlciA9IGludGVnZXJQYXJ0LnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcbiAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlKGZvcm1hdHRlZEludGVnZXIsIHZhbHVlLCBkZWNpbWFsUGFydCk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VG9KUFkgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGZvcm1hdHRlZEludGVnZXIgPSByZW1vdmVMZWFkaW5nWmVyb3MoXG4gICAgdmFsdWUucmVwbGFjZShcIi1cIiwgXCJcIikucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpXG4gICk7XG4gIHJldHVybiBmb3JtYXR0ZWRJbnRlZ2VyO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRvQ05ZID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBbaW50ZWdlclBhcnRSYXcsIGRlY2ltYWxQYXJ0XSA9IHZhbHVlLnJlcGxhY2UoLy0vZywgXCJcIikuc3BsaXQoXCIuXCIpO1xuICBjb25zdCBpbnRlZ2VyUGFydCA9IHJlbW92ZUxlYWRpbmdaZXJvcyhpbnRlZ2VyUGFydFJhdyk7XG4gIGNvbnN0IGZvcm1hdHRlZEludGVnZXIgPSBpbnRlZ2VyUGFydC5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIik7XG4gIHJldHVybiBmb3JtYXR0ZWRWYWx1ZShmb3JtYXR0ZWRJbnRlZ2VyLCB2YWx1ZSwgZGVjaW1hbFBhcnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRvQVVEID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBbaW50ZWdlclBhcnRSYXcsIGRlY2ltYWxQYXJ0XSA9IHZhbHVlLnJlcGxhY2UoLy0vZywgXCJcIikuc3BsaXQoXCIuXCIpO1xuICBjb25zdCBpbnRlZ2VyUGFydCA9IHJlbW92ZUxlYWRpbmdaZXJvcyhpbnRlZ2VyUGFydFJhdyk7XG4gIGNvbnN0IGZvcm1hdHRlZEludGVnZXIgPSBpbnRlZ2VyUGFydC5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIik7XG4gIHJldHVybiBmb3JtYXR0ZWRWYWx1ZShmb3JtYXR0ZWRJbnRlZ2VyLCB2YWx1ZSwgZGVjaW1hbFBhcnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRvQ0FEID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBbaW50ZWdlclBhcnRSYXcsIGRlY2ltYWxQYXJ0XSA9IHZhbHVlLnJlcGxhY2UoLy0vZywgXCJcIikuc3BsaXQoXCIuXCIpO1xuICBjb25zdCBpbnRlZ2VyUGFydCA9IHJlbW92ZUxlYWRpbmdaZXJvcyhpbnRlZ2VyUGFydFJhdyk7XG4gIGNvbnN0IGZvcm1hdHRlZEludGVnZXIgPSBpbnRlZ2VyUGFydC5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIik7XG4gIHJldHVybiBmb3JtYXR0ZWRWYWx1ZShmb3JtYXR0ZWRJbnRlZ2VyLCB2YWx1ZSwgZGVjaW1hbFBhcnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKFxuICBjdXJyZW5jeVR5cGU6IFRLd2lrVUlJbnB1dEN1cnJlbmN5VHlwZSxcbiAgdmFsdWU6IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChjdXJyZW5jeVR5cGUpIHtcbiAgICBjYXNlIEVLd2lrVUlJbnB1dEN1cnJlbmN5VHlwZS5JTlI6XG4gICAgICByZXR1cm4gZm9ybWF0VG9JTlIodmFsdWUpO1xuICAgIGNhc2UgRUt3aWtVSUlucHV0Q3VycmVuY3lUeXBlLlVTRDpcbiAgICAgIHJldHVybiBmb3JtYXRUb1VTRCh2YWx1ZSk7XG4gICAgY2FzZSBcIkVVUlwiOlxuICAgICAgcmV0dXJuIGZvcm1hdFRvRVVSKHZhbHVlKTtcbiAgICBjYXNlIFwiR0JQXCI6XG4gICAgICByZXR1cm4gZm9ybWF0VG9HQlAodmFsdWUpO1xuICAgIGNhc2UgXCJKUFlcIjpcbiAgICAgIHJldHVybiBmb3JtYXRUb0pQWSh2YWx1ZSk7XG4gICAgY2FzZSBcIkNOWVwiOlxuICAgICAgcmV0dXJuIGZvcm1hdFRvQ05ZKHZhbHVlKTtcbiAgICBjYXNlIFwiQVVEXCI6XG4gICAgICByZXR1cm4gZm9ybWF0VG9BVUQodmFsdWUpO1xuICAgIGNhc2UgXCJDQURcIjpcbiAgICAgIHJldHVybiBmb3JtYXRUb0NBRCh2YWx1ZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcbiJdfQ==