@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
71 lines • 2.53 kB
JavaScript
import { ABSENT_VALUE_FORMAT, isAbsent } from "./constants.js";
import { formatWith } from "./formatCore.js";
const cleanDigits = val => String(val).replace(/[^0-9]/g, '');
const cleanAlphanumeric = val => String(val).replace(/[^A-Za-z0-9]/g, '');
const pairwiseAria = digits => digits.split(/([0-9]{2})/).filter(s => s).join(' ');
export const formatBankAccountNumberByType = (number, bankAccountType = 'norwegianBban') => {
if (isAbsent(number)) {
return {
number: ABSENT_VALUE_FORMAT,
aria: ABSENT_VALUE_FORMAT
};
}
let display;
let aria;
switch (bankAccountType) {
case 'iban':
{
var _cleaned$match$join, _cleaned$match;
const cleaned = cleanAlphanumeric(number).toUpperCase();
display = (_cleaned$match$join = (_cleaned$match = cleaned.match(/.{1,4}/g)) === null || _cleaned$match === void 0 ? void 0 : _cleaned$match.join(' ')) !== null && _cleaned$match$join !== void 0 ? _cleaned$match$join : cleaned;
aria = display;
break;
}
case 'swedishBban':
{
const cleaned = cleanDigits(number);
display = cleaned.length > 4 ? cleaned.slice(0, 4) + '-' + cleaned.slice(4) : cleaned;
aria = pairwiseAria(cleaned);
break;
}
case 'swedishBankgiro':
{
const cleaned = cleanDigits(number);
if (cleaned.length === 8) {
display = cleaned.slice(0, 4) + '-' + cleaned.slice(4);
} else if (cleaned.length === 7) {
display = cleaned.slice(0, 3) + '-' + cleaned.slice(3);
} else {
display = cleaned;
}
aria = pairwiseAria(cleaned);
break;
}
case 'swedishPlusgiro':
{
const cleaned = cleanDigits(number);
if (cleaned.length >= 2) {
display = cleaned.slice(0, cleaned.length - 1) + '-' + cleaned.slice(cleaned.length - 1);
} else {
display = cleaned;
}
aria = pairwiseAria(cleaned);
break;
}
case 'norwegianBban':
default:
{
const cleaned = cleanDigits(number);
display = cleaned.split(/([0-9]{4})([0-9]{2})([0-9]{1,})/).filter(s => s).join(' ');
aria = pairwiseAria(cleaned);
break;
}
}
return {
number: display,
aria
};
};
const norwegianBbanParts = (value, _locale = null) => formatBankAccountNumberByType(value, 'norwegianBban');
export const formatBankAccountNumber = formatWith('ban', norwegianBbanParts);
//# sourceMappingURL=formatBankAccountNumber.js.map