UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

105 lines 3.11 kB
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