@wlcm/angular 17.3.2 → 17.3.4

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 (27) hide show
  1. package/package.json +1 -1
  2. package/phone-input/README.md +7 -0
  3. package/phone-input/esm2022/index.mjs +5 -0
  4. package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs +26 -0
  5. package/phone-input/esm2022/lib/components/phone-input-container/phone-input-container.component.mjs +103 -0
  6. package/phone-input/esm2022/lib/constants/country-code-options.constants.mjs +20 -0
  7. package/phone-input/esm2022/lib/constants/phone-adapter.constants.mjs +3 -0
  8. package/phone-input/esm2022/lib/directives/phone-input.directive.mjs +119 -0
  9. package/phone-input/esm2022/lib/models/country-code.models.mjs +10 -0
  10. package/phone-input/esm2022/lib/models/phone-adapter.models.mjs +3 -0
  11. package/phone-input/esm2022/lib/models/phone.models.mjs +5 -0
  12. package/phone-input/esm2022/lib/phone-input.module.mjs +20 -0
  13. package/phone-input/esm2022/lib/pipes/phone-code.pipe.mjs +18 -0
  14. package/phone-input/esm2022/wlcm-angular-phone-input.mjs +5 -0
  15. package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +302 -0
  16. package/phone-input/fesm2022/wlcm-angular-phone-input.mjs.map +1 -0
  17. package/phone-input/index.d.ts +4 -0
  18. package/phone-input/lib/components/country-code-select/country-code-select.component.d.ts +12 -0
  19. package/phone-input/lib/components/phone-input-container/phone-input-container.component.d.ts +28 -0
  20. package/phone-input/lib/constants/country-code-options.constants.d.ts +3 -0
  21. package/phone-input/lib/constants/phone-adapter.constants.d.ts +3 -0
  22. package/phone-input/lib/directives/phone-input.directive.d.ts +33 -0
  23. package/phone-input/lib/models/country-code.models.d.ts +7 -0
  24. package/phone-input/lib/models/phone-adapter.models.d.ts +8 -0
  25. package/phone-input/lib/models/phone.models.d.ts +3 -0
  26. package/phone-input/lib/phone-input.module.d.ts +9 -0
  27. package/phone-input/lib/pipes/phone-code.pipe.d.ts +8 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wlcm/angular",
