@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
30 lines • 878 B
JavaScript
export function norwegianOrgNumberValidator(value, errorMessages) {
if (value !== undefined) {
const orgNoIs9Digits = value?.length === 9;
if (!orgNoIs9Digits) {
return Error(errorMessages.errorOrgNoLength);
}
if (orgNoIs9Digits && !isValidOrgNumber(value)) {
return Error(errorMessages.errorOrgNo);
}
}
return undefined;
}
function isValidOrgNumber(digits) {
if (parseFloat(digits) === 0) {
return false;
}
let checkDigit = 2;
let sum = 0;
for (let i = digits.length - 2; i >= 0; --i) {
sum += parseInt(digits.charAt(i), 10) * checkDigit;
checkDigit += 1;
if (checkDigit > 7) {
checkDigit = 2;
}
}
const result = 11 - sum % 11;
const finalCheckDigit = result === 11 ? 0 : result;
return parseInt(digits.charAt(digits.length - 1), 10) === finalCheckDigit;
}
//# sourceMappingURL=validators.js.map