UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

71 lines 2.53 kB
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