UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

39 lines 5.58 kB
import { NG_VALIDATORS } from '@angular/forms'; import { Directive } from '@angular/core'; import { parsePhoneNumberFromString } from 'libphonenumber-js/max'; import * as i0 from "@angular/core"; export class PhoneValidationDirective { validate(control) { return validateInternationalPhoneNumber()(control); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PhoneValidationDirective, selector: "[c8yPhoneValidation]", providers: [{ provide: NG_VALIDATORS, useExisting: PhoneValidationDirective, multi: true }], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneValidationDirective, decorators: [{ type: Directive, args: [{ selector: '[c8yPhoneValidation]', providers: [{ provide: NG_VALIDATORS, useExisting: PhoneValidationDirective, multi: true }] }] }] }); export function validateInternationalPhoneNumber() { const allowedCharactersPattern = /^[/\d\-+ ]*$/; return (control) => { let numberValid; try { const phoneNumber = parsePhoneNumberFromString(control.value); numberValid = allowedCharactersPattern.test(control.value) && phoneNumber.isValid(); if (numberValid && control.value !== phoneNumber.format('E.164')) { control.setValue(phoneNumber.format('E.164'), { emitEvent: false, emitModelToViewChange: false }); } } catch (e) { numberValid = !control.value; } return numberValid ? null : { internationalPhoneNumber: true }; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtdmFsaWRhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Zvcm1zL3Bob25lLXZhbGlkYXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBS2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU1uRSxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLGdDQUFnQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQzsrR0FIVSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwrQ0FGeEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7NEZBRWhGLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVywwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzVGOztBQU1ELE1BQU0sVUFBVSxnQ0FBZ0M7SUFDOUMsTUFBTSx3QkFBd0IsR0FBRyxjQUFjLENBQUM7SUFDaEQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxXQUFXLENBQUM7UUFFaEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELFdBQVcsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwRixJQUFJLFdBQVcsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUM1QyxTQUFTLEVBQUUsS0FBSztvQkFDaEIscUJBQXFCLEVBQUUsS0FBSztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsV0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqRSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTkdfVkFMSURBVE9SUyxcbiAgQWJzdHJhY3RDb250cm9sLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0aW9uRXJyb3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGFyc2VQaG9uZU51bWJlckZyb21TdHJpbmcgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcy9tYXgnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYzh5UGhvbmVWYWxpZGF0aW9uXScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IFBob25lVmFsaWRhdGlvbkRpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgUGhvbmVWYWxpZGF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWxpZGF0ZUludGVybmF0aW9uYWxQaG9uZU51bWJlcigpKGNvbnRyb2wpO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVJbnRlcm5hdGlvbmFsUGhvbmVOdW1iZXIoKTogVmFsaWRhdG9yRm4ge1xuICBjb25zdCBhbGxvd2VkQ2hhcmFjdGVyc1BhdHRlcm4gPSAvXlsvXFxkXFwtKyBdKiQvO1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgbnVtYmVyVmFsaWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGhvbmVOdW1iZXIgPSBwYXJzZVBob25lTnVtYmVyRnJvbVN0cmluZyhjb250cm9sLnZhbHVlKTtcbiAgICAgIG51bWJlclZhbGlkID0gYWxsb3dlZENoYXJhY3RlcnNQYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSkgJiYgcGhvbmVOdW1iZXIuaXNWYWxpZCgpO1xuICAgICAgaWYgKG51bWJlclZhbGlkICYmIGNvbnRyb2wudmFsdWUgIT09IHBob25lTnVtYmVyLmZvcm1hdCgnRS4xNjQnKSkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKHBob25lTnVtYmVyLmZvcm1hdCgnRS4xNjQnKSwge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBudW1iZXJWYWxpZCA9ICFjb250cm9sLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW1iZXJWYWxpZCA/IG51bGwgOiB7IGludGVybmF0aW9uYWxQaG9uZU51bWJlcjogdHJ1ZSB9O1xuICB9O1xufVxuIl19