@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
62 lines (61 loc) • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.formatPhoneNumber = void 0;
var _constants = require("./constants.js");
var _formatCore = require("./formatCore.js");
var _detectCountryCode = _interopRequireDefault(require("../../../shared/detectCountryCode.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const formatPhoneNumberParts = (number, locale = null) => {
if ((0, _constants.isAbsent)(number)) {
return {
number: _constants.ABSENT_VALUE_FORMAT,
aria: _constants.ABSENT_VALUE_FORMAT
};
}
let display = String(number);
let aria = null;
let num;
switch (locale) {
default:
{
let code = '';
num = String(number);
const normalized = num.replace(/[\s-]/g, '');
const detected = (0, _detectCountryCode.default)(normalized);
if (detected) {
code = `${detected.countryCode} `;
num = detected.phoneNumber;
}
num = num.replace(/[^+\d]/g, '');
const length = num.length;
if (length === 0) {
display = String(display);
break;
}
if (code.includes('-')) {
code = code.replace(/(\+[\d]{1,2})-([\d]{1,6})/, '$1 ($2)');
}
if (length === 8 && num.substring(0, 1) === '8') {
display = code + num.split(/([\d]{3})([\d]{2})/).filter(s => s).join(' ');
} else {
if (length < 6) {
display = code + num;
} else {
display = code + num.split(length === 6 ? /^(\+[\d]{2})|([\d]{3})/ : /^(\+[\d]{2})|([\d]{2})/).filter(s => s).join(' ');
}
}
aria = code + num.split(/([\d]{2})/).filter(s => s).join(' ');
}
}
if (aria === null) {
aria = display;
}
return {
number: display,
aria
};
};
const formatPhoneNumber = exports.formatPhoneNumber = (0, _formatCore.formatWith)('phone', formatPhoneNumberParts);
//# sourceMappingURL=formatPhoneNumber.js.map