UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

55 lines 1.72 kB
import { ABSENT_VALUE_FORMAT, isAbsent } from "./constants.js"; import { formatWith } from "./formatCore.js"; import detectCountryCode from "../../../shared/detectCountryCode.js"; const formatPhoneNumberParts = (number, locale = null) => { if (isAbsent(number)) { return { number: ABSENT_VALUE_FORMAT, aria: 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 = detectCountryCode(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 }; }; export const formatPhoneNumber = formatWith('phone', formatPhoneNumberParts); //# sourceMappingURL=formatPhoneNumber.js.map