@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
32 lines • 4.15 kB
JavaScript
const REGEXP_PHONE_NUMBER = /^\(?(\+\d{2})?\)?\s?0?(\d(\s?\d{2}){4})$/;
/**
* Teste si le numéro de téléphone correspond au pattern (soit celui de l'input, soit un pattern par défaut)
*/
export function isPhoneNumberValid(value, pattern) {
if (!value)
return false;
const regexp = pattern ? new RegExp(pattern) : REGEXP_PHONE_NUMBER;
const matchArr = regexp.exec(value);
return matchArr ? true : false;
}
/**
* Formatage du n° de téléphone.
* Le formatage ne se fait que dans le cas où on utilise le pattern par défaut
*/
export function formatPhoneNumber(value, pattern) {
if (!value)
return '';
if (pattern)
return value;
const regexp = REGEXP_PHONE_NUMBER;
const matchArr = regexp.exec(value);
if (!matchArr)
return value;
let num = value;
let country = matchArr[1];
num = matchArr[2].replace(/ /g, '');
num = num.replace(/(\d)(\d{2})(\d{2})(\d{2})(\d{2})/, '$1 $2 $3 $4 $5');
num = country ? `(${country}) ${num}` : `0${num}`;
return num;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zL2Zvcm0tdGVsL3Bob25lLW51bWJlci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLG1CQUFtQixHQUFHLDBDQUEwQyxDQUFDO0FBRXZFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQXlCLEVBQUUsT0FBZ0I7SUFDNUUsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV6QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztJQUNuRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQXlCLEVBQUUsT0FBZ0I7SUFDM0UsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN0QixJQUFJLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUUxQixNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFNUIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNsRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBSRUdFWFBfUEhPTkVfTlVNQkVSID0gL15cXCg/KFxcK1xcZHsyfSk/XFwpP1xccz8wPyhcXGQoXFxzP1xcZHsyfSl7NH0pJC87XG5cbi8qKlxuICogVGVzdGUgc2kgbGUgbnVtw6lybyBkZSB0w6lsw6lwaG9uZSBjb3JyZXNwb25kIGF1IHBhdHRlcm4gKHNvaXQgY2VsdWkgZGUgbCdpbnB1dCwgc29pdCB1biBwYXR0ZXJuIHBhciBkw6lmYXV0KVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQaG9uZU51bWJlclZhbGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBhdHRlcm4/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHJlZ2V4cCA9IHBhdHRlcm4gPyBuZXcgUmVnRXhwKHBhdHRlcm4pIDogUkVHRVhQX1BIT05FX05VTUJFUjtcbiAgY29uc3QgbWF0Y2hBcnIgPSByZWdleHAuZXhlYyh2YWx1ZSk7XG4gIHJldHVybiBtYXRjaEFyciA/IHRydWUgOiBmYWxzZTtcbn1cblxuLyoqXG4gKiBGb3JtYXRhZ2UgZHUgbsKwIGRlIHTDqWzDqXBob25lLlxuICogTGUgZm9ybWF0YWdlIG5lIHNlIGZhaXQgcXVlIGRhbnMgbGUgY2FzIG/DuSBvbiB1dGlsaXNlIGxlIHBhdHRlcm4gcGFyIGTDqWZhdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBob25lTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBhdHRlcm4/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gIGlmIChwYXR0ZXJuKSByZXR1cm4gdmFsdWU7XG5cbiAgY29uc3QgcmVnZXhwID0gUkVHRVhQX1BIT05FX05VTUJFUjtcbiAgY29uc3QgbWF0Y2hBcnIgPSByZWdleHAuZXhlYyh2YWx1ZSk7XG4gIGlmICghbWF0Y2hBcnIpIHJldHVybiB2YWx1ZTtcblxuICBsZXQgbnVtID0gdmFsdWU7XG4gIGxldCBjb3VudHJ5ID0gbWF0Y2hBcnJbMV07XG4gIG51bSA9IG1hdGNoQXJyWzJdLnJlcGxhY2UoLyAvZywgJycpO1xuICBudW0gPSBudW0ucmVwbGFjZSgvKFxcZCkoXFxkezJ9KShcXGR7Mn0pKFxcZHsyfSkoXFxkezJ9KS8sICckMSAkMiAkMyAkNCAkNScpO1xuICBudW0gPSBjb3VudHJ5ID8gYCgke2NvdW50cnl9KSAke251bX1gIDogYDAke251bX1gO1xuICByZXR1cm4gbnVtO1xufVxuIl19