@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
105 lines • 3.11 kB
JavaScript
const norwegianBbanMask = [/\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/];
const norwegianBbanMaskNoFormat = Array.from({
length: 11
}, () => /\d/);
const swedishBbanMask = [/\d/, /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/];
const swedishBbanMaskNoFormat = Array.from({
length: 14
}, () => /\d/);
const swedishBankgiroMaskDigitsOnly = Array.from({
length: 8
}, () => /\d/);
function buildSwedishBankgiroMask(value) {
var _value$replace;
const digits = (_value$replace = value?.replace(/[^0-9]/g, '')) !== null && _value$replace !== void 0 ? _value$replace : '';
if (digits.length === 7) {
return [/\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/, /\d/];
}
if (digits.length === 8) {
return [/\d/, /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/];
}
return swedishBankgiroMaskDigitsOnly;
}
const swedishPlusgiroMaskDigitsOnly = Array.from({
length: 8
}, () => /\d/);
function buildSwedishPlusgiroMask(value) {
var _value$replace2;
const digits = (_value$replace2 = value?.replace(/[^0-9]/g, '')) !== null && _value$replace2 !== void 0 ? _value$replace2 : '';
if (digits.length >= 2 && digits.length <= 8) {
const maxDigits = 8;
const dashPosition = digits.length - 1;
const mask = [];
for (let i = 0; i < maxDigits; i++) {
if (i === dashPosition) {
mask.push('-');
}
mask.push(/\d/);
}
return mask;
}
return swedishPlusgiroMaskDigitsOnly;
}
const ibanMask = buildIbanMask();
function buildIbanMask() {
const alphanumeric = /[A-Za-z0-9]/;
const mask = [];
for (let i = 0; i < 34; i++) {
if (i > 0 && i % 4 === 0) {
mask.push(' ');
}
mask.push(alphanumeric);
}
return mask;
}
const ibanMaskNoFormat = Array.from({
length: 34
}, () => /[A-Za-z0-9]/);
export function getMask(bankAccountType, omitMask, value) {
if (omitMask) {
switch (bankAccountType) {
case 'swedishBban':
return swedishBbanMaskNoFormat;
case 'swedishBankgiro':
return swedishBankgiroMaskDigitsOnly;
case 'swedishPlusgiro':
return swedishPlusgiroMaskDigitsOnly;
case 'iban':
return ibanMaskNoFormat;
case 'norwegianBban':
default:
return norwegianBbanMaskNoFormat;
}
}
switch (bankAccountType) {
case 'swedishBban':
return swedishBbanMask;
case 'swedishBankgiro':
return buildSwedishBankgiroMask(value);
case 'swedishPlusgiro':
return buildSwedishPlusgiroMask(value);
case 'iban':
return ibanMask;
case 'norwegianBban':
default:
return norwegianBbanMask;
}
}
export function getInputMode(bankAccountType) {
if (bankAccountType === 'iban') {
return 'text';
}
return 'numeric';
}
export function getWidth(bankAccountType) {
switch (bankAccountType) {
case 'iban':
return 'large';
default:
return 'medium';
}
}
export function hasVariableMask(bankAccountType) {
return bankAccountType === 'swedishBankgiro' || bankAccountType === 'swedishPlusgiro';
}
//# sourceMappingURL=masks.js.map