asksuite-citrus 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/assets/citrus-i18n/en.json +2 -0
  2. package/assets/citrus-i18n/es.json +2 -0
  3. package/assets/citrus-i18n/pt.json +2 -0
  4. package/esm2022/lib/asksuite-citrus.module.mjs +31 -4
  5. package/esm2022/lib/components/input/input.component.mjs +15 -3
  6. package/esm2022/lib/components/phone-ddi/phone-ddi.component.mjs +167 -0
  7. package/esm2022/lib/services/phone-ddi/phone-validation.service.mjs +42 -0
  8. package/esm2022/public-api.mjs +6 -1
  9. package/esm2022/shared/helpers/filter.helper.mjs +20 -0
  10. package/esm2022/shared/providers/flag.provider.mjs +3 -0
  11. package/esm2022/shared/services/country-flag.service.mjs +84 -0
  12. package/esm2022/shared/utils/phone-mask-pattern.mjs +25 -0
  13. package/esm2022/shared/utils/regex.mjs +3 -0
  14. package/esm2022/shared/validators/phone-mask.validator.mjs +35 -0
  15. package/fesm2022/asksuite-citrus.mjs +408 -24
  16. package/fesm2022/asksuite-citrus.mjs.map +1 -1
  17. package/lib/asksuite-citrus.module.d.ts +40 -34
  18. package/lib/components/input/input.component.d.ts +5 -1
  19. package/lib/components/phone-ddi/phone-ddi.component.d.ts +54 -0
  20. package/lib/services/phone-ddi/phone-validation.service.d.ts +9 -0
  21. package/package.json +3 -2
  22. package/public-api.d.ts +3 -0
  23. package/shared/helpers/filter.helper.d.ts +7 -0
  24. package/shared/providers/flag.provider.d.ts +13 -0
  25. package/shared/services/country-flag.service.d.ts +20 -0
  26. package/shared/utils/phone-mask-pattern.d.ts +24 -0
  27. package/shared/utils/regex.d.ts +2 -0
  28. package/shared/validators/phone-mask.validator.d.ts +13 -0
  29. package/styles/colors.scss +1 -0
