@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
78 lines (77 loc) • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.formatBankAccountNumberByType = exports.formatBankAccountNumber = void 0;
var _constants = require("./constants.js");
var _formatCore = require("./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(' ');
const formatBankAccountNumberByType = (number, bankAccountType = 'norwegianBban') => {
if ((0, _constants.isAbsent)(number)) {
return {
number: _constants.ABSENT_VALUE_FORMAT,
aria: _constants.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
};
};
exports.formatBankAccountNumberByType = formatBankAccountNumberByType;
const norwegianBbanParts = (value, _locale = null) => formatBankAccountNumberByType(value, 'norwegianBban');
const formatBankAccountNumber = exports.formatBankAccountNumber = (0, _formatCore.formatWith)('ban', norwegianBbanParts);
//# sourceMappingURL=formatBankAccountNumber.js.map