UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

62 lines (61 loc) 2.02 kB
"use strict"; 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