@@ -0,0 +1,167 @@
1
+ import { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, forwardRef, HostListener, inject, Input, Output, ViewChild, ViewChildren, } from '@angular/core';
2
+ import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { TemplatePortal } from "@angular/cdk/portal";
4
+ import { debounceTime, map } from "rxjs";
5
+ import { AskDropdownDirective } from "../../directives";
6
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
7
+ import { filterSelectedList } from "../../../shared/helpers/filter.helper";
8
+ import CountryFlagService from "../../../shared/services/country-flag.service";
9
+ import { NON_DIGIT_REGEX } from "../../../shared/utils/regex";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/cdk/overlay";
12
+ import * as i2 from "@angular/common";
13
+ import * as i3 from "@angular/forms";
14
+ import * as i4 from "../input/input.component";
15
+ import * as i5 from "../skeleton/skeleton.component";
16
+ import * as i6 from "../../directives/autofocus/autofocus.directive";
17
+ import * as i7 from "../../directives/scroll/scroll.directive";
18
+ import * as i8 from "@ngx-translate/core";
19
+ const valueAccessor = {
20
+ provide: NG_VALUE_ACCESSOR,
21
+ multi: true,
22
+ useExisting: forwardRef(() => PhoneDdiComponent),
23
+ };
24
+ export class PhoneDdiComponent {
25
+ constructor(change, overlay, viewContainerRef, countryFlagService) {
26
+ this.change = change;
27
+ this.overlay = overlay;
28
+ this.viewContainerRef = viewContainerRef;
29
+ this.countryFlagService = countryFlagService;
30
+ this.disabled = false;
31
+ this.value = '';
32
+ this.valueChange = new EventEmitter();
33
+ this.onChangeFlag = new EventEmitter();
34
+ this.countryItems = [];
35
+ this.closed = true;
36
+ this.inputControl = new FormControl({ value: '', disabled: this.disabled });
37
+ this.searchFieldControl = new FormControl("");
38
+ this.filteredOptions = [];
39
+ this.isValid = true;
40
+ this._destroy = inject(DestroyRef);
41
+ this.displayFn = (countryFlag) => `${countryFlag.countryName} (${countryFlag.code})`;
42
+ this.filterFn = (search) => filterSelectedList(this.countryItems, search, ['code', 'countryName']);
43
+ }
44
+ ngAfterViewInit() {
45
+ this.countryFlagService.list().subscribe(this.addAvailableFlags.bind(this));
46
+ this.handleInputChange();
47
+ }
48
+ handleOptionSelected(item) {
49
+ this.selectedFlag = item;
50
+ this.hideOptions();
51
+ this.inputControl.setValue('');
52
+ this.searchFieldControl.setValue('');
53
+ this.onChange('');
54
+ this.onChangeFlag.emit(this.selectedFlag);
55
+ this.change.detectChanges();
56
+ }
57
+ display(option) {
58
+ return this.displayFn(option);
59
+ }
60
+ handleClick(event) {
61
+ if (!this.closed
62
+ && !this.wrapper?.nativeElement.contains(event.target)
63
+ && !this.menuContainer?.nativeElement.contains(event.target)) {
64
+ this.hideOptions();
65
+ }
66
+ }
67
+ handleFlagClick(event) {
68
+ event?.stopPropagation();
69
+ if (!this.disabled) {
70
+ this.closed
71
+ ? this.showOptions()
72
+ : this.hideOptions();
73
+ }
74
+ this.change.detectChanges();
75
+ }
76
+ showOptions() {
77
+ this.closed = false;
78
+ if (this.phoneContainer) {
79
+ this._overlayRef = this.getOverlayConfig(this.phoneContainer);
80
+ this._portal = new TemplatePortal(this.overlayContent, this.viewContainerRef);
81
+ }
82
+ this._overlayRef?.attach(this._portal);
83
+ }
84
+ hideOptions() {
85
+ this.closed = true;
86
+ this.searchFieldControl.setValue('');
87
+ this._overlayRef?.detach();
88
+ this.change.detectChanges();
89
+ this.scrollSub?.unsubscribe();
90
+ }
91
+ onChangePhoneNumber(e) {
92
+ const newValue = e.target.value?.replace(NON_DIGIT_REGEX, '');
93
+ if (this.value !== newValue) {
94
+ this.onChange(newValue);
95
+ }
96
+ }
97
+ registerOnChange(fn) {
98
+ this.onChange = fn;
99
+ }
100
+ registerOnTouched(fn) {
101
+ this.onTouch = fn;
102
+ }
103
+ writeValue(value) {
104
+ this.value = value;
105
+ this.inputControl.setValue(value);
106
+ this.valueChange.emit(this.value);
107
+ }
108
+ addAvailableFlags(data) {
109
+ this.countryItems = data;
110
+ this.filteredOptions = this.countryItems;
111
+ this.selectedFlag = this.countryFlagService.getDefaultCountryFlag(data);
112
+ this.onChangeFlag.emit(this.selectedFlag);
113
+ this.change.detectChanges();
114
+ }
115
+ handleInputChange() {
116
+ this.searchFieldControl.valueChanges.pipe(takeUntilDestroyed(this._destroy), debounceTime(300), map(value => this.filterFn(value || ''))).subscribe(items => {
117
+ this.filteredOptions = items;
118
+ });
119
+ }
120
+ getOverlayConfig(wrapper) {
121
+ return this.overlay.create({
122
+ width: wrapper.nativeElement.offsetWidth,
123
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
124
+ positionStrategy: this.overlay.position()
125
+ .flexibleConnectedTo(wrapper.nativeElement)
126
+ .withPositions([{
127
+ originX: "start",
128
+ originY: "bottom",
129
+ overlayX: "start",
130
+ overlayY: "top",
131
+ }])
132
+ });
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneDdiComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: CountryFlagService }], target: i0.ɵɵFactoryTarget.Component }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PhoneDdiComponent, selector: "ask-phone-ddi", inputs: { disabled: "disabled", value: "value" }, outputs: { valueChange: "valueChange", onChangeFlag: "onChangeFlag" }, host: { listeners: { "window:click": "handleClick($event)" } }, providers: [valueAccessor], viewQueries: [{ propertyName: "phoneContainer", first: true, predicate: ["phoneContainer"], descendants: true }, { propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "menuContainer", first: true, predicate: ["menuContainer"], descendants: true }, { propertyName: "overlayContent", first: true, predicate: ["overlayContent"], descendants: true }, { propertyName: "dropdownList", predicate: AskDropdownDirective, descendants: true }], ngImport: i0, template: "<div #phoneContainer [style]=\"{cursor: disabled ? 'not-allowed' : 'auto'}\" class=\"phone-ddi\">\n\n <div\n #wrapper\n (click)=\"handleFlagClick()\"\n *ngIf=\"selectedFlag\"\n [style]=\"{cursor: !disabled ? 'pointer' : 'not-allowed'}\"\n class=\"flag\"\n data-testid=\"flag\">\n\n <div [style]=\"{backgroundPosition: this.selectedFlag?.backgroundPosition}\" class=\"flag-icon\"></div>\n <div class=\"flag-arrow\"></div>\n </div>\n\n\n <ask-input\n (input)=\"onChangePhoneNumber($event)\"\n *ngIf=\"selectedFlag; else loadingPhoneInput\"\n [disabled]=\"disabled\"\n [extraPadding]=\"true\"\n [formControl]=\"inputControl\"\n [isClosed]=\"closed\"\n [mask]=\"selectedFlag.mask\"\n [placeholder]=\"'PHONE_PLACEHOLDER' | translate\"\n [valuePrefix]=\"selectedFlag.code + ' '\"\n class=\"phone\"\n />\n\n <ng-template #loadingPhoneInput>\n <div class=\"skeleton\">\n <ask-skeleton [barsHeight]=\"24\" [radius]=\"10\" style=\"height: 24px;\"/>\n </div>\n </ng-template>\n\n</div>\n\n<ng-template #overlayContent>\n <div #menuContainer class=\"menu-container\">\n <div [style]=\"{padding: '8px'}\">\n <ask-input\n [formControl]=\"searchFieldControl\"\n [placeholder]=\"'FIND_DDI_OR_COUNTRY' | translate\"\n askAutofocus\n class=\"search\"\n />\n </div>\n\n <ng-container *ngIf=\"!filteredOptions.length; else list\">\n <span class=\"empty\">{{\n 'NO_OPTIONS' | translate\n }}</span>\n </ng-container>\n\n <ng-template #list>\n <div [askScrollThreshold]=\"50\" askScroll class=\"list\">\n <ng-container *ngFor=\"let countryItem of filteredOptions\">\n <div\n (click)=\"handleOptionSelected(countryItem)\"\n class=\"option-item\"\n >\n <div [style]=\"{backgroundPosition: countryItem.backgroundPosition}\" class=\"country\"></div>\n <p class=\"text\">{{ display(countryItem) }}</p>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: ["@import\"https://cdn.quilljs.com/1.0.0/quill.core.css\";:root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis,.option-item>.text,.option-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-text-button{padding:8px 16px;border:none;border-radius:4px;outline:none;background:none;color:var(--asksuite-orange);font-size:1rem;font-weight:500;cursor:pointer;transition:all .3ms}.ask-text-button:hover{text-decoration:none;background:#F5F7FA}.ask-text-button:disabled{cursor:not-allowed;color:#9aa5b1}.ask-text-button.-primary{color:var(--asksuite-orange)}.ask-text-button.-secondary{color:#616e7c}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.ql-editor{padding:14px 16px;font-size:.875rem;word-break:break-word}.bubble-toolbox{position:absolute;background-color:var(--grey-800);border-radius:8px;z-index:999}.top-toolbox{background-color:var(--grey-100)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.phone-ddi{position:relative;width:100%;display:flex;align-items:center}.phone-ddi>.flag{position:relative;display:flex;padding-left:15px;z-index:1;align-items:center;cursor:pointer}.phone-ddi>.phone,.phone-ddi>.skeleton{margin-left:-46px;width:100%}.phone-ddi>.skeleton{border:1px solid var(--grey-200);border-radius:4px;padding:11px 14px}.flag-icon{background-image:url(https://cdn.asksuite.com/flags.png);box-shadow:0 0 1px #888;background-repeat:no-repeat;background-color:#dbdbdb;height:14px;width:20px}.flag-arrow{margin-left:6px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.menu-container{display:flex;flex-direction:column;width:100%;background:white;max-height:201px;border:1px solid #CBD2D9;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none}.menu-container>.search{font-style:inherit;width:100%;border:none;height:100%}.menu-container>.search:focus{outline:none}.menu-container>.search::placeholder{opacity:.6}.menu-container>.empty{text-align:center;width:100%;padding:8px}.menu-container>.list{min-height:1rem;overflow-y:scroll;max-height:100%}.option-item{display:flex;align-items:center;height:36px;width:100%;padding-left:8px}.option-item.-highlighted{background-color:#e4e7eb}.option-item:hover{cursor:pointer;background-color:#f5f7fa}.option-item>.country{background-image:url(https://cdn.asksuite.com/flags.png);box-shadow:0 0 1px #888;background-repeat:no-repeat;background-color:#dbdbdb;height:14px;width:20px}.option-item>.text{padding-left:8px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.InputComponent, selector: "ask-input", inputs: ["value", "type", "variation", "placeholder", "leftIcon", "rightIcon", "disabled", "noBorder", "extraPadding", "isClosed", "mask", "valuePrefix", "iconColor"], outputs: ["valueChange", "change", "input", "click", "focus", "blur", "leftIconClick", "rightIconClick"] }, { kind: "component", type: i5.SkeletonComponent, selector: "ask-skeleton", inputs: ["barsHeight", "radius", "customTheme", "appearance"] }, { kind: "directive", type: i6.AutofocusDirective, selector: "[askAutofocus]" }, { kind: "directive", type: i7.ScrollDirective, selector: "[askScroll]", inputs: ["askScrollThreshold"], outputs: ["scrollEnd"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
136
+ }
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneDdiComponent, decorators: [{
138
+ type: Component,
139
+ args: [{ selector: 'ask-phone-ddi', providers: [valueAccessor], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #phoneContainer [style]=\"{cursor: disabled ? 'not-allowed' : 'auto'}\" class=\"phone-ddi\">\n\n <div\n #wrapper\n (click)=\"handleFlagClick()\"\n *ngIf=\"selectedFlag\"\n [style]=\"{cursor: !disabled ? 'pointer' : 'not-allowed'}\"\n class=\"flag\"\n data-testid=\"flag\">\n\n <div [style]=\"{backgroundPosition: this.selectedFlag?.backgroundPosition}\" class=\"flag-icon\"></div>\n <div class=\"flag-arrow\"></div>\n </div>\n\n\n <ask-input\n (input)=\"onChangePhoneNumber($event)\"\n *ngIf=\"selectedFlag; else loadingPhoneInput\"\n [disabled]=\"disabled\"\n [extraPadding]=\"true\"\n [formControl]=\"inputControl\"\n [isClosed]=\"closed\"\n [mask]=\"selectedFlag.mask\"\n [placeholder]=\"'PHONE_PLACEHOLDER' | translate\"\n [valuePrefix]=\"selectedFlag.code + ' '\"\n class=\"phone\"\n />\n\n <ng-template #loadingPhoneInput>\n <div class=\"skeleton\">\n <ask-skeleton [barsHeight]=\"24\" [radius]=\"10\" style=\"height: 24px;\"/>\n </div>\n </ng-template>\n\n</div>\n\n<ng-template #overlayContent>\n <div #menuContainer class=\"menu-container\">\n <div [style]=\"{padding: '8px'}\">\n <ask-input\n [formControl]=\"searchFieldControl\"\n [placeholder]=\"'FIND_DDI_OR_COUNTRY' | translate\"\n askAutofocus\n class=\"search\"\n />\n </div>\n\n <ng-container *ngIf=\"!filteredOptions.length; else list\">\n <span class=\"empty\">{{\n 'NO_OPTIONS' | translate\n }}</span>\n </ng-container>\n\n <ng-template #list>\n <div [askScrollThreshold]=\"50\" askScroll class=\"list\">\n <ng-container *ngFor=\"let countryItem of filteredOptions\">\n <div\n (click)=\"handleOptionSelected(countryItem)\"\n class=\"option-item\"\n >\n <div [style]=\"{backgroundPosition: countryItem.backgroundPosition}\" class=\"country\"></div>\n <p class=\"text\">{{ display(countryItem) }}</p>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: ["@import\"https://cdn.quilljs.com/1.0.0/quill.core.css\";:root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis,.option-item>.text,.option-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-text-button{padding:8px 16px;border:none;border-radius:4px;outline:none;background:none;color:var(--asksuite-orange);font-size:1rem;font-weight:500;cursor:pointer;transition:all .3ms}.ask-text-button:hover{text-decoration:none;background:#F5F7FA}.ask-text-button:disabled{cursor:not-allowed;color:#9aa5b1}.ask-text-button.-primary{color:var(--asksuite-orange)}.ask-text-button.-secondary{color:#616e7c}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.ql-editor{padding:14px 16px;font-size:.875rem;word-break:break-word}.bubble-toolbox{position:absolute;background-color:var(--grey-800);border-radius:8px;z-index:999}.top-toolbox{background-color:var(--grey-100)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.phone-ddi{position:relative;width:100%;display:flex;align-items:center}.phone-ddi>.flag{position:relative;display:flex;padding-left:15px;z-index:1;align-items:center;cursor:pointer}.phone-ddi>.phone,.phone-ddi>.skeleton{margin-left:-46px;width:100%}.phone-ddi>.skeleton{border:1px solid var(--grey-200);border-radius:4px;padding:11px 14px}.flag-icon{background-image:url(https://cdn.asksuite.com/flags.png);box-shadow:0 0 1px #888;background-repeat:no-repeat;background-color:#dbdbdb;height:14px;width:20px}.flag-arrow{margin-left:6px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.menu-container{display:flex;flex-direction:column;width:100%;background:white;max-height:201px;border:1px solid #CBD2D9;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none}.menu-container>.search{font-style:inherit;width:100%;border:none;height:100%}.menu-container>.search:focus{outline:none}.menu-container>.search::placeholder{opacity:.6}.menu-container>.empty{text-align:center;width:100%;padding:8px}.menu-container>.list{min-height:1rem;overflow-y:scroll;max-height:100%}.option-item{display:flex;align-items:center;height:36px;width:100%;padding-left:8px}.option-item.-highlighted{background-color:#e4e7eb}.option-item:hover{cursor:pointer;background-color:#f5f7fa}.option-item>.country{background-image:url(https://cdn.asksuite.com/flags.png);box-shadow:0 0 1px #888;background-repeat:no-repeat;background-color:#dbdbdb;height:14px;width:20px}.option-item>.text{padding-left:8px}\n"] }]
140
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: CountryFlagService }]; }, propDecorators: { disabled: [{
141
+ type: Input
142
+ }], value: [{
143
+ type: Input
144
+ }], valueChange: [{
145
+ type: Output
146
+ }], onChangeFlag: [{
147
+ type: Output
148
+ }], phoneContainer: [{
149
+ type: ViewChild,
150
+ args: ['phoneContainer']
151
+ }], wrapper: [{
152
+ type: ViewChild,
153
+ args: ['wrapper']
154
+ }], menuContainer: [{
155
+ type: ViewChild,
156
+ args: ["menuContainer"]
157
+ }], overlayContent: [{
158
+ type: ViewChild,
159
+ args: ['overlayContent']
160
+ }], dropdownList: [{
161
+ type: ViewChildren,
162
+ args: [AskDropdownDirective]
163
+ }], handleClick: [{
164
+ type: HostListener,
165
+ args: ["window:click", ['$event']]
166
+ }] } });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZGRpLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2NvbXBvbmVudHMvcGhvbmUtZGRpL3Bob25lLWRkaS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL3Bob25lLWRkaS9waG9uZS1kZGkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUlOLFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixXQUFXLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxrQkFBa0IsTUFBTSwrQ0FBK0MsQ0FBQztBQUUvRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7QUFFNUQsTUFBTSxhQUFhLEdBQWE7SUFDOUIsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixLQUFLLEVBQUUsSUFBSTtJQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FB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YyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VGVtcGxhdGVQb3J0YWx9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQge092ZXJsYXksIE92ZXJsYXlSZWZ9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtBc2tEcm9wZG93bkRpcmVjdGl2ZX0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXNcIjtcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7ZmlsdGVyU2VsZWN0ZWRMaXN0fSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL2hlbHBlcnMvZmlsdGVyLmhlbHBlclwiO1xuaW1wb3J0IENvdW50cnlGbGFnU2VydmljZSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2NvdW50cnktZmxhZy5zZXJ2aWNlXCI7XG5pbXBvcnQge0NvdW50cnlEYXRhfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL3Byb3ZpZGVycy9mbGFnLnByb3ZpZGVyXCI7XG5pbXBvcnQge05PTl9ESUdJVF9SRUdFWH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC91dGlscy9yZWdleFwiO1xuXG5jb25zdCB2YWx1ZUFjY2Vzc29yOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIG11bHRpOiB0cnVlLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQaG9uZURkaUNvbXBvbmVudCksXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhc2stcGhvbmUtZGRpJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bob25lLWRkaS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bob25lLWRkaS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt2YWx1ZUFjY2Vzc29yXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGhvbmVEZGlDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2VGbGFnID0gbmV3IEV2ZW50RW1pdHRlcjxDb3VudHJ5RGF0YT4oKTtcblxuICBAVmlld0NoaWxkKCdwaG9uZUNvbnRhaW5lcicpIHBob25lQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnd3JhcHBlcicpIHdyYXBwZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKFwibWVudUNvbnRhaW5lclwiKSBtZW51Q29udGFpbmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnb3ZlcmxheUNvbnRlbnQnKSBvdmVybGF5Q29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGRyZW4oQXNrRHJvcGRvd25EaXJlY3RpdmUpXG4gIGRyb3Bkb3duTGlzdD86IFF1ZXJ5TGlzdDxBc2tEcm9wZG93bkRpcmVjdGl2ZT47XG5cbiAgc2VsZWN0ZWRGbGFnPzogQ291bnRyeURhdGE7XG4gIGNvdW50cnlJdGVtczogQ291bnRyeURhdGFbXSA9IFtdXG4gIG9uQ2hhbmdlITogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICBvblRvdWNoITogKCkgPT4gdm9pZDtcbiAgcHJvdGVjdGVkIGNsb3NlZCA9IHRydWU7XG4gIHByb3RlY3RlZCBpbnB1dENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWR9KVxuICBwcm90ZWN0ZWQgc2VhcmNoRmllbGRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiXCIpXG4gIHByb3RlY3RlZCBmaWx0ZXJlZE9wdGlvbnM6IGFueVtdID0gW11cbiAgcHJvdGVjdGVkIGlzVmFsaWQgPSB0cnVlO1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9wb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2Rlc3Ryb3kgPSBpbmplY3QoRGVzdHJveVJlZilcbiAgcHJpdmF0ZSBzY3JvbGxTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2U6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjb3VudHJ5RmxhZ1NlcnZpY2U6IENvdW50cnlGbGFnU2VydmljZVxuICApIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNvdW50cnlGbGFnU2VydmljZS5saXN0KCkuc3Vic2NyaWJlKHRoaXMuYWRkQXZhaWxhYmxlRmxhZ3MuYmluZCh0aGlzKSlcbiAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlKCk7XG4gIH1cblxuICBoYW5kbGVPcHRpb25TZWxlY3RlZChpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IGl0ZW07XG4gICAgdGhpcy5oaWRlT3B0aW9ucygpO1xuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLnNlYXJjaEZpZWxkQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5vbkNoYW5nZSgnJyk7XG4gICAgdGhpcy5vbkNoYW5nZUZsYWcuZW1pdCh0aGlzLnNlbGVjdGVkRmxhZyk7XG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZGlzcGxheShvcHRpb246IGFueSkge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlGbihvcHRpb24pXG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwid2luZG93OmNsaWNrXCIsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuY2xvc2VkXG4gICAgICAmJiAhdGhpcy53cmFwcGVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICYmICF0aGlzLm1lbnVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5oaWRlT3B0aW9ucygpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRmxhZ0NsaWNrKGV2ZW50PzogRXZlbnQpIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xvc2VkXG4gICAgICAgID8gdGhpcy5zaG93T3B0aW9ucygpXG4gICAgICAgIDogdGhpcy5oaWRlT3B0aW9ucygpXG4gICAgfVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgc2hvd09wdGlvbnMoKSB7XG4gICAgdGhpcy5jbG9zZWQgPSBmYWxzZVxuICAgIGlmICh0aGlzLnBob25lQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKHRoaXMucGhvbmVDb250YWluZXIpXG5cbiAgICAgIHRoaXMuX3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm92ZXJsYXlDb250ZW50ISwgdGhpcy52aWV3Q29udGFpbmVyUmVmKVxuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xuICB9XG5cbiAgaGlkZU9wdGlvbnMoKSB7XG4gICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuc2VhcmNoRmllbGRDb250cm9sLnNldFZhbHVlKCcnKVxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gICAgdGhpcy5zY3JvbGxTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvbkNoYW5nZVBob25lTnVtYmVyKGU6IGFueSkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gZS50YXJnZXQudmFsdWU/LnJlcGxhY2UoTk9OX0RJR0lUX1JFR0VYLCAnJyk7XG5cbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzcGxheUZuID0gKGNvdW50cnlGbGFnOiBhbnkpID0+IGAke2NvdW50cnlGbGFnLmNvdW50cnlOYW1lfSAoJHtjb3VudHJ5RmxhZy5jb2RlfSlgO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJGbiA9IChzZWFyY2g6IHN0cmluZykgPT5cbiAgICBmaWx0ZXJTZWxlY3RlZExpc3QodGhpcy5jb3VudHJ5SXRlbXMsIHNlYXJjaCwgWydjb2RlJywgJ2NvdW50cnlOYW1lJ10pO1xuXG4gIHByaXZhdGUgYWRkQXZhaWxhYmxlRmxhZ3MoZGF0YTogQ291bnRyeURhdGFbXSkge1xuICAgIHRoaXMuY291bnRyeUl0ZW1zID0gZGF0YTtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuY291bnRyeUl0ZW1zO1xuICAgIHRoaXMuc2VsZWN0ZWRGbGFnID0gdGhpcy5jb3VudHJ5RmxhZ1NlcnZpY2UuZ2V0RGVmYXVsdENvdW50cnlGbGFnKGRhdGEpO1xuICAgIHRoaXMub25DaGFuZ2VGbGFnLmVtaXQodGhpcy5zZWxlY3RlZEZsYWcpO1xuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSW5wdXRDaGFuZ2UoKSB7XG4gICAgdGhpcy5zZWFyY2hGaWVsZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveSksXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLmZpbHRlckZuKHZhbHVlIHx8ICcnKSlcbiAgICApLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGl0ZW1zXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyh3cmFwcGVyOiBFbGVtZW50UmVmKSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgd2lkdGg6IHdyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh3cmFwcGVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIC53aXRoUG9zaXRpb25zKFt7XG4gICAgICAgICAgb3JpZ2luWDogXCJzdGFydFwiLFxuICAgICAgICAgIG9yaWdpblk6IFwiYm90dG9tXCIsXG4gICAgICAgICAgb3ZlcmxheVg6IFwic3RhcnRcIixcbiAgICAgICAgICBvdmVybGF5WTogXCJ0b3BcIixcbiAgICAgICAgfV0pXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgI3Bob25lQ29udGFpbmVyIFtzdHlsZV09XCJ7Y3Vyc29yOiBkaXNhYmxlZCA/ICdub3QtYWxsb3dlZCcgOiAnYXV0byd9XCIgY2xhc3M9XCJwaG9uZS1kZGlcIj5cblxuICA8ZGl2XG4gICAgI3dyYXBwZXJcbiAgICAoY2xpY2spPVwiaGFuZGxlRmxhZ0NsaWNrKClcIlxuICAgICpuZ0lmPVwic2VsZWN0ZWRGbGFnXCJcbiAgICBbc3R5bGVdPVwie2N1cnNvcjogIWRpc2FibGVkID8gJ3BvaW50ZXInIDogJ25vdC1hbGxvd2VkJ31cIlxuICAgIGNsYXNzPVwiZmxhZ1wiXG4gICAgZGF0YS10ZXN0aWQ9XCJmbGFnXCI+XG5cbiAgICA8ZGl2IFtzdHlsZV09XCJ7YmFja2dyb3VuZFBvc2l0aW9uOiB0aGlzLnNlbGVjdGVkRmxhZz8uYmFja2dyb3VuZFBvc2l0aW9ufVwiIGNsYXNzPVwiZmxhZy1pY29uXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsYWctYXJyb3dcIj48L2Rpdj5cbiAgPC9kaXY+XG5cblxuICA8YXNrLWlucHV0XG4gICAgKGlucHV0KT1cIm9uQ2hhbmdlUGhvbmVOdW1iZXIoJGV2ZW50KVwiXG4gICAgKm5nSWY9XCJzZWxlY3RlZEZsYWc7IGVsc2UgbG9hZGluZ1Bob25lSW5wdXRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2V4dHJhUGFkZGluZ109XCJ0cnVlXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRDb250cm9sXCJcbiAgICBbaXNDbG9zZWRdPVwiY2xvc2VkXCJcbiAgICBbbWFza109XCJzZWxlY3RlZEZsYWcubWFza1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cIidQSE9ORV9QTEFDRUhPTERFUicgfCB0cmFuc2xhdGVcIlxuICAgIFt2YWx1ZVByZWZpeF09XCJzZWxlY3RlZEZsYWcuY29kZSArICcgJ1wiXG4gICAgY2xhc3M9XCJwaG9uZVwiXG4gIC8+XG5cbiAgPG5nLXRlbXBsYXRlICNsb2FkaW5nUGhvbmVJbnB1dD5cbiAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b25cIj5cbiAgICAgIDxhc2stc2tlbGV0b24gW2JhcnNIZWlnaHRdPVwiMjRcIiBbcmFkaXVzXT1cIjEwXCIgc3R5bGU9XCJoZWlnaHQ6IDI0cHg7XCIvPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNvdmVybGF5Q29udGVudD5cbiAgPGRpdiAjbWVudUNvbnRhaW5lciBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCI+XG4gICAgPGRpdiBbc3R5bGVdPVwie3BhZGRpbmc6ICc4cHgnfVwiPlxuICAgICAgPGFzay1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoRmllbGRDb250cm9sXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidGSU5EX0RESV9PUl9DT1VOVFJZJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGFza0F1dG9mb2N1c1xuICAgICAgICBjbGFzcz1cInNlYXJjaFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoOyBlbHNlIGxpc3RcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1wdHlcIj57e1xuICAgICAgICAnTk9fT1BUSU9OUycgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xpc3Q+XG4gICAgICA8ZGl2IFthc2tTY3JvbGxUaHJlc2hvbGRdPVwiNTBcIiBhc2tTY3JvbGwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvdW50cnlJdGVtIG9mIGZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZChjb3VudHJ5SXRlbSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taXRlbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwie2JhY2tncm91bmRQb3NpdGlvbjogY291bnRyeUl0ZW0uYmFja2dyb3VuZFBvc2l0aW9ufVwiIGNsYXNzPVwiY291bnRyeVwiPjwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCI+e3sgZGlzcGxheShjb3VudHJ5SXRlbSkgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,42 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { PHONE_MASK_PATTERN } from "../../../shared/utils/phone-mask-pattern";
3
+ import { DIGIT_REGEX } from "../../../shared/utils/regex";
4
+ import * as i0 from "@angular/core";
5
+ export class PhoneValidationService {
6
+ isPhoneValueValid(phone, dashMask) {
7
+ const maskPatternItemsFound = this.extractMaskPatternItems(dashMask);
8
+ const requiredPatternItemsFound = this.extractRequiredPatternItems(maskPatternItemsFound);
9
+ if (!(phone.length >= requiredPatternItemsFound.length && phone.length <= maskPatternItemsFound.length)) {
10
+ return false;
11
+ }
12
+ return this.validateMaskedPhoneValue(phone, maskPatternItemsFound);
13
+ }
14
+ extractMaskPatternItems(dashMask) {
15
+ const patternsOfMask = Object.keys(PHONE_MASK_PATTERN);
16
+ return dashMask
17
+ .replace(DIGIT_REGEX, '#')
18
+ .split('')
19
+ .filter((key) => patternsOfMask.includes(key));
20
+ }
21
+ extractRequiredPatternItems(maskPatternItemsFound) {
22
+ return maskPatternItemsFound.filter((key) => PHONE_MASK_PATTERN.hasOwnProperty(key) && !PHONE_MASK_PATTERN[key].optional);
23
+ }
24
+ validateMaskedPhoneValue(phoneValue, maskPatternItemsFound) {
25
+ return !(maskPatternItemsFound
26
+ .map((key, index) => {
27
+ const currentPattern = PHONE_MASK_PATTERN[key];
28
+ const value = phoneValue.charAt(index) || '';
29
+ return (currentPattern.optional && !value) || currentPattern.pattern.test(value);
30
+ })
31
+ .filter((result) => !result).length);
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneValidationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneValidationService, providedIn: 'root' }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneValidationService, decorators: [{
37
+ type: Injectable,
38
+ args: [{
39
+ providedIn: 'root'
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtdmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNrc3VpdGUtY2l0cnVzL3NyYy9saWIvc2VydmljZXMvcGhvbmUtZGRpL3Bob25lLXZhbGlkYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7QUFPeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDL0MsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLHlCQUF5QixDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZHLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsUUFBZ0I7UUFDOUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXZELE9BQU8sUUFBUTthQUNaLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO2FBQ3pCLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQTBCLENBQUM7SUFDcEYsQ0FBQztJQUVPLDJCQUEyQixDQUFDLHFCQUE0QztRQUM5RSxPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQXdCLEVBQUUsRUFBRSxDQUMvRCxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQzVFLENBQUM7SUFDSixDQUFDO0lBRU8sd0JBQXdCLENBQUMsVUFBa0IsRUFBRSxxQkFBNEM7UUFDL0YsT0FBTyxDQUFDLENBQUMscUJBQXFCO2FBQzNCLEdBQUcsQ0FBQyxDQUFDLEdBQXdCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDL0MsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFL0MsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFN0MsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0F0Q1Usc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BIT05FX01BU0tfUEFUVEVSTn0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC91dGlscy9waG9uZS1tYXNrLXBhdHRlcm5cIjtcbmltcG9ydCB7RElHSVRfUkVHRVh9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvdXRpbHMvcmVnZXhcIjtcblxudHlwZSBQaG9uZU1hc2tQYXR0ZXJuS2V5ID0ga2V5b2YgdHlwZW9mIFBIT05FX01BU0tfUEFUVEVSTlxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQaG9uZVZhbGlkYXRpb25TZXJ2aWNlIHtcblxuICBpc1Bob25lVmFsdWVWYWxpZChwaG9uZTogc3RyaW5nLCBkYXNoTWFzazogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFza1BhdHRlcm5JdGVtc0ZvdW5kID0gdGhpcy5leHRyYWN0TWFza1BhdHRlcm5JdGVtcyhkYXNoTWFzayk7XG4gICAgY29uc3QgcmVxdWlyZWRQYXR0ZXJuSXRlbXNGb3VuZCA9IHRoaXMuZXh0cmFjdFJlcXVpcmVkUGF0dGVybkl0ZW1zKG1hc2tQYXR0ZXJuSXRlbXNGb3VuZCk7XG5cbiAgICBpZiAoIShwaG9uZS5sZW5ndGggPj0gcmVxdWlyZWRQYXR0ZXJuSXRlbXNGb3VuZC5sZW5ndGggJiYgcGhvbmUubGVuZ3RoIDw9IG1hc2tQYXR0ZXJuSXRlbXNGb3VuZC5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVNYXNrZWRQaG9uZVZhbHVlKHBob25lLCBtYXNrUGF0dGVybkl0ZW1zRm91bmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0TWFza1BhdHRlcm5JdGVtcyhkYXNoTWFzazogc3RyaW5nKTogUGhvbmVNYXNrUGF0dGVybktleVtdIHtcbiAgICBjb25zdCBwYXR0ZXJuc09mTWFzayA9IE9iamVjdC5rZXlzKFBIT05FX01BU0tfUEFUVEVSTik7XG5cbiAgICByZXR1cm4gZGFzaE1hc2tcbiAgICAgIC5yZXBsYWNlKERJR0lUX1JFR0VYLCAnIycpXG4gICAgICAuc3BsaXQoJycpXG4gICAgICAuZmlsdGVyKChrZXk6IHN0cmluZykgPT4gcGF0dGVybnNPZk1hc2suaW5jbHVkZXMoa2V5KSkgYXMgUGhvbmVNYXNrUGF0dGVybktleVtdO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0UmVxdWlyZWRQYXR0ZXJuSXRlbXMobWFza1BhdHRlcm5JdGVtc0ZvdW5kOiBQaG9uZU1hc2tQYXR0ZXJuS2V5W10pOiBQaG9uZU1hc2tQYXR0ZXJuS2V5W10ge1xuICAgIHJldHVybiBtYXNrUGF0dGVybkl0ZW1zRm91bmQuZmlsdGVyKChrZXk6IFBob25lTWFza1BhdHRlcm5LZXkpID0+XG4gICAgICBQSE9ORV9NQVNLX1BBVFRFUk4uaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhUEhPTkVfTUFTS19QQVRURVJOW2tleV0ub3B0aW9uYWxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1hc2tlZFBob25lVmFsdWUocGhvbmVWYWx1ZTogc3RyaW5nLCBtYXNrUGF0dGVybkl0ZW1zRm91bmQ6IFBob25lTWFza1BhdHRlcm5LZXlbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKG1hc2tQYXR0ZXJuSXRlbXNGb3VuZFxuICAgICAgLm1hcCgoa2V5OiBQaG9uZU1hc2tQYXR0ZXJuS2V5LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXR0ZXJuID0gUEhPTkVfTUFTS19QQVRURVJOW2tleV07XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBwaG9uZVZhbHVlLmNoYXJBdChpbmRleCkgfHwgJyc7XG5cbiAgICAgICAgcmV0dXJuIChjdXJyZW50UGF0dGVybi5vcHRpb25hbCAmJiAhdmFsdWUpIHx8IGN1cnJlbnRQYXR0ZXJuLnBhdHRlcm4udGVzdCh2YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocmVzdWx0OiBib29sZWFuKSA9PiAhcmVzdWx0KS5sZW5ndGgpO1xuICB9XG59XG4iXX0=
@@ -10,6 +10,7 @@ export * from './lib/components/box/box.component';
10
10
  export * from './lib/components/avatar/avatar.component';
11
11
  export * from './lib/components/dropdown-container/dropdown-container.component';
12
12
  export * from './lib/components/autocomplete/autocomplete.component';
13
+ export * from './lib/components/phone-ddi/phone-ddi.component';
13
14
  export * from './lib/components/checkbox/checkbox.component';
14
15
  export * from './lib/components/chips/chips.component';
15
16
  export * from './lib/components/date-picker/date-picker.component';
@@ -34,4 +35,8 @@ export * from './lib/services/toast/toast.config';
34
35
  export * from './lib/pipes/paginate/paginate.helper';
35
36
  // Interfaces
36
37
  export * from './lib/interfaces/richtext-toolbox.interface';
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFFN0MsYUFBYTtBQUNiLGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyx3Q0FBd0MsQ0FBQTtBQUN0RCxjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYywwQ0FBMEMsQ0FBQTtBQUN4RCxjQUFjLGtFQUFrRSxDQUFBO0FBQ2hGLGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYyw4Q0FBOEMsQ0FBQTtBQUM1RCxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsb0RBQW9ELENBQUE7QUFDbEUsY0FBYyxrRkFBa0YsQ0FBQTtBQUNoRyxjQUFjLDhDQUE4QyxDQUFBO0FBQzVELGNBQWMsZ0VBQWdFLENBQUE7QUFDOUUsY0FBYyxnREFBZ0QsQ0FBQTtBQUM5RCxjQUFjLHdFQUF3RSxDQUFBO0FBQ3RGLGNBQWMsd0NBQXdDLENBQUE7QUFDdEQsY0FBYyxrREFBa0QsQ0FBQTtBQUVoRSxhQUFhO0FBQ2IsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLG1DQUFtQyxDQUFBO0FBRWpELFdBQVc7QUFDWCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0JBQXNCLENBQUM7QUFFckMsUUFBUTtBQUNSLGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsU0FBUztBQUNULGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsVUFBVTtBQUNWLGNBQWMsc0NBQXNDLENBQUM7QUFFckQsYUFBYTtBQUNiLGNBQWMsNkNBQTZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFza3N1aXRlLWNpdHJ1c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fza3N1aXRlLWNpdHJ1cy5tb2R1bGUnO1xuXG4vLyBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ib3gvYm94LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXItY2FsZW5kYXIvZGF0ZS1waWNrZXItY2FsZW5kYXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoYXJhY3Rlci1jb3VudGVyL2NoYXJhY3Rlci1jb3VudGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjY29yZGlvbi9leHRlbmRhYmxlLXBhbmVsL2V4dGVuZGFibGUtcGFuZWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnXG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vZGFsL2RpcmVjdGl2ZXMnXG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90b2FzdC90b2FzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL21vZGFsJztcblxuLy8gUGlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3BhZ2luYXRlL3BhZ2luYXRlLnBpcGUnO1xuXG4vLyBDb25maWdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RvYXN0L3RvYXN0LmNvbmZpZyc7XG5cbi8vIEhlbHBlcnNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3BhZ2luYXRlL3BhZ2luYXRlLmhlbHBlcic7XG5cbi8vIEludGVyZmFjZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvcmljaHRleHQtdG9vbGJveC5pbnRlcmZhY2UnOyJdfQ==
38
+ // Validators
39
+ export * from './shared/validators/phone-mask.validator';
40
+ // Provider
41
+ export * from './shared/providers/flag.provider';
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFFN0MsYUFBYTtBQUNiLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGtGQUFrRixDQUFDO0FBQ2pHLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGFBQWE7QUFDYixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsV0FBVztBQUNYLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxRQUFRO0FBQ1IsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxTQUFTO0FBQ1QsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxVQUFVO0FBQ1YsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxhQUFhO0FBQ2IsY0FBYyw2Q0FBNkMsQ0FBQztBQUU1RCxhQUFhO0FBQ2IsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxXQUFXO0FBQ1gsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXNrc3VpdGUtY2l0cnVzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXNrc3VpdGUtY2l0cnVzLm1vZHVsZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JveC9ib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGhvbmUtZGRpL3Bob25lLWRkaS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1jYWxlbmRhci9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnRlci9jaGFyYWN0ZXItY291bnRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjY29yZGlvbi9leHRlbmRhYmxlLXBhbmVsL2V4dGVuZGFibGUtcGFuZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2RhbC9kaXJlY3RpdmVzJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RvYXN0L3RvYXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbW9kYWwnO1xuXG4vLyBQaXBlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGFnaW5hdGUvcGFnaW5hdGUucGlwZSc7XG5cbi8vIENvbmZpZ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdG9hc3QvdG9hc3QuY29uZmlnJztcblxuLy8gSGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGFnaW5hdGUvcGFnaW5hdGUuaGVscGVyJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9yaWNodGV4dC10b29sYm94LmludGVyZmFjZSc7XG5cbi8vIFZhbGlkYXRvcnNcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL3ZhbGlkYXRvcnMvcGhvbmUtbWFzay52YWxpZGF0b3InO1xuXG4vLyBQcm92aWRlclxuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQvcHJvdmlkZXJzL2ZsYWcucHJvdmlkZXInO1xuIl19
@@ -0,0 +1,20 @@
1
+ export function removeDiacritics(str) {
2
+ return str.normalize("NFD").replace(/[\u0300-\u036f\W]/g, "");
3
+ }
4
+ export function filterSelectedList(list, value, propertyNames) {
5
+ if (!value) {
6
+ return [...list];
7
+ }
8
+ return searchArray(list, propertyNames, value);
9
+ }
10
+ export function searchArray(array, keys, searchValue) {
11
+ const searchValueNormalized = removeDiacritics(searchValue.toLowerCase());
12
+ const regex = new RegExp(searchValueNormalized, "i");
13
+ return array.filter(item => {
14
+ return keys.some(key => {
15
+ const attributeValueNormalized = removeDiacritics(item[key].toLowerCase());
16
+ return regex.test(attributeValueNormalized);
17
+ });
18
+ });
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvc2hhcmVkL2hlbHBlcnMvZmlsdGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBVztJQUMxQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFHRCxNQUFNLFVBQVUsa0JBQWtCLENBQTBCLElBQVMsRUFBRSxLQUFhLEVBQUUsYUFBK0I7SUFDbkgsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0lBRUQsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUNoRCxDQUFDO0FBSUQsTUFBTSxVQUFVLFdBQVcsQ0FBMEIsS0FBVSxFQUFFLElBQXNCLEVBQUUsV0FBbUI7SUFDMUcsTUFBTSxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUUxRSxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVyRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDM0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHI6IHN0cmluZykge1xuICByZXR1cm4gc3RyLm5vcm1hbGl6ZShcIk5GRFwiKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXFxXXS9nLCBcIlwiKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU2VsZWN0ZWRMaXN0PFQgZXh0ZW5kcyBHZW5lcmljT2JqZWN0PihsaXN0OiBUW10sIHZhbHVlOiBzdHJpbmcsIHByb3BlcnR5TmFtZXM6IEFycmF5PChrZXlvZiBUKT4pIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBbLi4ubGlzdF07XG4gIH1cblxuICByZXR1cm4gc2VhcmNoQXJyYXkobGlzdCwgcHJvcGVydHlOYW1lcywgdmFsdWUpXG59XG5cbnR5cGUgR2VuZXJpY09iamVjdCA9IHsgW2tleTogc3RyaW5nXTogYW55IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaEFycmF5PFQgZXh0ZW5kcyBHZW5lcmljT2JqZWN0PihhcnJheTogVFtdLCBrZXlzOiBBcnJheTwoa2V5b2YgVCk+LCBzZWFyY2hWYWx1ZTogc3RyaW5nKSB7XG4gIGNvbnN0IHNlYXJjaFZhbHVlTm9ybWFsaXplZCA9IHJlbW92ZURpYWNyaXRpY3Moc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XG5cbiAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHNlYXJjaFZhbHVlTm9ybWFsaXplZCwgXCJpXCIpO1xuXG4gIHJldHVybiBhcnJheS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgcmV0dXJuIGtleXMuc29tZShrZXkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWVOb3JtYWxpemVkID0gcmVtb3ZlRGlhY3JpdGljcyhpdGVtW2tleV0udG9Mb3dlckNhc2UoKSk7XG4gICAgICByZXR1cm4gcmVnZXgudGVzdChhdHRyaWJ1dGVWYWx1ZU5vcm1hbGl6ZWQpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const FLAG_PROVIDER_URL = new InjectionToken('Flags');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvc2hhcmVkL3Byb3ZpZGVycy9mbGFnLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFlN0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQVMsT0FBTyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgdHlwZSBDb3VudHJ5RGRpID0ge1xuICBjb3VudHJ5TmFtZTogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmdcbiAgY291bnRyeUNvZGU6IHN0cmluZztcbiAgYmFja2dyb3VuZFBvc2l0aW9uOiBzdHJpbmc7XG4gIG1hc2s6IHN0cmluZztcbiAgZGFzaF9tYXNrOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvdW50cnlEYXRhID0gT21pdDxDb3VudHJ5RGRpLCAnZGFzaF9tYXNrJz4gJiB7XG4gIGRhc2hNYXNrOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IEZMQUdfUFJPVklERVJfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0ZsYWdzJylcbiJdfQ==
@@ -0,0 +1,84 @@
1
+ import { Inject, Injectable } from "@angular/core";
2
+ import { FLAG_PROVIDER_URL } from "../providers/flag.provider";
3
+ import { map, of, tap } from "rxjs";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ import * as i2 from "@ngx-translate/core";
7
+ var CountryLanguageMap;
8
+ (function (CountryLanguageMap) {
9
+ CountryLanguageMap["EN"] = "US";
10
+ CountryLanguageMap["PT"] = "BR";
11
+ CountryLanguageMap["ES"] = "ES";
12
+ })(CountryLanguageMap || (CountryLanguageMap = {}));
13
+ export default class CountryFlagService {
14
+ constructor(flagUrl, http, translateService) {
15
+ this.flagUrl = flagUrl;
16
+ this.http = http;
17
+ this.translateService = translateService;
18
+ this.defaultCountryCode = 'br';
19
+ this.defaultCountryLanguage = 'pt_br';
20
+ this.cacheList = [];
21
+ this.list = () => {
22
+ if (!this.flagUrl) {
23
+ return of([]);
24
+ }
25
+ if (this.cacheList.length) {
26
+ return of([...this.cacheList]);
27
+ }
28
+ return this.http.get(this.flagUrl).pipe(map(countryData => countryData.map(this.formatCountryData)), tap(data => this.cacheList = data));
29
+ };
30
+ }
31
+ getDefaultCountryFlag(searchData) {
32
+ const language = this.getDefaultCountryLanguage();
33
+ const countryCode = this.extractCountryCode([
34
+ language,
35
+ navigator.language
36
+ ]);
37
+ return searchData.find(countryItem => countryItem.countryCode === countryCode) || searchData[0];
38
+ }
39
+ getDefaultCountryLanguage() {
40
+ const language = this.translateService.currentLang;
41
+ if (!language) {
42
+ return this.defaultCountryLanguage;
43
+ }
44
+ const [mainLanguage, countryLanguage] = language?.split(/[_\-]/);
45
+ if (countryLanguage) {
46
+ return language;
47
+ }
48
+ const defaultCountryLanguage = Object.keys(CountryLanguageMap).includes(mainLanguage.toUpperCase()) &&
49
+ CountryLanguageMap[mainLanguage.toUpperCase()];
50
+ return defaultCountryLanguage ? language + '_' + defaultCountryLanguage : this.defaultCountryLanguage;
51
+ }
52
+ extractCountryCode(languagesToSearch) {
53
+ let foundCountryCode = null, currentIndex = 0;
54
+ while (foundCountryCode === null && currentIndex < languagesToSearch.length) {
55
+ const language = languagesToSearch[currentIndex];
56
+ const [, secondLanguage] = language.split(/[_\-]/);
57
+ const countryCode = secondLanguage?.toLowerCase() || language.toLowerCase();
58
+ if (countryCode) {
59
+ foundCountryCode = countryCode;
60
+ }
61
+ currentIndex++;
62
+ }
63
+ return foundCountryCode || this.defaultCountryCode;
64
+ }
65
+ formatCountryData({ mask, dash_mask, ...data }) {
66
+ return {
67
+ ...data,
68
+ mask: mask.replace(/[0-9]/g, '0').replace('X', '9'),
69
+ dashMask: dash_mask
70
+ };
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: CountryFlagService, deps: [{ token: FLAG_PROVIDER_URL }, { token: i1.HttpClient }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
73
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: CountryFlagService, providedIn: 'root' }); }
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: CountryFlagService, decorators: [{
76
+ type: Injectable,
77
+ args: [{
78
+ providedIn: 'root'
79
+ }]
80
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
81
+ type: Inject,
82
+ args: [FLAG_PROVIDER_URL]
83
+ }] }, { type: i1.HttpClient }, { type: i2.TranslateService }]; } });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1mbGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL3NoYXJlZC9zZXJ2aWNlcy9jb3VudHJ5LWZsYWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQTBCLGlCQUFpQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEYsT0FBTyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBR2xDLElBQUssa0JBSUo7QUFKRCxXQUFLLGtCQUFrQjtJQUNyQiwrQkFBUyxDQUFBO0lBQ1QsK0JBQVMsQ0FBQTtJQUNULCtCQUFTLENBQUE7QUFDWCxDQUFDLEVBSkksa0JBQWtCLEtBQWxCLGtCQUFrQixRQUl0QjtBQUtELE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0JBQWtCO0lBT3JDLFlBRW1CLE9BQWUsRUFDZixJQUFnQixFQUNoQixnQkFBa0M7UUFGbEMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVY3Qyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFFMUIsMkJBQXNCLEdBQUcsT0FBTyxDQUFDO1FBRWpDLGNBQVMsR0FBa0IsRUFBRSxDQUFBO1FBVXJDLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDZjtZQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFD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LGtCQUFrQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVNJLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0NvdW50cnlEYXRhLCBDb3VudHJ5RGRpLCBGTEFHX1BST1ZJREVSX1VSTH0gZnJvbSBcIi4uL3Byb3ZpZGVycy9mbGFnLnByb3ZpZGVyXCI7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHttYXAsIG9mLCB0YXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5cbmVudW0gQ291bnRyeUxhbmd1YWdlTWFwIHtcbiAgRU4gPSAnVVMnLFxuICBQVCA9ICdCUicsXG4gIEVTID0gJ0VTJ1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvdW50cnlGbGFnU2VydmljZSB7XG4gIHByaXZhdGUgZGVmYXVsdENvdW50cnlDb2RlID0gJ2JyJztcblxuICBwcml2YXRlIGRlZmF1bHRDb3VudHJ5TGFuZ3VhZ2UgPSAncHRfYnInO1xuXG4gIHByaXZhdGUgY2FjaGVMaXN0OiBDb3VudHJ5RGF0YVtdID0gW11cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZMQUdfUFJPVklERVJfVVJMKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmxhZ1VybDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBsaXN0ID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5mbGFnVXJsKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNhY2hlTGlzdC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBvZihbLi4udGhpcy5jYWNoZUxpc3RdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb3VudHJ5RGRpW10+KHRoaXMuZmxhZ1VybCkucGlwZShcbiAgICAgIG1hcChjb3VudHJ5RGF0YSA9PiBjb3VudHJ5RGF0YS5tYXAodGhpcy5mb3JtYXRDb3VudHJ5RGF0YSkpLFxuICAgICAgdGFwKGRhdGEgPT4gdGhpcy5jYWNoZUxpc3QgPSBkYXRhKVxuICAgICk7XG4gIH1cblxuICBnZXREZWZhdWx0Q291bnRyeUZsYWcoc2VhcmNoRGF0YTogQ291bnRyeURhdGFbXSkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5nZXREZWZhdWx0Q291bnRyeUxhbmd1YWdlKCk7XG5cbiAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHRoaXMuZXh0cmFjdENvdW50cnlDb2RlKFtcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgbmF2aWdhdG9yLmxhbmd1YWdlXG4gICAgXSlcblxuICAgIHJldHVybiBzZWFyY2hEYXRhLmZpbmQoY291bnRyeUl0ZW0gPT4gY291bnRyeUl0ZW0uY291bnRyeUNvZGUgPT09IGNvdW50cnlDb2RlKSB8fCBzZWFyY2hEYXRhWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q291bnRyeUxhbmd1YWdlKCkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nO1xuXG4gICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENvdW50cnlMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBjb25zdCBbbWFpbkxhbmd1YWdlLCBjb3VudHJ5TGFuZ3VhZ2VdID0gbGFuZ3VhZ2U/LnNwbGl0KC9bX1xcLV0vKTtcblxuICAgIGlmIChjb3VudHJ5TGFuZ3VhZ2UpIHtcbiAgICAgIHJldHVybiBsYW5ndWFnZTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0Q291bnRyeUxhbmd1YWdlID0gT2JqZWN0LmtleXMoQ291bnRyeUxhbmd1YWdlTWFwKS5pbmNsdWRlcyhtYWluTGFuZ3VhZ2UudG9VcHBlckNhc2UoKSBhcyBhbnkpICYmXG4gICAgICBDb3VudHJ5TGFuZ3VhZ2VNYXBbbWFpbkxhbmd1YWdlLnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIENvdW50cnlMYW5ndWFnZU1hcF07XG5cbiAgICByZXR1cm4gZGVmYXVsdENvdW50cnlMYW5ndWFnZSA/IGxhbmd1YWdlICsgJ18nICsgZGVmYXVsdENvdW50cnlMYW5ndWFnZSA6IHRoaXMuZGVmYXVsdENvdW50cnlMYW5ndWFnZTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdENvdW50cnlDb2RlKGxhbmd1YWdlc1RvU2VhcmNoOiBzdHJpbmdbXSkge1xuICAgIGxldCBmb3VuZENvdW50cnlDb2RlID0gbnVsbCwgY3VycmVudEluZGV4ID0gMDtcblxuICAgIHdoaWxlIChmb3VuZENvdW50cnlDb2RlID09PSBudWxsICYmIGN1cnJlbnRJbmRleCA8IGxhbmd1YWdlc1RvU2VhcmNoLmxlbmd0aCkge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBsYW5ndWFnZXNUb1NlYXJjaFtjdXJyZW50SW5kZXhdO1xuICAgICAgY29uc3QgWywgc2Vjb25kTGFuZ3VhZ2VdID0gbGFuZ3VhZ2Uuc3BsaXQoL1tfXFwtXS8pXG5cbiAgICAgIGNvbnN0IGNvdW50cnlDb2RlID0gc2Vjb25kTGFuZ3VhZ2U/LnRvTG93ZXJDYXNlKCkgfHwgbGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKGNvdW50cnlDb2RlKSB7XG4gICAgICAgIGZvdW5kQ291bnRyeUNvZGUgPSBjb3VudHJ5Q29kZTtcbiAgICAgIH1cblxuICAgICAgY3VycmVudEluZGV4Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kQ291bnRyeUNvZGUgfHwgdGhpcy5kZWZhdWx0Q291bnRyeUNvZGU7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdENvdW50cnlEYXRhKHttYXNrLCBkYXNoX21hc2ssIC4uLmRhdGF9OiBDb3VudHJ5RGRpKTogQ291bnRyeURhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgbWFzazogbWFzay5yZXBsYWNlKC9bMC05XS9nLCAnMCcpLnJlcGxhY2UoJ1gnLCAnOScpLFxuICAgICAgZGFzaE1hc2s6IGRhc2hfbWFza1xuICAgIH07XG5cbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ export const PHONE_MASK_PATTERN = {
2
+ '0': {
3
+ pattern: /0/,
4
+ fallback: '0',
5
+ optional: false
6
+ },
7
+ '#': {
8
+ pattern: /\d/,
9
+ optional: false
10
+ },
11
+ '_': {
12
+ pattern: /\d/,
13
+ optional: true
14
+ },
15
+ 'X': {
16
+ pattern: /\d/,
17
+ optional: true
18
+ },
19
+ '9': {
20
+ pattern: /9/,
21
+ fallback: '9',
22
+ optional: false
23
+ }
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbWFzay1wYXR0ZXJuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNrc3VpdGUtY2l0cnVzL3NyYy9zaGFyZWQvdXRpbHMvcGhvbmUtbWFzay1wYXR0ZXJuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSxHQUFHO1FBQ1osUUFBUSxFQUFFLEdBQUc7UUFDYixRQUFRLEVBQUUsS0FBSztLQUNoQjtJQUNELEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLEtBQUs7S0FDaEI7SUFDRCxHQUFHLEVBQUU7UUFDSCxPQUFPLEVBQUUsSUFBSTtRQUNiLFFBQVEsRUFBRSxJQUFJO0tBQ2Y7SUFDRCxHQUFHLEVBQUU7UUFDSCxPQUFPLEVBQUUsSUFBSTtRQUNiLFFBQVEsRUFBRSxJQUFJO0tBQ2Y7SUFDRCxHQUFHLEVBQUU7UUFDSCxPQUFPLEVBQUUsR0FBRztRQUNaLFFBQVEsRUFBRSxHQUFHO1FBQ2IsUUFBUSxFQUFFLEtBQUs7S0FDaEI7Q0FDRixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFBIT05FX01BU0tfUEFUVEVSTiA9IHtcbiAgJzAnOiB7XG4gICAgcGF0dGVybjogLzAvLFxuICAgIGZhbGxiYWNrOiAnMCcsXG4gICAgb3B0aW9uYWw6IGZhbHNlXG4gIH0sXG4gICcjJzoge1xuICAgIHBhdHRlcm46IC9cXGQvLFxuICAgIG9wdGlvbmFsOiBmYWxzZVxuICB9LFxuICAnXyc6IHtcbiAgICBwYXR0ZXJuOiAvXFxkLyxcbiAgICBvcHRpb25hbDogdHJ1ZVxuICB9LFxuICAnWCc6IHtcbiAgICBwYXR0ZXJuOiAvXFxkLyxcbiAgICBvcHRpb25hbDogdHJ1ZVxuICB9LFxuICAnOSc6IHtcbiAgICBwYXR0ZXJuOiAvOS8sXG4gICAgZmFsbGJhY2s6ICc5JyxcbiAgICBvcHRpb25hbDogZmFsc2VcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export const DIGIT_REGEX = /\d/g;
2
+ export const NON_DIGIT_REGEX = /\D+/g;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL3NoYXJlZC91dGlscy9yZWdleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRElHSVRfUkVHRVggPSAvXFxkL2c7XG5leHBvcnQgY29uc3QgTk9OX0RJR0lUX1JFR0VYID0gL1xcRCsvZztcbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { NON_DIGIT_REGEX } from "../utils/regex";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../lib/services/phone-ddi/phone-validation.service";
5
+ export class PhoneMaskValidator {
6
+ constructor(phoneValidationService) {
7
+ this.phoneValidationService = phoneValidationService;
8
+ }
9
+ validate(selectedFlag) {
10
+ return (control) => {
11
+ if (!selectedFlag?.dashMask) {
12
+ return null;
13
+ }
14
+ const countryCode = selectedFlag.code.replace('+', '');
15
+ const value = control.value
16
+ ?.replace(NON_DIGIT_REGEX, '')
17
+ .replace(new RegExp(`^${countryCode}\\D*`), '');
18
+ if (!this.phoneValidationService.isPhoneValueValid(value, selectedFlag.dashMask)) {
19
+ return {
20
+ invalidPhoneNumber: true,
21
+ };
22
+ }
23
+ return null;
24
+ };
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneMaskValidator, deps: [{ token: i1.PhoneValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneMaskValidator, providedIn: 'root' }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PhoneMaskValidator, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root'
33
+ }]
34
+ }], ctorParameters: function () { return [{ type: i1.PhoneValidationService }]; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbWFzay52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL3NoYXJlZC92YWxpZGF0b3JzL3Bob25lLW1hc2sudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFNL0MsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUE2QixzQkFBOEM7UUFBOUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtJQUMzRSxDQUFDO0lBRUQsUUFBUSxDQUFDLFlBQXlCO1FBQ2hDLE9BQU8sQ0FBQyxPQUF3QixFQUFpQyxFQUFFO1lBQ2pFLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFO2dCQUMzQixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLO2dCQUN6QixFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO2lCQUM3QixPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxXQUFXLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRWxELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDaEYsT0FBTztvQkFDTCxrQkFBa0IsRUFBRSxJQUFJO2lCQUN6QixDQUFDO2FBQ0g7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQTtJQUNILENBQUM7OEdBeEJVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0NvdW50cnlEYXRhfSBmcm9tIFwiLi4vcHJvdmlkZXJzL2ZsYWcucHJvdmlkZXJcIjtcbmltcG9ydCB7Tk9OX0RJR0lUX1JFR0VYfSBmcm9tIFwiLi4vdXRpbHMvcmVnZXhcIjtcbmltcG9ydCB7UGhvbmVWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2xpYi9zZXJ2aWNlcy9waG9uZS1kZGkvcGhvbmUtdmFsaWRhdGlvbi5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBob25lTWFza1ZhbGlkYXRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwaG9uZVZhbGlkYXRpb25TZXJ2aWNlOiBQaG9uZVZhbGlkYXRpb25TZXJ2aWNlKSB7XG4gIH1cblxuICB2YWxpZGF0ZShzZWxlY3RlZEZsYWc6IENvdW50cnlEYXRhKSB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XG4gICAgICBpZiAoIXNlbGVjdGVkRmxhZz8uZGFzaE1hc2spIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvdW50cnlDb2RlID0gc2VsZWN0ZWRGbGFnLmNvZGUucmVwbGFjZSgnKycsICcnKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZVxuICAgICAgICA/LnJlcGxhY2UoTk9OX0RJR0lUX1JFR0VYLCAnJylcbiAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7Y291bnRyeUNvZGV9XFxcXEQqYCksICcnKTtcblxuICAgICAgaWYgKCF0aGlzLnBob25lVmFsaWRhdGlvblNlcnZpY2UuaXNQaG9uZVZhbHVlVmFsaWQodmFsdWUsIHNlbGVjdGVkRmxhZy5kYXNoTWFzaykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbnZhbGlkUGhvbmVOdW1iZXI6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19