UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

78 lines (77 loc) 2.82 kB
"use strict"; 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