3
- "version": "17.3.2",
3
+ "version": "17.3.4",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./index.mjs",
@@ -0,0 +1,7 @@
1
+ # phone-input
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test phone-input` to execute the unit tests.
@@ -0,0 +1,5 @@
1
+ export { WlcmPhoneInputModule } from './lib/phone-input.module';
2
+ export { WlcmPhoneInputDirective } from './lib/directives/phone-input.directive';
3
+ export { WlcmPhoneInputContainerComponent } from './lib/components/phone-input-container/phone-input-container.component';
4
+ export { WlcmPhoneValidationErrorType } from './lib/models/phone.models';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL3Bob25lLWlucHV0L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMxSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFdsY21QaG9uZUlucHV0TW9kdWxlIH0gZnJvbSAnLi9saWIvcGhvbmUtaW5wdXQubW9kdWxlJztcbmV4cG9ydCB7IFdsY21QaG9uZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9waG9uZS1pbnB1dC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgV2xjbVBob25lSW5wdXRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Bob25lLWlucHV0LWNvbnRhaW5lci9waG9uZS1pbnB1dC1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFdsY21QaG9uZVZhbGlkYXRpb25FcnJvclR5cGUgfSBmcm9tICcuL2xpYi9tb2RlbHMvcGhvbmUubW9kZWxzJztcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Component, Inject, input, output } from '@angular/core';
2
+ import { WlcmFormsModule } from '@wlcm/angular/forms';
3
+ import { CommonModule } from '@angular/common';
4
+ import { WLCM_COUNTRY_CODE_OPTIONS } from '../../constants/country-code-options.constants';
5
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
6
+ import { PhoneCodePipe } from '../../pipes/phone-code.pipe';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@wlcm/angular/forms";
9
+ import * as i2 from "@angular/forms";
10
+ export class WlcmCountryCodeSelectComponent {
11
+ constructor(options) {
12
+ this.options = options;
13
+ this.changed = output();
14
+ this.control = input(new FormControl('US'));
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCountryCodeSelectComponent, deps: [{ token: WLCM_COUNTRY_CODE_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.5", type: WlcmCountryCodeSelectComponent, isStandalone: true, selector: "wlcm-country-code-select", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "wlcm-country-code-select" }, ngImport: i0, template: "<wlcm-select\n [options]=\"options\"\n [formControl]=\"control()\"\n [optionTemplate]=\"optionTemplate\"\n [triggerTemplate]=\"triggerTemplate\"\n (selectionChange)=\"changed.emit($event)\"\n></wlcm-select>\n\n<ng-template #optionTemplate let-option>\n <span class=\"emoji-flag\">{{ option.emojiFlag }}</span>\n\n {{ option.viewValue }}\n</ng-template>\n\n<ng-template #triggerTemplate let-selected>\n <div class=\"wlcm-country-code-select-trigger\">\n +{{ selected?.value | phoneCode }}\n </div>\n</ng-template>\n", styles: [".emoji-flag{font-size:20px;vertical-align:bottom;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: WlcmFormsModule }, { kind: "component", type: i1.WlcmSelectComponent, selector: "wlcm-select", inputs: ["multiple", "placeholder", "options", "optionTemplate", "triggerTemplate"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: PhoneCodePipe, name: "phoneCode" }] }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCountryCodeSelectComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'wlcm-country-code-select', host: { class: 'wlcm-country-code-select' }, standalone: true, imports: [CommonModule, WlcmFormsModule, ReactiveFormsModule, PhoneCodePipe], template: "<wlcm-select\n [options]=\"options\"\n [formControl]=\"control()\"\n [optionTemplate]=\"optionTemplate\"\n [triggerTemplate]=\"triggerTemplate\"\n (selectionChange)=\"changed.emit($event)\"\n></wlcm-select>\n\n<ng-template #optionTemplate let-option>\n <span class=\"emoji-flag\">{{ option.emojiFlag }}</span>\n\n {{ option.viewValue }}\n</ng-template>\n\n<ng-template #triggerTemplate let-selected>\n <div class=\"wlcm-country-code-select-trigger\">\n +{{ selected?.value | phoneCode }}\n </div>\n</ng-template>\n", styles: [".emoji-flag{font-size:20px;vertical-align:bottom;margin-right:8px}\n"] }]
22
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
23
+ type: Inject,
24
+ args: [WLCM_COUNTRY_CODE_OPTIONS]
25
+ }] }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1jb2RlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3Bob25lLWlucHV0L3NyYy9saWIvY29tcG9uZW50cy9jb3VudHJ5LWNvZGUtc2VsZWN0L2NvdW50cnktY29kZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvbGliL2NvbXBvbmVudHMvY291bnRyeS1jb2RlLXNlbGVjdC9jb3VudHJ5LWNvZGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFpQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQVU1RCxNQUFNLE9BQU8sOEJBQThCO0lBS3pDLFlBQXlELE9BQWdDO1FBQWhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBSnpGLFlBQU8sR0FBMEIsTUFBTSxFQUFFLENBQUM7UUFFMUMsWUFBTyxHQUE2QixLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUyQixDQUFDOzhHQUxsRiw4QkFBOEIsa0JBS3JCLHlCQUF5QjtrR0FMbEMsOEJBQThCLHFUQ2pCM0MsZ2hCQW1CQSw2SEROWSxZQUFZLDhCQUFFLGVBQWUsK05BQUUsbUJBQW1CLHFUQUFFLGFBQWE7OzJGQUloRSw4QkFBOEI7a0JBUjFDLFNBQVM7K0JBQ0UsMEJBQTBCLFFBQzlCLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLGNBQy9CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxDQUFDOzswQkFTL0QsTUFBTTsyQkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXRTaWduYWwsIE91dHB1dEVtaXR0ZXJSZWYsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdsY21Gb3Jtc01vZHVsZSB9IGZyb20gJ0B3bGNtL2FuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgV0xDTV9DT1VOVFJZX0NPREVfT1BUSU9OUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb3VudHJ5LWNvZGUtb3B0aW9ucy5jb25zdGFudHMnO1xuaW1wb3J0IHsgV2xjbUNvdW50cnlDb2RlT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvdW50cnktY29kZS5tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQaG9uZUNvZGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcGhvbmUtY29kZS5waXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2xjbS1jb3VudHJ5LWNvZGUtc2VsZWN0JyxcbiAgaG9zdDogeyBjbGFzczogJ3dsY20tY291bnRyeS1jb2RlLXNlbGVjdCcgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV2xjbUZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBQaG9uZUNvZGVQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cnktY29kZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY291bnRyeS1jb2RlLXNlbGVjdC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFdsY21Db3VudHJ5Q29kZVNlbGVjdENvbXBvbmVudCB7XG4gIGNoYW5nZWQ6IE91dHB1dEVtaXR0ZXJSZWY8YW55PiA9IG91dHB1dCgpO1xuXG4gIGNvbnRyb2w6IElucHV0U2lnbmFsPEZvcm1Db250cm9sPiA9IGlucHV0KG5ldyBGb3JtQ29udHJvbCgnVVMnKSk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChXTENNX0NPVU5UUllfQ09ERV9PUFRJT05TKSBwcm90ZWN0ZWQgb3B0aW9uczogV2xjbUNvdW50cnlDb2RlT3B0aW9uW10pIHt9XG59XG4iLCI8d2xjbS1zZWxlY3RcbiAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gIFtmb3JtQ29udHJvbF09XCJjb250cm9sKClcIlxuICBbb3B0aW9uVGVtcGxhdGVdPVwib3B0aW9uVGVtcGxhdGVcIlxuICBbdHJpZ2dlclRlbXBsYXRlXT1cInRyaWdnZXJUZW1wbGF0ZVwiXG4gIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlZC5lbWl0KCRldmVudClcIlxuPjwvd2xjbS1zZWxlY3Q+XG5cbjxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj5cbiAgPHNwYW4gY2xhc3M9XCJlbW9qaS1mbGFnXCI+e3sgb3B0aW9uLmVtb2ppRmxhZyB9fTwvc3Bhbj5cblxuICB7eyBvcHRpb24udmlld1ZhbHVlIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJUZW1wbGF0ZSBsZXQtc2VsZWN0ZWQ+XG4gIDxkaXYgY2xhc3M9XCJ3bGNtLWNvdW50cnktY29kZS1zZWxlY3QtdHJpZ2dlclwiPlxuICAgICt7eyBzZWxlY3RlZD8udmFsdWUgfCBwaG9uZUNvZGUgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,103 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { CommonModule } from '@angular/common';
3
+ import { Component, ContentChild, NgZone, ViewChild, forwardRef, inject } from '@angular/core';
4
+ import { WlcmPhoneInputDirective } from '../../directives/phone-input.directive';
5
+ import { WLCM_INPUT_BINDER } from '@wlcm/angular/forms';
6
+ import { WLCM_PHONE_ADAPTER } from '../../constants/phone-adapter.constants';
7
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
8
+ import { Subject, fromEvent, merge, tap } from 'rxjs';
9
+ import { AsYouType, getPhoneCode, isValidNumber, parsePhoneNumber } from 'libphonenumber-js';
10
+ import { WlcmCountryCodeSelectComponent } from '../country-code-select/country-code-select.component';
11
+ import { FormControl } from '@angular/forms';
12
+ import * as i0 from "@angular/core";
13
+ let WlcmPhoneInputContainerComponent = class WlcmPhoneInputContainerComponent {
14
+ constructor(_zone) {
15
+ this._zone = _zone;
16
+ this._focusStream$ = new Subject();
17
+ this._blurStream$ = new Subject();
18
+ this.focus$ = this._focusStream$.asObservable();
19
+ this.blur$ = this._blurStream$.asObservable();
20
+ this.control = new FormControl('US');
21
+ this._asYouType = new AsYouType('US');
22
+ this.parseValue = (value) => {
23
+ if (!value || value.length === 0)
24
+ return '';
25
+ if (isValidNumber(value)) {
26
+ const result = parsePhoneNumber(value, 'US');
27
+ if (result.country)
28
+ this.control.setValue(result.country);
29
+ return result.nationalNumber;
30
+ }
31
+ return value;
32
+ };
33
+ this.formatValue = (value) => {
34
+ this._asYouType.reset();
35
+ this._asYouType.input(`+${this.currentCallingCode}${value}`);
36
+ const countryCode = this._asYouType.getCountry();
37
+ if (countryCode)
38
+ this.control.setValue(countryCode);
39
+ return this._asYouType.getNumber()?.number ?? '';
40
+ };
41
+ }
42
+ ngAfterContentInit() {
43
+ if (!this.phoneInput) {
44
+ throw new Error('The [wlcmPhoneInput] directive must be provided.');
45
+ }
46
+ this.handleInputEvents();
47
+ }
48
+ isFocused() {
49
+ return this.phoneInput.element === document.activeElement;
50
+ }
51
+ focus() {
52
+ this.phoneInput.element.focus();
53
+ }
54
+ handleCountryChange() {
55
+ this.phoneInput._updateControl();
56
+ }
57
+ get currentCallingCode() {
58
+ return getPhoneCode(this.control.value);
59
+ }
60
+ handleInputEvents() {
61
+ this._zone.runOutsideAngular(() => {
62
+ merge(fromEvent(this.phoneInput.element, 'focus').pipe(tap(() => this._focusStream$.next())), fromEvent(this.phoneInput.element, 'blur').pipe(tap(() => this._blurStream$.next())))
63
+ .pipe(untilDestroyed(this))
64
+ .subscribe();
65
+ });
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputContainerComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmPhoneInputContainerComponent, isStandalone: true, selector: "wlcm-phone-input-container", host: { classAttribute: "wlcm-phone-input-container" }, providers: [
69
+ {
70
+ provide: WLCM_INPUT_BINDER,
71
+ useFactory: () => {
72
+ const container = inject(WlcmPhoneInputContainerComponent, { self: true });
73
+ return { bind: () => container };
74
+ },
75
+ },
76
+ { provide: WLCM_PHONE_ADAPTER, useExisting: forwardRef(() => WlcmPhoneInputContainerComponent) },
77
+ ], queries: [{ propertyName: "phoneInput", first: true, predicate: WlcmPhoneInputDirective, descendants: true }], viewQueries: [{ propertyName: "codeSelect", first: true, predicate: WlcmCountryCodeSelectComponent, descendants: true }], ngImport: i0, template: "<wlcm-country-code-select\n [control]=\"control\"\n (changed)=\"handleCountryChange()\"\n></wlcm-country-code-select>\n\n<div class=\"wlcm-phone-input-container-divider\"></div>\n\n<ng-content select=\"[wlcmPhoneInput]\"></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: WlcmCountryCodeSelectComponent, selector: "wlcm-country-code-select", inputs: ["control"], outputs: ["changed"] }] }); }
78
+ };
79
+ WlcmPhoneInputContainerComponent = __decorate([
80
+ UntilDestroy(),
81
+ __metadata("design:paramtypes", [NgZone])
82
+ ], WlcmPhoneInputContainerComponent);
83
+ export { WlcmPhoneInputContainerComponent };
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputContainerComponent, decorators: [{
85
+ type: Component,
86
+ args: [{ selector: 'wlcm-phone-input-container', host: { class: 'wlcm-phone-input-container' }, standalone: true, imports: [CommonModule, WlcmCountryCodeSelectComponent], providers: [
87
+ {
88
+ provide: WLCM_INPUT_BINDER,
89
+ useFactory: () => {
90
+ const container = inject(WlcmPhoneInputContainerComponent, { self: true });
91
+ return { bind: () => container };
92
+ },
93
+ },
94
+ { provide: WLCM_PHONE_ADAPTER, useExisting: forwardRef(() => WlcmPhoneInputContainerComponent) },
95
+ ], template: "<wlcm-country-code-select\n [control]=\"control\"\n (changed)=\"handleCountryChange()\"\n></wlcm-country-code-select>\n\n<div class=\"wlcm-phone-input-container-divider\"></div>\n\n<ng-content select=\"[wlcmPhoneInput]\"></ng-content>\n" }]
96
+ }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { codeSelect: [{
97
+ type: ViewChild,
98
+ args: [WlcmCountryCodeSelectComponent]
99
+ }], phoneInput: [{
100
+ type: ContentChild,
101
+ args: [WlcmPhoneInputDirective]
102
+ }] } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvcGhvbmUtaW5wdXQvc3JjL2xpYi9jb21wb25lbnRzL3Bob25lLWlucHV0LWNvbnRhaW5lci9waG9uZS1pbnB1dC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvbGliL2NvbXBvbmVudHMvcGhvbmUtaW5wdXQtY29udGFpbmVyL3Bob25lLWlucHV0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRSxPQUFPLEVBQUUsU0FBUyxFQUE0QixZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkgsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFn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SUFBSSxFQUFFLENBQUMsQ0FBQztnQ0FFN0csT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDbkMsQ0FBQzt5QkFDRjt3QkFDRCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQ0FBaUMsQ0FBQyxFQUFFO3FCQUNqRzsyRUFXa0QsVUFBVTtzQkFBNUQsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBRU0sVUFBVTtzQkFBeEQsWUFBWTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIE5nWm9uZSwgVmlld0NoaWxkLCBmb3J3YXJkUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdsY21QaG9uZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9waG9uZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV0xDTV9JTlBVVF9CSU5ERVIsIFdsY21Gb3JtRmllbGRJbnB1dCB9IGZyb20gJ0B3bGNtL2FuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgV0xDTV9QSE9ORV9BREFQVEVSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Bob25lLWFkYXB0ZXIuY29uc3RhbnRzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50LCBtZXJnZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXbGNtUGhvbmVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Bob25lLWFkYXB0ZXIubW9kZWxzJztcbmltcG9ydCB7IEFzWW91VHlwZSwgQ291bnRyeUNvZGUsIFBob25lTnVtYmVyLCBnZXRQaG9uZUNvZGUsIGlzVmFsaWROdW1iZXIsIHBhcnNlUGhvbmVOdW1iZXIgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcyc7XG5pbXBvcnQgeyBXbGNtQ291bnRyeUNvZGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jb3VudHJ5LWNvZGUtc2VsZWN0L2NvdW50cnktY29kZS1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tcGhvbmUtaW5wdXQtY29udGFpbmVyJyxcbiAgaG9zdDogeyBjbGFzczogJ3dsY20tcGhvbmUtaW5wdXQtY29udGFpbmVyJyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBXbGNtQ291bnRyeUNvZGVTZWxlY3RDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vcGhvbmUtaW5wdXQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Bob25lLWlucHV0LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFdMQ01fSU5QVVRfQklOREVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXI6IFdsY21QaG9uZUlucHV0Q29udGFpbmVyQ29tcG9uZW50ID0gaW5qZWN0KFdsY21QaG9uZUlucHV0Q29udGFpbmVyQ29tcG9uZW50LCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgYmluZDogKCkgPT4gY29udGFpbmVyIH07XG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBXTENNX1BIT05FX0FEQVBURVIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21QaG9uZUlucHV0Q29udGFpbmVyQ29tcG9uZW50KSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtUGhvbmVJbnB1dENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIFdsY21Gb3JtRmllbGRJbnB1dCwgV2xjbVBob25lQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzU3RyZWFtJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYmx1clN0cmVhbSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGZvY3VzJDogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMuX2ZvY3VzU3RyZWFtJC5hc09ic2VydmFibGUoKTtcblxuICBibHVyJDogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMuX2JsdXJTdHJlYW0kLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIEBWaWV3Q2hpbGQoV2xjbUNvdW50cnlDb2RlU2VsZWN0Q29tcG9uZW50KSBwcml2YXRlIGNvZGVTZWxlY3QhOiBXbGNtQ291bnRyeUNvZGVTZWxlY3RDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChXbGNtUGhvbmVJbnB1dERpcmVjdGl2ZSkgcHJpdmF0ZSBwaG9uZUlucHV0ITogV2xjbVBob25lSW5wdXREaXJlY3RpdmU7XG5cbiAgcmVhZG9ubHkgY29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJ1VTJyk7XG5cbiAgcHJpdmF0ZSBfYXNZb3VUeXBlID0gbmV3IEFzWW91VHlwZSgnVVMnKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF96b25lOiBOZ1pvbmUpIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5waG9uZUlucHV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBbd2xjbVBob25lSW5wdXRdIGRpcmVjdGl2ZSBtdXN0IGJlIHByb3ZpZGVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlSW5wdXRFdmVudHMoKTtcbiAgfVxuXG4gIGlzRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5waG9uZUlucHV0LmVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnBob25lSW5wdXQuZWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcGFyc2VWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuXG4gICAgaWYgKGlzVmFsaWROdW1iZXIodmFsdWUpKSB7XG4gICAgICBjb25zdCByZXN1bHQ6IFBob25lTnVtYmVyID0gcGFyc2VQaG9uZU51bWJlcih2YWx1ZSwgJ1VTJyk7XG5cbiAgICAgIGlmIChyZXN1bHQuY291bnRyeSkgdGhpcy5jb250cm9sLnNldFZhbHVlKHJlc3VsdC5jb3VudHJ5KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdC5uYXRpb25hbE51bWJlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG5cbiAgZm9ybWF0VmFsdWUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgdGhpcy5fYXNZb3VUeXBlLnJlc2V0KCk7XG5cbiAgICB0aGlzLl9hc1lvdVR5cGUuaW5wdXQoYCske3RoaXMuY3VycmVudENhbGxpbmdDb2RlfSR7dmFsdWV9YCk7XG5cbiAgICBjb25zdCBjb3VudHJ5Q29kZTogQ291bnRyeUNvZGUgfCB1bmRlZmluZWQgPSB0aGlzLl9hc1lvdVR5cGUuZ2V0Q291bnRyeSgpO1xuXG4gICAgaWYgKGNvdW50cnlDb2RlKSB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoY291bnRyeUNvZGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2FzWW91VHlwZS5nZXROdW1iZXIoKT8ubnVtYmVyID8/ICcnO1xuICB9O1xuXG4gIGhhbmRsZUNvdW50cnlDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5waG9uZUlucHV0Ll91cGRhdGVDb250cm9sKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBjdXJyZW50Q2FsbGluZ0NvZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0UGhvbmVDb2RlKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUlucHV0RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgbWVyZ2UoXG4gICAgICAgIGZyb21FdmVudCh0aGlzLnBob25lSW5wdXQuZWxlbWVudCwgJ2ZvY3VzJykucGlwZSh0YXAoKCkgPT4gdGhpcy5fZm9jdXNTdHJlYW0kLm5leHQoKSkpLFxuICAgICAgICBmcm9tRXZlbnQodGhpcy5waG9uZUlucHV0LmVsZW1lbnQsICdibHVyJykucGlwZSh0YXAoKCkgPT4gdGhpcy5fYmx1clN0cmVhbSQubmV4dCgpKSlcbiAgICAgIClcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHdsY20tY291bnRyeS1jb2RlLXNlbGVjdFxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgKGNoYW5nZWQpPVwiaGFuZGxlQ291bnRyeUNoYW5nZSgpXCJcbj48L3dsY20tY291bnRyeS1jb2RlLXNlbGVjdD5cblxuPGRpdiBjbGFzcz1cIndsY20tcGhvbmUtaW5wdXQtY29udGFpbmVyLWRpdmlkZXJcIj48L2Rpdj5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dsY21QaG9uZUlucHV0XVwiPjwvbmctY29udGVudD5cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { WlcmCountryCodeOption } from '../models/country-code.models';
3
+ import { countries, getCountryCode, getEmojiFlag } from 'countries-list';
4
+ import { getCountries, getPhoneCode } from 'libphonenumber-js';
5
+ const COUNTRIES_LIST = getCountries()
6
+ .filter((code) => countries.hasOwnProperty(code))
7
+ .map((code) => ({ ...countries[code], code }))
8
+ .sort((a, b) => a.name.localeCompare(b.name));
9
+ export const WLCM_COUNTRY_CODE_OPTIONS = new InjectionToken('WLCM_COUNTRY_CODE_OPTIONS', {
10
+ providedIn: 'root',
11
+ factory: () => {
12
+ return COUNTRIES_LIST.map((country) => {
13
+ const phone = getPhoneCode(country.code);
14
+ const viewValue = `${country.name} +${phone}`;
15
+ const emojiFlag = getEmojiFlag(getCountryCode(country.name));
16
+ return new WlcmCountryCodeOption(getCountryCode(country.name), viewValue, emojiFlag);
17
+ });
18
+ },
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1jb2RlLW9wdGlvbnMuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvbGliL2NvbnN0YW50cy9jb3VudHJ5LWNvZGUtb3B0aW9ucy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQTBCLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakcsT0FBTyxFQUFlLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU01RSxNQUFNLGNBQWMsR0FBa0IsWUFBWSxFQUFFO0tBQ2pELE1BQU0sQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDN0QsR0FBRyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQW9CLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE0QyxJQUFJLGNBQWMsQ0FDbEcsMkJBQTJCLEVBQzNCO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQTRCLEVBQUU7UUFDckMsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBb0IsRUFBRSxFQUFFO1lBQ2pELE1BQU0sS0FBSyxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakQsTUFBTSxTQUFTLEdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBRXRELE1BQU0sU0FBUyxHQUFXLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBaUIsQ0FBQyxDQUFDO1lBRXJGLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdsY21Db3VudHJ5Q29kZU9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb3VudHJ5LWNvZGUubW9kZWxzJztcbmltcG9ydCB7IElDb3VudHJ5LCBUQ291bnRyeUNvZGUsIGNvdW50cmllcywgZ2V0Q291bnRyeUNvZGUsIGdldEVtb2ppRmxhZyB9IGZyb20gJ2NvdW50cmllcy1saXN0JztcbmltcG9ydCB7IENvdW50cnlDb2RlLCBnZXRDb3VudHJpZXMsIGdldFBob25lQ29kZSB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcblxuaW50ZXJmYWNlIFdsY21Db3VudHJ5IGV4dGVuZHMgSUNvdW50cnkge1xuICBjb2RlOiBDb3VudHJ5Q29kZTtcbn1cblxuY29uc3QgQ09VTlRSSUVTX0xJU1Q6IFdsY21Db3VudHJ5W10gPSBnZXRDb3VudHJpZXMoKVxuICAuZmlsdGVyKChjb2RlOiBDb3VudHJ5Q29kZSkgPT4gY291bnRyaWVzLmhhc093blByb3BlcnR5KGNvZGUpKVxuICAubWFwKChjb2RlOiBDb3VudHJ5Q29kZSkgPT4gKHsgLi4uY291bnRyaWVzW2NvZGUgYXMgVENvdW50cnlDb2RlXSwgY29kZSB9KSlcbiAgLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xuXG5leHBvcnQgY29uc3QgV0xDTV9DT1VOVFJZX0NPREVfT1BUSU9OUzogSW5qZWN0aW9uVG9rZW48V2xjbUNvdW50cnlDb2RlT3B0aW9uW10+ID0gbmV3IEluamVjdGlvblRva2VuKFxuICAnV0xDTV9DT1VOVFJZX0NPREVfT1BUSU9OUycsXG4gIHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG4gICAgZmFjdG9yeTogKCk6IFdsY21Db3VudHJ5Q29kZU9wdGlvbltdID0+IHtcbiAgICAgIHJldHVybiBDT1VOVFJJRVNfTElTVC5tYXAoKGNvdW50cnk6IFdsY21Db3VudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHBob25lOiBzdHJpbmcgPSBnZXRQaG9uZUNvZGUoY291bnRyeS5jb2RlKTtcblxuICAgICAgICBjb25zdCB2aWV3VmFsdWU6IHN0cmluZyA9IGAke2NvdW50cnkubmFtZX0gKyR7cGhvbmV9YDtcblxuICAgICAgICBjb25zdCBlbW9qaUZsYWc6IHN0cmluZyA9IGdldEVtb2ppRmxhZyhnZXRDb3VudHJ5Q29kZShjb3VudHJ5Lm5hbWUpIGFzIFRDb3VudHJ5Q29kZSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBXbGNtQ291bnRyeUNvZGVPcHRpb24oZ2V0Q291bnRyeUNvZGUoY291bnRyeS5uYW1lKSBhcyBUQ291bnRyeUNvZGUsIHZpZXdWYWx1ZSwgZW1vamlGbGFnKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH1cbik7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const WLCM_PHONE_ADAPTER = new InjectionToken('WLCM_PHONE_ADAPTER');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtYWRhcHRlci5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3Bob25lLWlucHV0L3NyYy9saWIvY29uc3RhbnRzL3Bob25lLWFkYXB0ZXIuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXFDLElBQUksY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2xjbVBob25lQWRhcHRlciB9IGZyb20gJy4uL21vZGVscy9waG9uZS1hZGFwdGVyLm1vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBXTENNX1BIT05FX0FEQVBURVI6IEluamVjdGlvblRva2VuPFdsY21QaG9uZUFkYXB0ZXI+ID0gbmV3IEluamVjdGlvblRva2VuKCdXTENNX1BIT05FX0FEQVBURVInKTtcbiJdfQ==
@@ -0,0 +1,119 @@
1
+ import { Directive, ElementRef, HostListener, Inject, effect, forwardRef, input, } from '@angular/core';
2
+ import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
3
+ import IMask from 'imask';
4
+ import { WLCM_PHONE_ADAPTER } from '../constants/phone-adapter.constants';
5
+ import { WlcmPhoneAdapter } from '../models/phone-adapter.models';
6
+ import { Subject, fromEvent, takeUntil } from 'rxjs';
7
+ import { WlcmPhoneValidationErrorType } from '../models/phone.models';
8
+ import { isValidNumber } from 'libphonenumber-js';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../models/phone-adapter.models";
11
+ export class WlcmPhoneInputDirective {
12
+ handleBlur() {
13
+ this._touched?.();
14
+ }
15
+ constructor(_elementRef, phoneAdapter) {
16
+ this._elementRef = _elementRef;
17
+ this.phoneAdapter = phoneAdapter;
18
+ this.control = new FormControl();
19
+ this.destroyInputObserver$ = new Subject();
20
+ this.mask = input('', { alias: 'wlcmPhoneInputMask' });
21
+ effect(() => {
22
+ const maskPattern = this.mask();
23
+ if (maskPattern) {
24
+ if (!this._imaskRef)
25
+ this.initializeMask();
26
+ this._imaskRef.mask = maskPattern;
27
+ this._imaskRef.updateControl();
28
+ this._imaskRef.on('accept', () => this.handleInput());
29
+ }
30
+ else {
31
+ this.subscribeToInputEvent();
32
+ }
33
+ });
34
+ this.subscribeToPasteEvent();
35
+ }
36
+ ngOnDestroy() {
37
+ this.destroyInputObserver$.next();
38
+ this.destroyInputObserver$.complete();
39
+ }
40
+ writeValue(value) {
41
+ const parsedValue = this.phoneAdapter.parseValue(value);
42
+ this.element.value = parsedValue;
43
+ }
44
+ registerOnChange(callback) {
45
+ this._changed = callback;
46
+ }
47
+ registerOnTouched(callback) {
48
+ this._touched = callback;
49
+ }
50
+ registerOnValidatorChange(callback) {
51
+ this._validatorChanged = callback;
52
+ }
53
+ validate(control) {
54
+ const isValid = isValidNumber(control.value ?? '');
55
+ if (!isValid) {
56
+ return { [WlcmPhoneValidationErrorType.InvalidPhoneNumber]: true };
57
+ }
58
+ return null;
59
+ }
60
+ setDisabledState(isDisabled) {
61
+ if (isDisabled) {
62
+ return this.control.disable();
63
+ }
64
+ this.control.enable();
65
+ }
66
+ _updateControl() {
67
+ this.handleInput();
68
+ }
69
+ get element() {
70
+ return this._elementRef.nativeElement;
71
+ }
72
+ handleInput() {
73
+ const value = this.element.value;
74
+ this._changed?.(this.phoneAdapter.formatValue(value));
75
+ }
76
+ handlePaste(event) {
77
+ event.preventDefault();
78
+ const value = event.clipboardData?.getData('text') ?? '';
79
+ this.writeValue(value);
80
+ this.handleInput();
81
+ }
82
+ initializeMask() {
83
+ this._imaskRef = IMask(this.element, { mask: Number });
84
+ }
85
+ subscribeToInputEvent() {
86
+ fromEvent(this.element, 'input')
87
+ .pipe(takeUntil(this.destroyInputObserver$))
88
+ .subscribe(() => this.handleInput());
89
+ }
90
+ subscribeToPasteEvent() {
91
+ fromEvent(this.element, 'paste')
92
+ .pipe(takeUntil(this.destroyInputObserver$))
93
+ .subscribe((event) => this.handlePaste(event));
94
+ }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputDirective, deps: [{ token: i0.ElementRef }, { token: WLCM_PHONE_ADAPTER }], target: i0.ɵɵFactoryTarget.Directive }); }
96
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.5", type: WlcmPhoneInputDirective, isStandalone: true, selector: "[wlcmPhoneInput]", inputs: { mask: { classPropertyName: "mask", publicName: "wlcmPhoneInputMask", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "handleBlur($event)" }, classAttribute: "wlcm-form-field-input" }, providers: [
97
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
98
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
99
+ ], ngImport: i0 }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputDirective, decorators: [{
102
+ type: Directive,
103
+ args: [{
104
+ selector: '[wlcmPhoneInput]',
105
+ host: { class: 'wlcm-form-field-input' },
106
+ standalone: true,
107
+ providers: [
108
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
109
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
110
+ ],
111
+ }]
112
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.WlcmPhoneAdapter, decorators: [{
113
+ type: Inject,
114
+ args: [WLCM_PHONE_ADAPTER]
115
+ }] }], propDecorators: { handleBlur: [{
116
+ type: HostListener,
117
+ args: ['blur', ['$event']]
118
+ }] } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvbGliL2RpcmVjdGl2ZXMvcGhvbmUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBR04sTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFvQixNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFXbEQsTUFBTSxPQUFPLHVCQUF1QjtJQWVBLFVBQVU7UUFDMUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQ1UsV0FBeUMsRUFDYixZQUE4QjtRQUQxRCxnQkFBVyxHQUFYLFdBQVcsQ0FBOEI7UUFDYixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFwQjNELFlBQU8sR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQVExQywwQkFBcUIsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUk3RCxTQUFJLEdBQXdCLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFB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RUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDL0YsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNwRztpQkFDRjs7MEJBc0JJLE1BQU07MkJBQUMsa0JBQWtCO3lDQU5NLFVBQVU7c0JBQTNDLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXRTaWduYWwsXG4gIE9uRGVzdHJveSxcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IElNYXNrLCB7IElucHV0TWFzayB9IGZyb20gJ2ltYXNrJztcbmltcG9ydCB7IFdMQ01fUEhPTkVfQURBUFRFUiB9IGZyb20gJy4uL2NvbnN0YW50cy9waG9uZS1hZGFwdGVyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtUGhvbmVBZGFwdGVyIH0gZnJvbSAnLi4vbW9kZWxzL3Bob25lLWFkYXB0ZXIubW9kZWxzJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXbGNtUGhvbmVWYWxpZGF0aW9uRXJyb3JUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3Bob25lLm1vZGVscyc7XG5pbXBvcnQgeyBpc1ZhbGlkTnVtYmVyIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbd2xjbVBob25lSW5wdXRdJyxcbiAgaG9zdDogeyBjbGFzczogJ3dsY20tZm9ybS1maWVsZC1pbnB1dCcgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtUGhvbmVJbnB1dERpcmVjdGl2ZSksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbVBob25lSW5wdXREaXJlY3RpdmUpLCBtdWx0aTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtUGhvbmVJbnB1dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHJlYWRvbmx5IGNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3RvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3ZhbGlkYXRvckNoYW5nZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgZGVzdHJveUlucHV0T2JzZXJ2ZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9pbWFza1JlZj86IElucHV0TWFzaztcblxuICBtYXNrOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJycsIHsgYWxpYXM6ICd3bGNtUGhvbmVJbnB1dE1hc2snIH0pO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInLCBbJyRldmVudCddKSBoYW5kbGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQ/LigpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICBASW5qZWN0KFdMQ01fUEhPTkVfQURBUFRFUikgcHJpdmF0ZSBwaG9uZUFkYXB0ZXI6IFdsY21QaG9uZUFkYXB0ZXJcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG1hc2tQYXR0ZXJuOiBzdHJpbmcgPSB0aGlzLm1hc2soKTtcblxuICAgICAgaWYgKG1hc2tQYXR0ZXJuKSB7XG4gICAgICAgIGlmICghdGhpcy5faW1hc2tSZWYpIHRoaXMuaW5pdGlhbGl6ZU1hc2soKTtcblxuICAgICAgICB0aGlzLl9pbWFza1JlZiEubWFzayA9IG1hc2tQYXR0ZXJuO1xuXG4gICAgICAgIHRoaXMuX2ltYXNrUmVmIS51cGRhdGVDb250cm9sKCk7XG5cbiAgICAgICAgdGhpcy5faW1hc2tSZWYhLm9uKCdhY2NlcHQnLCAoKSA9PiB0aGlzLmhhbmRsZUlucHV0KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb0lucHV0RXZlbnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaWJlVG9QYXN0ZUV2ZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lJbnB1dE9ic2VydmVyJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95SW5wdXRPYnNlcnZlciQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhcnNlZFZhbHVlOiBzdHJpbmcgPSB0aGlzLnBob25lQWRhcHRlci5wYXJzZVZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHBhcnNlZFZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgaXNWYWxpZDogYm9vbGVhbiA9IGlzVmFsaWROdW1iZXIoY29udHJvbC52YWx1ZSA/PyAnJyk7XG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB7IFtXbGNtUGhvbmVWYWxpZGF0aW9uRXJyb3JUeXBlLkludmFsaWRQaG9uZU51bWJlcl06IHRydWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICBfdXBkYXRlQ29udHJvbCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUlucHV0KCk7XG4gIH1cblxuICBnZXQgZWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVJbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gdGhpcy5lbGVtZW50LnZhbHVlO1xuXG4gICAgdGhpcy5fY2hhbmdlZD8uKHRoaXMucGhvbmVBZGFwdGVyLmZvcm1hdFZhbHVlKHZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpID8/ICcnO1xuXG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuaGFuZGxlSW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1hc2soKTogdm9pZCB7XG4gICAgdGhpcy5faW1hc2tSZWYgPSBJTWFzayh0aGlzLmVsZW1lbnQsIHsgbWFzazogTnVtYmVyIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0lucHV0RXZlbnQoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudCwgJ2lucHV0JylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lJbnB1dE9ic2VydmVyJCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFuZGxlSW5wdXQoKSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvUGFzdGVFdmVudCgpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KHRoaXMuZWxlbWVudCwgJ3Bhc3RlJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lJbnB1dE9ic2VydmVyJCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHRoaXMuaGFuZGxlUGFzdGUoZXZlbnQpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,10 @@
1
+ import { WlcmOption } from '@wlcm/angular/core';
2
+ export class WlcmCountryCodeOption extends WlcmOption {
3
+ constructor(value, viewValue, emojiFlag) {
4
+ super(value, viewValue);
5
+ this.value = value;
6
+ this.viewValue = viewValue;
7
+ this.emojiFlag = emojiFlag;
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1jb2RlLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvcGhvbmUtaW5wdXQvc3JjL2xpYi9tb2RlbHMvY291bnRyeS1jb2RlLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFVBQVU7SUFDbkQsWUFBNEIsS0FBYSxFQUFrQixTQUFpQixFQUFTLFNBQWlCO1FBQ3BHLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFERSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQWtCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFRO0lBRXRHLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdsY21PcHRpb24gfSBmcm9tICdAd2xjbS9hbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgV2xjbUNvdW50cnlDb2RlT3B0aW9uIGV4dGVuZHMgV2xjbU9wdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdmVycmlkZSB2YWx1ZTogc3RyaW5nLCBwdWJsaWMgb3ZlcnJpZGUgdmlld1ZhbHVlOiBzdHJpbmcsIHB1YmxpYyBlbW9qaUZsYWc6IHN0cmluZykge1xuICAgIHN1cGVyKHZhbHVlLCB2aWV3VmFsdWUpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class WlcmPhoneAdapter {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtYWRhcHRlci5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3Bob25lLWlucHV0L3NyYy9saWIvbW9kZWxzL3Bob25lLWFkYXB0ZXIubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sT0FBZ0IsZ0JBQWdCO0NBSXJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBXbGNtUGFyc2VkUGhvbmUge1xuICBjb3VudHJ5Q29kZTogc3RyaW5nO1xuXG4gIHBob25lTnVtYmVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXbGNtUGhvbmVBZGFwdGVyIHtcbiAgYWJzdHJhY3QgcGFyc2VWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGZvcm1hdFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export var WlcmPhoneValidationErrorType;
2
+ (function (WlcmPhoneValidationErrorType) {
3
+ WlcmPhoneValidationErrorType["InvalidPhoneNumber"] = "InvalidPhoneNumber";
4
+ })(WlcmPhoneValidationErrorType || (WlcmPhoneValidationErrorType = {}));
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvbGliL21vZGVscy9waG9uZS5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksNEJBRVg7QUFGRCxXQUFZLDRCQUE0QjtJQUN0Qyx5RUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBRlcsNEJBQTRCLEtBQTVCLDRCQUE0QixRQUV2QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFdsY21QaG9uZVZhbGlkYXRpb25FcnJvclR5cGUge1xuICBJbnZhbGlkUGhvbmVOdW1iZXIgPSAnSW52YWxpZFBob25lTnVtYmVyJyxcbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { WlcmPhoneInputContainerComponent } from './components/phone-input-container/phone-input-container.component';
4
+ import { WlcmPhoneInputDirective } from './directives/phone-input.directive';
5
+ import * as i0 from "@angular/core";
6
+ const publicComponents = [WlcmPhoneInputContainerComponent];
7
+ const publicDirectives = [WlcmPhoneInputDirective];
8
+ export class WlcmPhoneInputModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, imports: [CommonModule, WlcmPhoneInputContainerComponent, WlcmPhoneInputDirective], exports: [WlcmPhoneInputContainerComponent, WlcmPhoneInputDirective] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, imports: [CommonModule, publicComponents] }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ imports: [CommonModule, ...publicComponents, ...publicDirectives],
17
+ exports: [...publicComponents, ...publicDirectives],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvbGliL3Bob25lLWlucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUN0SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFFN0UsTUFBTSxnQkFBZ0IsR0FBb0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sZ0JBQWdCLEdBQW9CLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQU1wRSxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixZQUhyQixZQUFZLEVBTG1CLGdDQUFnQyxFQUVoQyx1QkFBdUIsYUFGdkIsZ0NBQWdDLEVBRWhDLHVCQUF1QjsrR0FNckQsb0JBQW9CLFlBSHJCLFlBQVksRUFBSyxnQkFBZ0I7OzJGQUdoQyxvQkFBb0I7a0JBSmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztvQkFDakUsT0FBTyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLGdCQUFnQixDQUFDO2lCQUNwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgV2xjbVBob25lSW5wdXRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGhvbmUtaW5wdXQtY29udGFpbmVyL3Bob25lLWlucHV0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2xjbVBob25lSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcGhvbmUtaW5wdXQuZGlyZWN0aXZlJztcblxuY29uc3QgcHVibGljQ29tcG9uZW50czogVHlwZTx1bmtub3duPltdID0gW1dsY21QaG9uZUlucHV0Q29udGFpbmVyQ29tcG9uZW50XTtcblxuY29uc3QgcHVibGljRGlyZWN0aXZlczogVHlwZTx1bmtub3duPltdID0gW1dsY21QaG9uZUlucHV0RGlyZWN0aXZlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgLi4ucHVibGljQ29tcG9uZW50cywgLi4ucHVibGljRGlyZWN0aXZlc10sXG4gIGV4cG9ydHM6IFsuLi5wdWJsaWNDb21wb25lbnRzLCAuLi5wdWJsaWNEaXJlY3RpdmVzXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbVBob25lSW5wdXRNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { getPhoneCode } from 'libphonenumber-js';
3
+ import * as i0 from "@angular/core";
4
+ export class PhoneCodePipe {
5
+ transform(value) {
6
+ return value ? getPhoneCode(value) : '1';
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PhoneCodePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: PhoneCodePipe, isStandalone: true, name: "phoneCode" }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PhoneCodePipe, decorators: [{
12
+ type: Pipe,
13
+ args: [{
14
+ name: 'phoneCode',
15
+ standalone: true,
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtY29kZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvbGliL3BpcGVzL3Bob25lLWNvZGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTTlELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFNBQVMsQ0FBQyxLQUF5QjtRQUNqQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0MsQ0FBQzs4R0FIVSxhQUFhOzRHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvdW50cnlDb2RlLCBnZXRQaG9uZUNvZGUgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3Bob25lQ29kZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFBob25lQ29kZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBDb3VudHJ5Q29kZSB8IG51bGwpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IGdldFBob25lQ29kZSh2YWx1ZSkgOiAnMSc7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2xjbS1hbmd1bGFyLXBob25lLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9waG9uZS1pbnB1dC9zcmMvd2xjbS1hbmd1bGFyLXBob25lLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,302 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, input, effect, forwardRef, Directive, Inject, HostListener, Pipe, output, Component, inject, NgZone, ViewChild, ContentChild, NgModule } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import { __decorate, __metadata } from 'tslib';
5
+ import * as i2 from '@angular/forms';
6
+ import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
7
+ import IMask from 'imask';
8
+ import { Subject, fromEvent, takeUntil, merge, tap } from 'rxjs';
9
+ import { isValidNumber, getCountries, getPhoneCode, AsYouType, parsePhoneNumber } from 'libphonenumber-js';
10
+ import * as i1 from '@wlcm/angular/forms';
11
+ import { WlcmFormsModule, WLCM_INPUT_BINDER } from '@wlcm/angular/forms';
12
+ import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
13
+ import { WlcmOption } from '@wlcm/angular/core';
14
+ import { countries, getEmojiFlag, getCountryCode } from 'countries-list';
15
+
16
+ const WLCM_PHONE_ADAPTER = new InjectionToken('WLCM_PHONE_ADAPTER');
17
+
18
+ class WlcmPhoneAdapter {
19
+ }
20
+
21
+ var WlcmPhoneValidationErrorType;
22
+ (function (WlcmPhoneValidationErrorType) {
23
+ WlcmPhoneValidationErrorType["InvalidPhoneNumber"] = "InvalidPhoneNumber";
24
+ })(WlcmPhoneValidationErrorType || (WlcmPhoneValidationErrorType = {}));
25
+
26
+ class WlcmPhoneInputDirective {
27
+ handleBlur() {
28
+ this._touched?.();
29
+ }
30
+ constructor(_elementRef, phoneAdapter) {
31
+ this._elementRef = _elementRef;
32
+ this.phoneAdapter = phoneAdapter;
33
+ this.control = new FormControl();
34
+ this.destroyInputObserver$ = new Subject();
35
+ this.mask = input('', { alias: 'wlcmPhoneInputMask' });
36
+ effect(() => {
37
+ const maskPattern = this.mask();
38
+ if (maskPattern) {
39
+ if (!this._imaskRef)
40
+ this.initializeMask();
41
+ this._imaskRef.mask = maskPattern;
42
+ this._imaskRef.updateControl();
43
+ this._imaskRef.on('accept', () => this.handleInput());
44
+ }
45
+ else {
46
+ this.subscribeToInputEvent();
47
+ }
48
+ });
49
+ this.subscribeToPasteEvent();
50
+ }
51
+ ngOnDestroy() {
52
+ this.destroyInputObserver$.next();
53
+ this.destroyInputObserver$.complete();
54
+ }
55
+ writeValue(value) {
56
+ const parsedValue = this.phoneAdapter.parseValue(value);
57
+ this.element.value = parsedValue;
58
+ }
59
+ registerOnChange(callback) {
60
+ this._changed = callback;
61
+ }
62
+ registerOnTouched(callback) {
63
+ this._touched = callback;
64
+ }
65
+ registerOnValidatorChange(callback) {
66
+ this._validatorChanged = callback;
67
+ }
68
+ validate(control) {
69
+ const isValid = isValidNumber(control.value ?? '');
70
+ if (!isValid) {
71
+ return { [WlcmPhoneValidationErrorType.InvalidPhoneNumber]: true };
72
+ }
73
+ return null;
74
+ }
75
+ setDisabledState(isDisabled) {
76
+ if (isDisabled) {
77
+ return this.control.disable();
78
+ }
79
+ this.control.enable();
80
+ }
81
+ _updateControl() {
82
+ this.handleInput();
83
+ }
84
+ get element() {
85
+ return this._elementRef.nativeElement;
86
+ }
87
+ handleInput() {
88
+ const value = this.element.value;
89
+ this._changed?.(this.phoneAdapter.formatValue(value));
90
+ }
91
+ handlePaste(event) {
92
+ event.preventDefault();
93
+ const value = event.clipboardData?.getData('text') ?? '';
94
+ this.writeValue(value);
95
+ this.handleInput();
96
+ }
97
+ initializeMask() {
98
+ this._imaskRef = IMask(this.element, { mask: Number });
99
+ }
100
+ subscribeToInputEvent() {
101
+ fromEvent(this.element, 'input')
102
+ .pipe(takeUntil(this.destroyInputObserver$))
103
+ .subscribe(() => this.handleInput());
104
+ }
105
+ subscribeToPasteEvent() {
106
+ fromEvent(this.element, 'paste')
107
+ .pipe(takeUntil(this.destroyInputObserver$))
108
+ .subscribe((event) => this.handlePaste(event));
109
+ }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputDirective, deps: [{ token: i0.ElementRef }, { token: WLCM_PHONE_ADAPTER }], target: i0.ɵɵFactoryTarget.Directive }); }
111
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.5", type: WlcmPhoneInputDirective, isStandalone: true, selector: "[wlcmPhoneInput]", inputs: { mask: { classPropertyName: "mask", publicName: "wlcmPhoneInputMask", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "handleBlur($event)" }, classAttribute: "wlcm-form-field-input" }, providers: [
112
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
113
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
114
+ ], ngImport: i0 }); }
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputDirective, decorators: [{
117
+ type: Directive,
118
+ args: [{
119
+ selector: '[wlcmPhoneInput]',
120
+ host: { class: 'wlcm-form-field-input' },
121
+ standalone: true,
122
+ providers: [
123
+ { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
124
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },
125
+ ],
126
+ }]
127
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: WlcmPhoneAdapter, decorators: [{
128
+ type: Inject,
129
+ args: [WLCM_PHONE_ADAPTER]
130
+ }] }], propDecorators: { handleBlur: [{
131
+ type: HostListener,
132
+ args: ['blur', ['$event']]
133
+ }] } });
134
+
135
+ class WlcmCountryCodeOption extends WlcmOption {
136
+ constructor(value, viewValue, emojiFlag) {
137
+ super(value, viewValue);
138
+ this.value = value;
139
+ this.viewValue = viewValue;
140
+ this.emojiFlag = emojiFlag;
141
+ }
142
+ }
143
+
144
+ const COUNTRIES_LIST = getCountries()
145
+ .filter((code) => countries.hasOwnProperty(code))
146
+ .map((code) => ({ ...countries[code], code }))
147
+ .sort((a, b) => a.name.localeCompare(b.name));
148
+ const WLCM_COUNTRY_CODE_OPTIONS = new InjectionToken('WLCM_COUNTRY_CODE_OPTIONS', {
149
+ providedIn: 'root',
150
+ factory: () => {
151
+ return COUNTRIES_LIST.map((country) => {
152
+ const phone = getPhoneCode(country.code);
153
+ const viewValue = `${country.name} +${phone}`;
154
+ const emojiFlag = getEmojiFlag(getCountryCode(country.name));
155
+ return new WlcmCountryCodeOption(getCountryCode(country.name), viewValue, emojiFlag);
156
+ });
157
+ },
158
+ });
159
+
160
+ class PhoneCodePipe {
161
+ transform(value) {
162
+ return value ? getPhoneCode(value) : '1';
163
+ }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PhoneCodePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
165
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: PhoneCodePipe, isStandalone: true, name: "phoneCode" }); }
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PhoneCodePipe, decorators: [{
168
+ type: Pipe,
169
+ args: [{
170
+ name: 'phoneCode',
171
+ standalone: true,
172
+ }]
173
+ }] });
174
+
175
+ class WlcmCountryCodeSelectComponent {
176
+ constructor(options) {
177
+ this.options = options;
178
+ this.changed = output();
179
+ this.control = input(new FormControl('US'));
180
+ }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCountryCodeSelectComponent, deps: [{ token: WLCM_COUNTRY_CODE_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.5", type: WlcmCountryCodeSelectComponent, isStandalone: true, selector: "wlcm-country-code-select", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "wlcm-country-code-select" }, ngImport: i0, template: "<wlcm-select\n [options]=\"options\"\n [formControl]=\"control()\"\n [optionTemplate]=\"optionTemplate\"\n [triggerTemplate]=\"triggerTemplate\"\n (selectionChange)=\"changed.emit($event)\"\n></wlcm-select>\n\n<ng-template #optionTemplate let-option>\n <span class=\"emoji-flag\">{{ option.emojiFlag }}</span>\n\n {{ option.viewValue }}\n</ng-template>\n\n<ng-template #triggerTemplate let-selected>\n <div class=\"wlcm-country-code-select-trigger\">\n +{{ selected?.value | phoneCode }}\n </div>\n</ng-template>\n", styles: [".emoji-flag{font-size:20px;vertical-align:bottom;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: WlcmFormsModule }, { kind: "component", type: i1.WlcmSelectComponent, selector: "wlcm-select", inputs: ["multiple", "placeholder", "options", "optionTemplate", "triggerTemplate"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: PhoneCodePipe, name: "phoneCode" }] }); }
183
+ }
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmCountryCodeSelectComponent, decorators: [{
185
+ type: Component,
186
+ args: [{ selector: 'wlcm-country-code-select', host: { class: 'wlcm-country-code-select' }, standalone: true, imports: [CommonModule, WlcmFormsModule, ReactiveFormsModule, PhoneCodePipe], template: "<wlcm-select\n [options]=\"options\"\n [formControl]=\"control()\"\n [optionTemplate]=\"optionTemplate\"\n [triggerTemplate]=\"triggerTemplate\"\n (selectionChange)=\"changed.emit($event)\"\n></wlcm-select>\n\n<ng-template #optionTemplate let-option>\n <span class=\"emoji-flag\">{{ option.emojiFlag }}</span>\n\n {{ option.viewValue }}\n</ng-template>\n\n<ng-template #triggerTemplate let-selected>\n <div class=\"wlcm-country-code-select-trigger\">\n +{{ selected?.value | phoneCode }}\n </div>\n</ng-template>\n", styles: [".emoji-flag{font-size:20px;vertical-align:bottom;margin-right:8px}\n"] }]
187
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
188
+ type: Inject,
189
+ args: [WLCM_COUNTRY_CODE_OPTIONS]
190
+ }] }] });
191
+
192
+ let WlcmPhoneInputContainerComponent = class WlcmPhoneInputContainerComponent {
193
+ constructor(_zone) {
194
+ this._zone = _zone;
195
+ this._focusStream$ = new Subject();
196
+ this._blurStream$ = new Subject();
197
+ this.focus$ = this._focusStream$.asObservable();
198
+ this.blur$ = this._blurStream$.asObservable();
199
+ this.control = new FormControl('US');
200
+ this._asYouType = new AsYouType('US');
201
+ this.parseValue = (value) => {
202
+ if (!value || value.length === 0)
203
+ return '';
204
+ if (isValidNumber(value)) {
205
+ const result = parsePhoneNumber(value, 'US');
206
+ if (result.country)
207
+ this.control.setValue(result.country);
208
+ return result.nationalNumber;
209
+ }
210
+ return value;
211
+ };
212
+ this.formatValue = (value) => {
213
+ this._asYouType.reset();
214
+ this._asYouType.input(`+${this.currentCallingCode}${value}`);
215
+ const countryCode = this._asYouType.getCountry();
216
+ if (countryCode)
217
+ this.control.setValue(countryCode);
218
+ return this._asYouType.getNumber()?.number ?? '';
219
+ };
220
+ }
221
+ ngAfterContentInit() {
222
+ if (!this.phoneInput) {
223
+ throw new Error('The [wlcmPhoneInput] directive must be provided.');
224
+ }
225
+ this.handleInputEvents();
226
+ }
227
+ isFocused() {
228
+ return this.phoneInput.element === document.activeElement;
229
+ }
230
+ focus() {
231
+ this.phoneInput.element.focus();
232
+ }
233
+ handleCountryChange() {
234
+ this.phoneInput._updateControl();
235
+ }
236
+ get currentCallingCode() {
237
+ return getPhoneCode(this.control.value);
238
+ }
239
+ handleInputEvents() {
240
+ this._zone.runOutsideAngular(() => {
241
+ merge(fromEvent(this.phoneInput.element, 'focus').pipe(tap(() => this._focusStream$.next())), fromEvent(this.phoneInput.element, 'blur').pipe(tap(() => this._blurStream$.next())))
242
+ .pipe(untilDestroyed(this))
243
+ .subscribe();
244
+ });
245
+ }
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputContainerComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmPhoneInputContainerComponent, isStandalone: true, selector: "wlcm-phone-input-container", host: { classAttribute: "wlcm-phone-input-container" }, providers: [
248
+ {
249
+ provide: WLCM_INPUT_BINDER,
250
+ useFactory: () => {
251
+ const container = inject(WlcmPhoneInputContainerComponent, { self: true });
252
+ return { bind: () => container };
253
+ },
254
+ },
255
+ { provide: WLCM_PHONE_ADAPTER, useExisting: forwardRef(() => WlcmPhoneInputContainerComponent) },
256
+ ], queries: [{ propertyName: "phoneInput", first: true, predicate: WlcmPhoneInputDirective, descendants: true }], viewQueries: [{ propertyName: "codeSelect", first: true, predicate: WlcmCountryCodeSelectComponent, descendants: true }], ngImport: i0, template: "<wlcm-country-code-select\n [control]=\"control\"\n (changed)=\"handleCountryChange()\"\n></wlcm-country-code-select>\n\n<div class=\"wlcm-phone-input-container-divider\"></div>\n\n<ng-content select=\"[wlcmPhoneInput]\"></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: WlcmCountryCodeSelectComponent, selector: "wlcm-country-code-select", inputs: ["control"], outputs: ["changed"] }] }); }
257
+ };
258
+ WlcmPhoneInputContainerComponent = __decorate([
259
+ UntilDestroy(),
260
+ __metadata("design:paramtypes", [NgZone])
261
+ ], WlcmPhoneInputContainerComponent);
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputContainerComponent, decorators: [{
263
+ type: Component,
264
+ args: [{ selector: 'wlcm-phone-input-container', host: { class: 'wlcm-phone-input-container' }, standalone: true, imports: [CommonModule, WlcmCountryCodeSelectComponent], providers: [
265
+ {
266
+ provide: WLCM_INPUT_BINDER,
267
+ useFactory: () => {
268
+ const container = inject(WlcmPhoneInputContainerComponent, { self: true });
269
+ return { bind: () => container };
270
+ },
271
+ },
272
+ { provide: WLCM_PHONE_ADAPTER, useExisting: forwardRef(() => WlcmPhoneInputContainerComponent) },
273
+ ], template: "<wlcm-country-code-select\n [control]=\"control\"\n (changed)=\"handleCountryChange()\"\n></wlcm-country-code-select>\n\n<div class=\"wlcm-phone-input-container-divider\"></div>\n\n<ng-content select=\"[wlcmPhoneInput]\"></ng-content>\n" }]
274
+ }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { codeSelect: [{
275
+ type: ViewChild,
276
+ args: [WlcmCountryCodeSelectComponent]
277
+ }], phoneInput: [{
278
+ type: ContentChild,
279
+ args: [WlcmPhoneInputDirective]
280
+ }] } });
281
+
282
+ const publicComponents = [WlcmPhoneInputContainerComponent];
283
+ const publicDirectives = [WlcmPhoneInputDirective];
284
+ class WlcmPhoneInputModule {
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
286
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, imports: [CommonModule, WlcmPhoneInputContainerComponent, WlcmPhoneInputDirective], exports: [WlcmPhoneInputContainerComponent, WlcmPhoneInputDirective] }); }
287
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, imports: [CommonModule, publicComponents] }); }
288
+ }
289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmPhoneInputModule, decorators: [{
290
+ type: NgModule,
291
+ args: [{
292
+ imports: [CommonModule, ...publicComponents, ...publicDirectives],
293
+ exports: [...publicComponents, ...publicDirectives],
294
+ }]
295
+ }] });
296
+
297
+ /**
298
+ * Generated bundle index. Do not edit.
299
+ */
300
+
301
+ export { WlcmPhoneInputContainerComponent, WlcmPhoneInputDirective, WlcmPhoneInputModule, WlcmPhoneValidationErrorType };
302
+ //# sourceMappingURL=wlcm-angular-phone-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wlcm-angular-phone-input.mjs","sources":["../../../../modules/phone-input/src/lib/constants/phone-adapter.constants.ts","../../../../modules/phone-input/src/lib/models/phone-adapter.models.ts","../../../../modules/phone-input/src/lib/models/phone.models.ts","../../../../modules/phone-input/src/lib/directives/phone-input.directive.ts","../../../../modules/phone-input/src/lib/models/country-code.models.ts","../../../../modules/phone-input/src/lib/constants/country-code-options.constants.ts","../../../../modules/phone-input/src/lib/pipes/phone-code.pipe.ts","../../../../modules/phone-input/src/lib/components/country-code-select/country-code-select.component.ts","../../../../modules/phone-input/src/lib/components/country-code-select/country-code-select.component.html","../../../../modules/phone-input/src/lib/components/phone-input-container/phone-input-container.component.ts","../../../../modules/phone-input/src/lib/components/phone-input-container/phone-input-container.component.html","../../../../modules/phone-input/src/lib/phone-input.module.ts","../../../../modules/phone-input/src/wlcm-angular-phone-input.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { WlcmPhoneAdapter } from '../models/phone-adapter.models';\n\nexport const WLCM_PHONE_ADAPTER: InjectionToken<WlcmPhoneAdapter> = new InjectionToken('WLCM_PHONE_ADAPTER');\n","export interface WlcmParsedPhone {\n countryCode: string;\n\n phoneNumber: string;\n}\n\nexport abstract class WlcmPhoneAdapter {\n abstract parseValue(value: string): string;\n\n abstract formatValue(value: string): string;\n}\n","export enum WlcmPhoneValidationErrorType {\n InvalidPhoneNumber = 'InvalidPhoneNumber',\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Inject,\n InputSignal,\n OnDestroy,\n effect,\n forwardRef,\n input,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport IMask, { InputMask } from 'imask';\nimport { WLCM_PHONE_ADAPTER } from '../constants/phone-adapter.constants';\nimport { WlcmPhoneAdapter } from '../models/phone-adapter.models';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\nimport { WlcmPhoneValidationErrorType } from '../models/phone.models';\nimport { isValidNumber } from 'libphonenumber-js';\n\n@Directive({\n selector: '[wlcmPhoneInput]',\n host: { class: 'wlcm-form-field-input' },\n standalone: true,\n providers: [\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmPhoneInputDirective), multi: true },\n ],\n})\nexport class WlcmPhoneInputDirective implements OnDestroy, ControlValueAccessor, Validator {\n readonly control: FormControl = new FormControl();\n\n private _changed?: (value: string) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n private destroyInputObserver$: Subject<void> = new Subject();\n\n private _imaskRef?: InputMask;\n\n mask: InputSignal<string> = input('', { alias: 'wlcmPhoneInputMask' });\n\n @HostListener('blur', ['$event']) handleBlur(): void {\n this._touched?.();\n }\n\n constructor(\n private _elementRef: ElementRef<HTMLInputElement>,\n @Inject(WLCM_PHONE_ADAPTER) private phoneAdapter: WlcmPhoneAdapter\n ) {\n effect(() => {\n const maskPattern: string = this.mask();\n\n if (maskPattern) {\n if (!this._imaskRef) this.initializeMask();\n\n this._imaskRef!.mask = maskPattern;\n\n this._imaskRef!.updateControl();\n\n this._imaskRef!.on('accept', () => this.handleInput());\n } else {\n this.subscribeToInputEvent();\n }\n });\n\n this.subscribeToPasteEvent();\n }\n\n ngOnDestroy(): void {\n this.destroyInputObserver$.next();\n this.destroyInputObserver$.complete();\n }\n\n writeValue(value: string): void {\n const parsedValue: string = this.phoneAdapter.parseValue(value);\n\n this.element.value = parsedValue;\n }\n\n registerOnChange(callback: (value: string) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const isValid: boolean = isValidNumber(control.value ?? '');\n\n if (!isValid) {\n return { [WlcmPhoneValidationErrorType.InvalidPhoneNumber]: true };\n }\n\n return null;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n return this.control.disable();\n }\n\n this.control.enable();\n }\n\n _updateControl(): void {\n this.handleInput();\n }\n\n get element(): HTMLInputElement {\n return this._elementRef.nativeElement;\n }\n\n private handleInput(): void {\n const value: string = this.element.value;\n\n this._changed?.(this.phoneAdapter.formatValue(value));\n }\n\n private handlePaste(event: ClipboardEvent): void {\n event.preventDefault();\n\n const value: string = event.clipboardData?.getData('text') ?? '';\n\n this.writeValue(value);\n\n this.handleInput();\n }\n\n private initializeMask(): void {\n this._imaskRef = IMask(this.element, { mask: Number });\n }\n\n private subscribeToInputEvent(): void {\n fromEvent(this.element, 'input')\n .pipe(takeUntil(this.destroyInputObserver$))\n .subscribe(() => this.handleInput());\n }\n\n private subscribeToPasteEvent(): void {\n fromEvent<ClipboardEvent>(this.element, 'paste')\n .pipe(takeUntil(this.destroyInputObserver$))\n .subscribe((event: ClipboardEvent) => this.handlePaste(event));\n }\n}\n","import { WlcmOption } from '@wlcm/angular/core';\n\nexport class WlcmCountryCodeOption extends WlcmOption {\n constructor(public override value: string, public override viewValue: string, public emojiFlag: string) {\n super(value, viewValue);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmCountryCodeOption } from '../models/country-code.models';\nimport { ICountry, TCountryCode, countries, getCountryCode, getEmojiFlag } from 'countries-list';\nimport { CountryCode, getCountries, getPhoneCode } from 'libphonenumber-js';\n\ninterface WlcmCountry extends ICountry {\n code: CountryCode;\n}\n\nconst COUNTRIES_LIST: WlcmCountry[] = getCountries()\n .filter((code: CountryCode) => countries.hasOwnProperty(code))\n .map((code: CountryCode) => ({ ...countries[code as TCountryCode], code }))\n .sort((a, b) => a.name.localeCompare(b.name));\n\nexport const WLCM_COUNTRY_CODE_OPTIONS: InjectionToken<WlcmCountryCodeOption[]> = new InjectionToken(\n 'WLCM_COUNTRY_CODE_OPTIONS',\n {\n providedIn: 'root',\n factory: (): WlcmCountryCodeOption[] => {\n return COUNTRIES_LIST.map((country: WlcmCountry) => {\n const phone: string = getPhoneCode(country.code);\n\n const viewValue: string = `${country.name} +${phone}`;\n\n const emojiFlag: string = getEmojiFlag(getCountryCode(country.name) as TCountryCode);\n\n return new WlcmCountryCodeOption(getCountryCode(country.name) as TCountryCode, viewValue, emojiFlag);\n });\n },\n }\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CountryCode, getPhoneCode } from 'libphonenumber-js';\n\n@Pipe({\n name: 'phoneCode',\n standalone: true,\n})\nexport class PhoneCodePipe implements PipeTransform {\n transform(value: CountryCode | null): string {\n return value ? getPhoneCode(value) : '1';\n }\n}\n","import { Component, Inject, InputSignal, OutputEmitterRef, input, output } from '@angular/core';\nimport { WlcmFormsModule } from '@wlcm/angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { WLCM_COUNTRY_CODE_OPTIONS } from '../../constants/country-code-options.constants';\nimport { WlcmCountryCodeOption } from '../../models/country-code.models';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { PhoneCodePipe } from '../../pipes/phone-code.pipe';\n\n@Component({\n selector: 'wlcm-country-code-select',\n host: { class: 'wlcm-country-code-select' },\n standalone: true,\n imports: [CommonModule, WlcmFormsModule, ReactiveFormsModule, PhoneCodePipe],\n templateUrl: './country-code-select.component.html',\n styleUrl: './country-code-select.component.scss',\n})\nexport class WlcmCountryCodeSelectComponent {\n changed: OutputEmitterRef<any> = output();\n\n control: InputSignal<FormControl> = input(new FormControl('US'));\n\n constructor(@Inject(WLCM_COUNTRY_CODE_OPTIONS) protected options: WlcmCountryCodeOption[]) {}\n}\n","<wlcm-select\n [options]=\"options\"\n [formControl]=\"control()\"\n [optionTemplate]=\"optionTemplate\"\n [triggerTemplate]=\"triggerTemplate\"\n (selectionChange)=\"changed.emit($event)\"\n></wlcm-select>\n\n<ng-template #optionTemplate let-option>\n <span class=\"emoji-flag\">{{ option.emojiFlag }}</span>\n\n {{ option.viewValue }}\n</ng-template>\n\n<ng-template #triggerTemplate let-selected>\n <div class=\"wlcm-country-code-select-trigger\">\n +{{ selected?.value | phoneCode }}\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, Component, ContentChild, NgZone, ViewChild, forwardRef, inject } from '@angular/core';\nimport { WlcmPhoneInputDirective } from '../../directives/phone-input.directive';\nimport { WLCM_INPUT_BINDER, WlcmFormFieldInput } from '@wlcm/angular/forms';\nimport { WLCM_PHONE_ADAPTER } from '../../constants/phone-adapter.constants';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable, Subject, fromEvent, merge, tap } from 'rxjs';\nimport { WlcmPhoneAdapter } from '../../models/phone-adapter.models';\nimport { AsYouType, CountryCode, PhoneNumber, getPhoneCode, isValidNumber, parsePhoneNumber } from 'libphonenumber-js';\nimport { WlcmCountryCodeSelectComponent } from '../country-code-select/country-code-select.component';\nimport { FormControl } from '@angular/forms';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-phone-input-container',\n host: { class: 'wlcm-phone-input-container' },\n standalone: true,\n imports: [CommonModule, WlcmCountryCodeSelectComponent],\n templateUrl: './phone-input-container.component.html',\n styleUrl: './phone-input-container.component.scss',\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const container: WlcmPhoneInputContainerComponent = inject(WlcmPhoneInputContainerComponent, { self: true });\n\n return { bind: () => container };\n },\n },\n { provide: WLCM_PHONE_ADAPTER, useExisting: forwardRef(() => WlcmPhoneInputContainerComponent) },\n ],\n})\nexport class WlcmPhoneInputContainerComponent implements AfterContentInit, WlcmFormFieldInput, WlcmPhoneAdapter {\n private readonly _focusStream$: Subject<void> = new Subject();\n\n private readonly _blurStream$: Subject<void> = new Subject();\n\n focus$: Observable<void> = this._focusStream$.asObservable();\n\n blur$: Observable<void> = this._blurStream$.asObservable();\n\n @ViewChild(WlcmCountryCodeSelectComponent) private codeSelect!: WlcmCountryCodeSelectComponent;\n\n @ContentChild(WlcmPhoneInputDirective) private phoneInput!: WlcmPhoneInputDirective;\n\n readonly control: FormControl = new FormControl('US');\n\n private _asYouType = new AsYouType('US');\n\n constructor(private _zone: NgZone) {}\n\n ngAfterContentInit(): void {\n if (!this.phoneInput) {\n throw new Error('The [wlcmPhoneInput] directive must be provided.');\n }\n\n this.handleInputEvents();\n }\n\n isFocused(): boolean {\n return this.phoneInput.element === document.activeElement;\n }\n\n focus(): void {\n this.phoneInput.element.focus();\n }\n\n parseValue = (value: string): string => {\n if (!value || value.length === 0) return '';\n\n if (isValidNumber(value)) {\n const result: PhoneNumber = parsePhoneNumber(value, 'US');\n\n if (result.country) this.control.setValue(result.country);\n\n return result.nationalNumber;\n }\n\n return value;\n };\n\n formatValue = (value: string): string => {\n this._asYouType.reset();\n\n this._asYouType.input(`+${this.currentCallingCode}${value}`);\n\n const countryCode: CountryCode | undefined = this._asYouType.getCountry();\n\n if (countryCode) this.control.setValue(countryCode);\n\n return this._asYouType.getNumber()?.number ?? '';\n };\n\n handleCountryChange(): void {\n this.phoneInput._updateControl();\n }\n\n private get currentCallingCode(): string {\n return getPhoneCode(this.control.value);\n }\n\n private handleInputEvents(): void {\n this._zone.runOutsideAngular(() => {\n merge(\n fromEvent(this.phoneInput.element, 'focus').pipe(tap(() => this._focusStream$.next())),\n fromEvent(this.phoneInput.element, 'blur').pipe(tap(() => this._blurStream$.next()))\n )\n .pipe(untilDestroyed(this))\n .subscribe();\n });\n }\n}\n","<wlcm-country-code-select\n [control]=\"control\"\n (changed)=\"handleCountryChange()\"\n></wlcm-country-code-select>\n\n<div class=\"wlcm-phone-input-container-divider\"></div>\n\n<ng-content select=\"[wlcmPhoneInput]\"></ng-content>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmPhoneInputContainerComponent } from './components/phone-input-container/phone-input-container.component';\nimport { WlcmPhoneInputDirective } from './directives/phone-input.directive';\n\nconst publicComponents: Type<unknown>[] = [WlcmPhoneInputContainerComponent];\n\nconst publicDirectives: Type<unknown>[] = [WlcmPhoneInputDirective];\n\n@NgModule({\n imports: [CommonModule, ...publicComponents, ...publicDirectives],\n exports: [...publicComponents, ...publicDirectives],\n})\nexport class WlcmPhoneInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { WlcmPhoneInputModule } from './lib/phone-input.module';
2
+ export { WlcmPhoneInputDirective } from './lib/directives/phone-input.directive';
3
+ export { WlcmPhoneInputContainerComponent } from './lib/components/phone-input-container/phone-input-container.component';
4
+ export { WlcmPhoneValidationErrorType } from './lib/models/phone.models';
@@ -0,0 +1,12 @@
1
+ import { InputSignal, OutputEmitterRef } from '@angular/core';
2
+ import { WlcmCountryCodeOption } from '../../models/country-code.models';
3
+ import { FormControl } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ export declare class WlcmCountryCodeSelectComponent {
6
+ protected options: WlcmCountryCodeOption[];
7
+ changed: OutputEmitterRef<any>;
8
+ control: InputSignal<FormControl>;
9
+ constructor(options: WlcmCountryCodeOption[]);
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmCountryCodeSelectComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmCountryCodeSelectComponent, "wlcm-country-code-select", never, { "control": { "alias": "control"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
12
+ }
@@ -0,0 +1,28 @@
1
+ import { AfterContentInit, NgZone } from '@angular/core';
2
+ import { WlcmFormFieldInput } from '@wlcm/angular/forms';
3
+ import { Observable } from 'rxjs';
4
+ import { WlcmPhoneAdapter } from '../../models/phone-adapter.models';
5
+ import { FormControl } from '@angular/forms';
6
+ import * as i0 from "@angular/core";
7
+ export declare class WlcmPhoneInputContainerComponent implements AfterContentInit, WlcmFormFieldInput, WlcmPhoneAdapter {
8
+ private _zone;
9
+ private readonly _focusStream$;
10
+ private readonly _blurStream$;
11
+ focus$: Observable<void>;
12
+ blur$: Observable<void>;
13
+ private codeSelect;
14
+ private phoneInput;
15
+ readonly control: FormControl;
16
+ private _asYouType;
17
+ constructor(_zone: NgZone);
18
+ ngAfterContentInit(): void;
19
+ isFocused(): boolean;
20
+ focus(): void;
21
+ parseValue: (value: string) => string;
22
+ formatValue: (value: string) => string;
23
+ handleCountryChange(): void;
24
+ private get currentCallingCode();
25
+ private handleInputEvents;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmPhoneInputContainerComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmPhoneInputContainerComponent, "wlcm-phone-input-container", never, {}, {}, ["phoneInput"], ["[wlcmPhoneInput]"], true, never>;
28
+ }
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { WlcmCountryCodeOption } from '../models/country-code.models';
3
+ export declare const WLCM_COUNTRY_CODE_OPTIONS: InjectionToken<WlcmCountryCodeOption[]>;
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { WlcmPhoneAdapter } from '../models/phone-adapter.models';
3
+ export declare const WLCM_PHONE_ADAPTER: InjectionToken<WlcmPhoneAdapter>;
@@ -0,0 +1,33 @@
1
+ import { ElementRef, InputSignal, OnDestroy } from '@angular/core';
2
+ import { AbstractControl, ControlValueAccessor, FormControl, ValidationErrors, Validator } from '@angular/forms';
3
+ import { WlcmPhoneAdapter } from '../models/phone-adapter.models';
4
+ import * as i0 from "@angular/core";
5
+ export declare class WlcmPhoneInputDirective implements OnDestroy, ControlValueAccessor, Validator {
6
+ private _elementRef;
7
+ private phoneAdapter;
8
+ readonly control: FormControl;
9
+ private _changed?;
10
+ private _touched?;
11
+ private _validatorChanged?;
12
+ private destroyInputObserver$;
13
+ private _imaskRef?;
14
+ mask: InputSignal<string>;
15
+ handleBlur(): void;
16
+ constructor(_elementRef: ElementRef<HTMLInputElement>, phoneAdapter: WlcmPhoneAdapter);
17
+ ngOnDestroy(): void;
18
+ writeValue(value: string): void;
19
+ registerOnChange(callback: (value: string) => void): void;
20
+ registerOnTouched(callback: () => void): void;
21
+ registerOnValidatorChange(callback: () => void): void;
22
+ validate(control: AbstractControl): ValidationErrors | null;
23
+ setDisabledState(isDisabled: boolean): void;
24
+ _updateControl(): void;
25
+ get element(): HTMLInputElement;
26
+ private handleInput;
27
+ private handlePaste;
28
+ private initializeMask;
29
+ private subscribeToInputEvent;
30
+ private subscribeToPasteEvent;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmPhoneInputDirective, never>;
32
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmPhoneInputDirective, "[wlcmPhoneInput]", never, { "mask": { "alias": "wlcmPhoneInputMask"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
33
+ }
@@ -0,0 +1,7 @@
1
+ import { WlcmOption } from '@wlcm/angular/core';
2
+ export declare class WlcmCountryCodeOption extends WlcmOption {
3
+ value: string;
4
+ viewValue: string;
5
+ emojiFlag: string;
6
+ constructor(value: string, viewValue: string, emojiFlag: string);
7
+ }
@@ -0,0 +1,8 @@
1
+ export interface WlcmParsedPhone {
2
+ countryCode: string;
3
+ phoneNumber: string;
4
+ }
5
+ export declare abstract class WlcmPhoneAdapter {
6
+ abstract parseValue(value: string): string;
7
+ abstract formatValue(value: string): string;
8
+ }
@@ -0,0 +1,3 @@
1
+ export declare enum WlcmPhoneValidationErrorType {
2
+ InvalidPhoneNumber = "InvalidPhoneNumber"
3
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/common";
3
+ import * as i2 from "./components/phone-input-container/phone-input-container.component";
4
+ import * as i3 from "./directives/phone-input.directive";
5
+ export declare class WlcmPhoneInputModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmPhoneInputModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmPhoneInputModule, never, [typeof i1.CommonModule, typeof i2.WlcmPhoneInputContainerComponent, typeof i3.WlcmPhoneInputDirective], [typeof i2.WlcmPhoneInputContainerComponent, typeof i3.WlcmPhoneInputDirective]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<WlcmPhoneInputModule>;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { CountryCode } from 'libphonenumber-js';
3
+ import * as i0 from "@angular/core";
4
+ export declare class PhoneCodePipe implements PipeTransform {
5
+ transform(value: CountryCode | null): string;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<PhoneCodePipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<PhoneCodePipe, "phoneCode", true>;
8
+ }