@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.
- package/package.json +1 -1
- package/phone-input/README.md +7 -0
- package/phone-input/esm2022/index.mjs +5 -0
- package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs +26 -0
- package/phone-input/esm2022/lib/components/phone-input-container/phone-input-container.component.mjs +103 -0
- package/phone-input/esm2022/lib/constants/country-code-options.constants.mjs +20 -0
- package/phone-input/esm2022/lib/constants/phone-adapter.constants.mjs +3 -0
- package/phone-input/esm2022/lib/directives/phone-input.directive.mjs +119 -0
- package/phone-input/esm2022/lib/models/country-code.models.mjs +10 -0
- package/phone-input/esm2022/lib/models/phone-adapter.models.mjs +3 -0
- package/phone-input/esm2022/lib/models/phone.models.mjs +5 -0
- package/phone-input/esm2022/lib/phone-input.module.mjs +20 -0
- package/phone-input/esm2022/lib/pipes/phone-code.pipe.mjs +18 -0
- package/phone-input/esm2022/wlcm-angular-phone-input.mjs +5 -0
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +302 -0
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs.map +1 -0
- package/phone-input/index.d.ts +4 -0
- package/phone-input/lib/components/country-code-select/country-code-select.component.d.ts +12 -0
- package/phone-input/lib/components/phone-input-container/phone-input-container.component.d.ts +28 -0
- package/phone-input/lib/constants/country-code-options.constants.d.ts +3 -0
- package/phone-input/lib/constants/phone-adapter.constants.d.ts +3 -0
- package/phone-input/lib/directives/phone-input.directive.d.ts +33 -0
- package/phone-input/lib/models/country-code.models.d.ts +7 -0
- package/phone-input/lib/models/phone-adapter.models.d.ts +8 -0
- package/phone-input/lib/models/phone.models.d.ts +3 -0
- package/phone-input/lib/phone-input.module.d.ts +9 -0
- package/phone-input/lib/pipes/phone-code.pipe.d.ts +8 -0
package/package.json
CHANGED
@@ -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==
|
package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs
ADDED
@@ -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
|
package/phone-input/esm2022/lib/components/phone-input-container/phone-input-container.component.mjs
ADDED
@@ -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,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,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
|
+
}
|