ngxsmk-tel-input 1.5.9 → 1.6.1

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.
@@ -25,21 +25,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
25
25
  }] });
26
26
 
27
27
  class NgxsmkTelInputComponent {
28
- set telI18n(v) {
29
- this.i18n = v;
30
- }
31
- set telLocalizedCountries(v) {
32
- this.localizedCountries = v;
33
- }
28
+ set telI18n(v) { this.i18n = v; }
29
+ set telLocalizedCountries(v) { this.localizedCountries = v; }
34
30
  constructor(zone, tel) {
35
31
  this.zone = zone;
36
32
  this.tel = tel;
37
33
  /* Core config */
38
34
  this.initialCountry = 'US';
39
35
  this.preferredCountries = ['US', 'GB'];
40
- this.nationalMode = false;
36
+ /** UI-only: flag/dial code. Input will ALWAYS show national digits only. */
41
37
  this.separateDialCode = false;
42
38
  this.allowDropdown = true;
39
+ /** UI “valid lock” while typing digits */
43
40
  this.lockWhenValid = true;
44
41
  this.autocomplete = 'tel';
45
42
  this.disabled = false;
@@ -56,29 +53,29 @@ class NgxsmkTelInputComponent {
56
53
  this.clearAriaLabel = 'Clear phone number';
57
54
  this.dir = 'ltr';
58
55
  /* Placeholders (intl-tel-input) */
59
- this.autoPlaceholder = 'off'; // default OFF since no utils fallback
56
+ this.autoPlaceholder = 'off';
57
+ /** When to live-format while typing (NATIONAL visible only) */
60
58
  this.formatWhenValid = 'blur';
61
- /* Digits-only controls */
59
+ /* Digits-only controls (visible input is digits-only regardless; these affect typing filters) */
62
60
  this.digitsOnly = true;
63
- this.allowLeadingPlus = true;
61
+ this.allowLeadingPlus = false;
64
62
  /* Outputs */
65
63
  this.countryChange = new EventEmitter();
66
64
  this.validityChange = new EventEmitter();
67
65
  this.inputChange = new EventEmitter();
68
66
  /* Internal */
69
67
  this.iti = null;
70
- this.onChange = () => {
71
- };
72
- this.onTouchedCb = () => {
73
- };
68
+ this.onChange = () => { };
69
+ this.onTouchedCb = () => { };
74
70
  this.lastEmittedValid = false;
75
71
  this.pendingWrite = null;
76
72
  this.touched = false;
73
+ this.allowDropdownWasTrue = false;
74
+ this.suppressEvents = false;
77
75
  this.resolvedId = this.inputId || ('tel-' + Math.random().toString(36).slice(2));
78
76
  this.platformId = inject(PLATFORM_ID);
79
- this.allowDropdownWasTrue = false;
80
- this.suppressEvents = false; // already used elsewhere if you added it
81
77
  }
78
+ // ---------- Lifecycle ----------
82
79
  ngAfterViewInit() {
83
80
  if (!isPlatformBrowser(this.platformId))
84
81
  return;
@@ -88,7 +85,6 @@ class NgxsmkTelInputComponent {
88
85
  await this.initIntlTelInput();
89
86
  this.bindDomListeners();
90
87
  if (this.pendingWrite !== null) {
91
- // IMPORTANT: use writeValue so the plugin sets country, then we normalize input
92
88
  const v = this.pendingWrite;
93
89
  this.pendingWrite = null;
94
90
  this.writeValue(v);
@@ -101,84 +97,70 @@ class NgxsmkTelInputComponent {
101
97
  return;
102
98
  const configChanged = [
103
99
  'initialCountry', 'preferredCountries', 'onlyCountries',
104
- 'separateDialCode', 'allowDropdown', 'nationalMode',
100
+ 'separateDialCode', 'allowDropdown',
105
101
  'i18n', 'localizedCountries', 'dir',
106
- 'autoPlaceholder', 'utilsScript', 'customPlaceholder',
107
- 'digitsOnly', 'allowLeadingPlus'
102
+ 'autoPlaceholder', 'utilsScript', 'customPlaceholder'
108
103
  ].some(k => k in changes && !changes[k]?.firstChange);
109
104
  if (configChanged && this.iti) {
110
105
  this.reinitPlugin();
111
106
  this.validatorChange?.();
112
107
  }
113
108
  }
114
- ngOnDestroy() {
115
- this.destroyPlugin();
116
- }
117
- // ----- CVA -----
109
+ ngOnDestroy() { this.destroyPlugin(); }
110
+ // ---------- CVA ----------
118
111
  writeValue(val) {
119
112
  if (!this.inputRef)
120
113
  return;
121
- if (!this.iti) {
114
+ if (!this.iti) { // not initialized yet
122
115
  this.pendingWrite = val ?? '';
123
116
  return;
124
117
  }
125
- // Let the plugin pick the country from E.164
126
- this.iti.setNumber(val || '');
127
- const iso2 = this.currentIso2();
128
- const parsed = this.tel.parse(val ?? '', iso2);
129
- // Show national number only (digits)
130
- const nsn = (parsed.national ?? '').replace(/\D/g, '');
131
- this.setInputValue(nsn);
132
- // Keep form value as E.164 (or null)
133
- this.zone.run(() => this.onChange(parsed.e164));
134
- this.zone.run(() => this.inputChange.emit({ raw: nsn, e164: parsed.e164, iso2 }));
135
- }
136
- registerOnChange(fn) {
137
- this.onChange = fn;
138
- }
139
- registerOnTouched(fn) {
140
- this.onTouchedCb = fn;
118
+ this.suppressEvents = true;
119
+ try {
120
+ // Let the plugin infer selected country from E.164
121
+ this.iti.setNumber(val || '');
122
+ const iso2 = this.currentIso2();
123
+ const normalized = this.stripTrunkZeroIfNeeded(val ?? '', iso2);
124
+ const parsed = this.tel.parse(normalized, iso2);
125
+ // Visible input: ALWAYS NATIONAL digits only
126
+ const nsn = this.toNSN(parsed.national ?? normalized.replace(/^\+\d+/, ''));
127
+ this.setInputValue(nsn);
128
+ // FormControl value: ALWAYS E.164 (or null)
129
+ this.zone.run(() => this.onChange(parsed.e164));
130
+ this.zone.run(() => this.inputChange.emit({ raw: nsn, e164: parsed.e164, iso2 }));
131
+ }
132
+ finally {
133
+ this.suppressEvents = false;
134
+ }
141
135
  }
136
+ registerOnChange(fn) { this.onChange = fn; }
137
+ registerOnTouched(fn) { this.onTouchedCb = fn; }
142
138
  setDisabledState(isDisabled) {
143
139
  this.disabled = isDisabled;
144
- // 1) native input
140
+ // 1) native input state
145
141
  if (this.inputRef)
146
142
  this.inputRef.nativeElement.disabled = isDisabled;
147
- // 2) toggle dropdown by re-init with allowDropdown=false when disabled
143
+ // 2) disable/enable dropdown robustly by toggling allowDropdown and reinit
148
144
  if (this.iti) {
149
145
  if (isDisabled && this.allowDropdown) {
150
146
  this.allowDropdownWasTrue = true;
151
147
  this.allowDropdown = false;
152
- this.reinitPlugin(); // closes popup & removes handlers
148
+ this.reinitPlugin();
153
149
  }
154
150
  else if (!isDisabled && this.allowDropdownWasTrue) {
155
151
  this.allowDropdown = true;
156
152
  this.allowDropdownWasTrue = false;
157
- this.reinitPlugin(); // restore dropdown
153
+ this.reinitPlugin();
158
154
  }
159
155
  else {
160
- // even if we didn't reinit, harden UI
161
156
  this.applyDisabledUi(isDisabled);
162
157
  }
163
158
  }
164
159
  else {
165
- // Not initialized yet; just harden UI for first paint
166
160
  this.applyDisabledUi(isDisabled);
167
161
  }
168
162
  }
169
- applyDisabledUi(disabled) {
170
- // wrapper already gets [class.disabled]="disabled" from template
171
- const input = this.inputRef?.nativeElement;
172
- if (!input)
173
- return;
174
- // Make the flag button non-focusable/non-clickable
175
- const flag = input.parentElement?.querySelector('.iti__selected-flag');
176
- if (flag) {
177
- flag.tabIndex = disabled ? -1 : 0;
178
- flag.setAttribute('aria-disabled', String(disabled));
179
- }
180
- }
181
- // ----- Validator -----
163
+ // ---------- Validator ----------
182
164
  validate(_) {
183
165
  const raw = this.currentRaw();
184
166
  if (!raw)
@@ -190,10 +172,8 @@ class NgxsmkTelInputComponent {
190
172
  }
191
173
  return valid ? null : { phoneInvalid: true };
192
174
  }
193
- registerOnValidatorChange(fn) {
194
- this.validatorChange = fn;
195
- }
196
- // ----- Public helpers -----
175
+ registerOnValidatorChange(fn) { this.validatorChange = fn; }
176
+ // ---------- Public helpers ----------
197
177
  focus() {
198
178
  this.inputRef?.nativeElement.focus();
199
179
  if (this.selectOnFocus) {
@@ -212,26 +192,27 @@ class NgxsmkTelInputComponent {
212
192
  this.handleInput();
213
193
  this.inputRef.nativeElement.focus();
214
194
  }
215
- // ----- Plugin wiring -----
195
+ // ---------- intl-tel-input wiring ----------
216
196
  async initIntlTelInput() {
217
197
  const [{ default: intlTelInput }] = await Promise.all([import('intl-tel-input')]);
218
198
  const toLowerKeys = (m) => {
219
199
  if (!m)
220
200
  return undefined;
221
201
  const out = {};
222
- for (const k in m) {
202
+ for (const k in m)
223
203
  if (Object.prototype.hasOwnProperty.call(m, k)) {
224
204
  const v = m[k];
225
205
  if (v != null)
226
206
  out[k.toLowerCase()] = v;
227
207
  }
228
- }
229
208
  return out;
230
209
  };
231
210
  const config = {
232
211
  initialCountry: this.initialCountry === 'auto' ? 'auto' : (this.initialCountry?.toLowerCase() || 'us'),
233
212
  preferredCountries: (this.preferredCountries ?? []).map(c => c.toLowerCase()),
234
213
  onlyCountries: (this.onlyCountries ?? []).map(c => c.toLowerCase()),
214
+ // We ALWAYS show national digits in the input ourselves,
215
+ // but enabling nationalMode prevents plugin from forcing a '+' back in.
235
216
  nationalMode: true,
236
217
  allowDropdown: this.allowDropdown,
237
218
  separateDialCode: this.separateDialCode,
@@ -249,7 +230,9 @@ class NgxsmkTelInputComponent {
249
230
  this.zone.runOutsideAngular(() => {
250
231
  this.iti = intlTelInput(this.inputRef.nativeElement, config);
251
232
  });
233
+ // ensure dropdown is above app UI & apply disabled UI
252
234
  this.inputRef.nativeElement.style.setProperty('--tel-dd-z', String(this.dropdownZIndex));
235
+ this.applyDisabledUi(this.disabled);
253
236
  }
254
237
  async reinitPlugin() {
255
238
  const prevIso2 = (this.iti?.getSelectedCountryData?.().iso2 || this.initialCountry || 'US').toString().toLowerCase();
@@ -257,7 +240,6 @@ class NgxsmkTelInputComponent {
257
240
  this.destroyPlugin();
258
241
  await this.initIntlTelInput();
259
242
  this.bindDomListeners();
260
- // restore country & value
261
243
  try {
262
244
  this.iti?.setCountry(prevIso2);
263
245
  }
@@ -266,7 +248,6 @@ class NgxsmkTelInputComponent {
266
248
  this.setInputValue(prevValue);
267
249
  this.handleInput();
268
250
  }
269
- this.inputRef.nativeElement.style.setProperty('--tel-dd-z', String(this.dropdownZIndex));
270
251
  this.applyDisabledUi(this.disabled);
271
252
  }
272
253
  destroyPlugin() {
@@ -277,55 +258,19 @@ class NgxsmkTelInputComponent {
277
258
  if (this.inputRef?.nativeElement) {
278
259
  const el = this.inputRef.nativeElement;
279
260
  const clone = el.cloneNode(true);
280
- // preserve important state across clone
261
+ // preserve state across clone
281
262
  clone.disabled = this.disabled;
282
- clone.id = this.resolvedId; // keep the same id
263
+ clone.id = this.resolvedId;
283
264
  clone.name = this.name ?? clone.name;
284
265
  clone.value = el.value;
285
266
  el.parentNode?.replaceChild(clone, el);
286
267
  this.inputRef.nativeElement = clone;
287
268
  }
288
269
  }
289
- // ----- Input filtering (digits-only) -----
270
+ // ---------- Input filtering (digits-only) ----------
290
271
  sanitizeDigits(value) {
291
- if (!this.digitsOnly)
292
- return value;
293
- let v = value.replace(/[^\d+]/g, '');
294
- if (this.allowLeadingPlus) {
295
- const hasLeadingPlus = v.startsWith('+');
296
- v = (hasLeadingPlus ? '+' : '') + v.replace(/\+/g, '');
297
- }
298
- else {
299
- v = v.replace(/\+/g, '');
300
- }
301
- return v;
302
- }
303
- /** Remove a single trunk '0' when that makes the number valid.
304
- * Works for: "+<cc>0..." and "0..." (national), but only if the stripped form parses valid.
305
- */
306
- stripTrunkZeroIfNeeded(raw, iso2) {
307
- if (!raw)
308
- return raw;
309
- const dial = this.iti?.getSelectedCountryData?.().dialCode ?? '';
310
- // If already valid, don't touch.
311
- const parsed0 = this.tel.parse(raw, iso2);
312
- if (parsed0.isValid)
313
- return raw;
314
- // Try: +<dial>0xxxx → +<dial>xxxx
315
- if (dial && raw.startsWith(`+${dial}0`)) {
316
- const attempt = `+${dial}${raw.slice(dial.length + 2)}`;
317
- const p = this.tel.parse(attempt, iso2);
318
- if (p.isValid)
319
- return attempt;
320
- }
321
- // Try: 0xxxx → xxxx (national)
322
- if (!raw.startsWith('+') && raw.startsWith('0')) {
323
- const attemptNat = raw.slice(1);
324
- const p = this.tel.parse(attemptNat, iso2);
325
- if (p.isValid)
326
- return attemptNat;
327
- }
328
- return raw;
272
+ // visible input is digits-only regardless of props
273
+ return (value || '').replace(/\D/g, '');
329
274
  }
330
275
  bindDomListeners() {
331
276
  const el = this.inputRef.nativeElement;
@@ -338,35 +283,19 @@ class NgxsmkTelInputComponent {
338
283
  if (this.lockWhenValid && this.isCurrentlyValid()) {
339
284
  const selCollapsed = (el.selectionStart ?? 0) === (el.selectionEnd ?? 0);
340
285
  const isDigit = !!data && ev.inputType === 'insertText' && data >= '0' && data <= '9';
341
- const isPlusAtStart = this.allowLeadingPlus && data === '+' && (el.selectionStart ?? 0) === 0 && !el.value.includes('+');
342
- if (selCollapsed && (isDigit || isPlusAtStart)) {
286
+ if (selCollapsed && isDigit) {
343
287
  ev.preventDefault();
344
288
  return;
345
289
  }
346
290
  }
347
- // normal filtering when not valid (or replacing text)
348
291
  if (!data || ev.inputType !== 'insertText')
349
292
  return;
350
- const pos = el.selectionStart ?? 0;
351
293
  const isDigit = data >= '0' && data <= '9';
352
- const isPlusAtStart = this.allowLeadingPlus && data === '+' && pos === 0 && !el.value.includes('+');
353
- if (!isDigit && !isPlusAtStart)
294
+ if (!isDigit)
354
295
  ev.preventDefault();
355
296
  });
356
297
  el.addEventListener('paste', (e) => {
357
- if (!this.digitsOnly)
358
- return;
359
298
  const text = (e.clipboardData || window.clipboardData).getData('text') || '';
360
- const hasAnyDigit = /[0-9]/.test(text);
361
- // block pasting extra digits if valid and there is no selection
362
- if (this.lockWhenValid && this.isCurrentlyValid()) {
363
- const selCollapsed = (el.selectionStart ?? 0) === (el.selectionEnd ?? 0);
364
- if (selCollapsed && hasAnyDigit) {
365
- e.preventDefault();
366
- return;
367
- }
368
- }
369
- // sanitize paste
370
299
  e.preventDefault();
371
300
  const sanitized = this.sanitizeDigits(text);
372
301
  const start = el.selectionStart ?? el.value.length;
@@ -375,14 +304,12 @@ class NgxsmkTelInputComponent {
375
304
  queueMicrotask(() => this.handleInput());
376
305
  });
377
306
  el.addEventListener('input', () => {
378
- if (this.digitsOnly) {
379
- const val = el.value;
380
- const sanitized = this.sanitizeDigits(val);
381
- if (val !== sanitized) {
382
- const caret = el.selectionStart ?? sanitized.length;
383
- el.value = sanitized;
384
- el.setSelectionRange(caret, caret);
385
- }
307
+ const val = el.value;
308
+ const sanitized = this.sanitizeDigits(val);
309
+ if (val !== sanitized) {
310
+ const caret = el.selectionStart ?? sanitized.length;
311
+ el.value = sanitized;
312
+ el.setSelectionRange(caret, caret);
386
313
  }
387
314
  this.handleInput();
388
315
  });
@@ -397,15 +324,19 @@ class NgxsmkTelInputComponent {
397
324
  el.addEventListener('blur', () => this.onBlur());
398
325
  });
399
326
  }
327
+ // ---------- UX handlers ----------
400
328
  onBlur() {
401
329
  this.touched = true;
402
330
  this.zone.run(() => this.onTouchedCb());
403
331
  if (!this.formatOnBlur)
404
332
  return;
333
+ const raw = this.currentRaw();
334
+ if (!raw)
335
+ return;
405
336
  const iso2 = this.currentIso2();
406
- const parsed = this.tel.parse(this.currentRaw(), iso2);
337
+ const parsed = this.tel.parse(raw, iso2);
407
338
  if (parsed.isValid && parsed.national) {
408
- this.setInputValue(parsed.national.replace(/\D/g, '')); // digits only
339
+ this.setInputValue(this.toNSN(parsed.national)); // keep digits only
409
340
  }
410
341
  }
411
342
  onFocus() {
@@ -414,59 +345,105 @@ class NgxsmkTelInputComponent {
414
345
  queueMicrotask(() => el.setSelectionRange(0, el.value.length));
415
346
  }
416
347
  }
348
+ // ---------- Core input pipeline ----------
417
349
  handleInput() {
418
- let raw = this.currentRaw();
419
- // ensure digits-only in the box
420
- raw = raw.replace(/\D/g, '');
421
- if (raw !== this.currentRaw())
422
- this.setInputValue(raw);
350
+ if (this.suppressEvents)
351
+ return;
352
+ let raw = this.toNSN(this.currentRaw());
423
353
  const iso2 = this.currentIso2();
354
+ // Try a generic trunk-0 strip only if it makes the number valid
355
+ const fixed = this.stripTrunkZeroIfNeeded(raw, iso2);
356
+ if (fixed !== raw) {
357
+ this.setInputValue(this.toNSN(fixed));
358
+ raw = this.currentRaw();
359
+ }
360
+ // Parse once
424
361
  const parsed = this.tel.parse(raw, iso2);
425
- // emit E.164 to the form
362
+ // Emit E.164 to the form
426
363
  this.zone.run(() => this.onChange(parsed.e164));
427
364
  this.zone.run(() => this.inputChange.emit({ raw, e164: parsed.e164, iso2 }));
428
- // keep visible input as national digits only (when valid we can normalize spacing, but we remove it anyway)
365
+ // Keep visible as NATIONAL digits only
429
366
  if (parsed.isValid && parsed.national) {
430
- const nsn = parsed.national.replace(/\D/g, '');
367
+ const nsn = this.toNSN(parsed.national).replace(/\s{2,}/g, ' ');
431
368
  if (nsn !== raw)
432
369
  this.setInputValue(nsn);
433
370
  }
371
+ // optional live formatting (we keep digits-only anyway)
372
+ if (this.formatWhenValid === 'typing' && raw && parsed.isValid) {
373
+ const natPretty = this.toNSN(this.formatAsYouType(raw, iso2));
374
+ if (natPretty !== raw)
375
+ this.setInputValue(natPretty);
376
+ }
434
377
  }
378
+ // ---------- Utilities ----------
379
+ /** NATIONAL-only formatter while typing, using region for rules */
435
380
  formatAsYouType(raw, iso2) {
436
381
  try {
437
- // When a region is provided, AsYouType returns NATIONAL formatting
438
382
  const fmt = new AsYouType(iso2);
439
- return fmt.input(raw);
383
+ return this.toNSN(fmt.input(raw));
440
384
  }
441
385
  catch {
442
386
  return raw;
443
387
  }
444
388
  }
445
- currentRaw() {
446
- return (this.inputRef?.nativeElement.value ?? '').trim();
389
+ /** Convert any string to NSN (digits only). */
390
+ toNSN(v) {
391
+ return (v ?? '').replace(/\D/g, '');
447
392
  }
393
+ /** Generic: remove one trunk '0' after +<dial> or at national start, only if it makes a valid number */
394
+ stripTrunkZeroIfNeeded(raw, iso2) {
395
+ if (!raw)
396
+ return raw;
397
+ const dial = this.iti?.getSelectedCountryData?.().dialCode ?? '';
398
+ const p0 = this.tel.parse(raw, iso2);
399
+ if (p0.isValid)
400
+ return raw;
401
+ // Case 1: "+<dial>0xxxx" -> try "+<dial>xxxx"
402
+ if (raw.startsWith('+') && dial && raw.startsWith(`+${dial}0`)) {
403
+ const attempt = `+${dial}${raw.slice(dial.length + 2)}`;
404
+ const p1 = this.tel.parse(attempt, iso2);
405
+ if (p1.isValid)
406
+ return attempt;
407
+ }
408
+ // Case 2: national "0xxxx" -> try "xxxx"
409
+ if (!raw.startsWith('+') && raw.startsWith('0')) {
410
+ const attemptNat = raw.slice(1);
411
+ const p2 = this.tel.parse(attemptNat, iso2);
412
+ if (p2.isValid)
413
+ return attemptNat;
414
+ }
415
+ return raw;
416
+ }
417
+ currentRaw() { return (this.inputRef?.nativeElement.value ?? '').trim(); }
448
418
  currentIso2() {
449
419
  const iso2 = (this.iti?.getSelectedCountryData?.().iso2 ?? this.initialCountry ?? 'US')
450
420
  .toString().toUpperCase();
451
421
  return iso2;
452
422
  }
453
- setInputValue(v) {
454
- this.inputRef.nativeElement.value = v ?? '';
455
- }
423
+ setInputValue(v) { this.inputRef.nativeElement.value = v ?? ''; }
456
424
  get showError() {
457
425
  const invalid = !!this.validate({});
458
426
  return this.showErrorWhenTouched ? (this.touched && invalid) : invalid;
459
427
  }
460
- isCurrentlyValid() {
461
- return this.tel.isValid(this.currentRaw(), this.currentIso2());
428
+ isCurrentlyValid() { return this.tel.isValid(this.currentRaw(), this.currentIso2()); }
429
+ /** Make flag/dropdown non-interactive when disabled */
430
+ applyDisabledUi(disabled) {
431
+ const input = this.inputRef?.nativeElement;
432
+ if (!input)
433
+ return;
434
+ const flag = input.parentElement?.querySelector('.iti__selected-flag');
435
+ if (flag) {
436
+ flag.tabIndex = disabled ? -1 : 0;
437
+ flag.setAttribute('aria-disabled', String(disabled));
438
+ }
462
439
  }
463
440
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NgxsmkTelInputComponent, deps: [{ token: i0.NgZone }, { token: NgxsmkTelInputService }], target: i0.ɵɵFactoryTarget.Component }); }
464
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: NgxsmkTelInputComponent, isStandalone: true, selector: "ngxsmk-tel-input", inputs: { initialCountry: "initialCountry", preferredCountries: "preferredCountries", onlyCountries: "onlyCountries", nationalMode: "nationalMode", separateDialCode: "separateDialCode", allowDropdown: "allowDropdown", lockWhenValid: "lockWhenValid", placeholder: "placeholder", autocomplete: "autocomplete", name: "name", inputId: "inputId", disabled: "disabled", label: "label", hint: "hint", errorText: "errorText", size: "size", variant: "variant", showClear: "showClear", autoFocus: "autoFocus", selectOnFocus: "selectOnFocus", formatOnBlur: "formatOnBlur", showErrorWhenTouched: "showErrorWhenTouched", dropdownAttachToBody: "dropdownAttachToBody", dropdownZIndex: "dropdownZIndex", i18n: "i18n", telI18n: "telI18n", localizedCountries: "localizedCountries", telLocalizedCountries: "telLocalizedCountries", clearAriaLabel: "clearAriaLabel", dir: "dir", autoPlaceholder: "autoPlaceholder", utilsScript: "utilsScript", customPlaceholder: "customPlaceholder", formatWhenValid: "formatWhenValid", digitsOnly: "digitsOnly", allowLeadingPlus: "allowLeadingPlus" }, outputs: { countryChange: "countryChange", validityChange: "validityChange", inputChange: "inputChange" }, providers: [
441
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: NgxsmkTelInputComponent, isStandalone: true, selector: "ngxsmk-tel-input", inputs: { initialCountry: "initialCountry", preferredCountries: "preferredCountries", onlyCountries: "onlyCountries", separateDialCode: "separateDialCode", allowDropdown: "allowDropdown", lockWhenValid: "lockWhenValid", placeholder: "placeholder", autocomplete: "autocomplete", name: "name", inputId: "inputId", disabled: "disabled", label: "label", hint: "hint", errorText: "errorText", size: "size", variant: "variant", showClear: "showClear", autoFocus: "autoFocus", selectOnFocus: "selectOnFocus", formatOnBlur: "formatOnBlur", showErrorWhenTouched: "showErrorWhenTouched", dropdownAttachToBody: "dropdownAttachToBody", dropdownZIndex: "dropdownZIndex", i18n: "i18n", telI18n: "telI18n", localizedCountries: "localizedCountries", telLocalizedCountries: "telLocalizedCountries", clearAriaLabel: "clearAriaLabel", dir: "dir", autoPlaceholder: "autoPlaceholder", utilsScript: "utilsScript", customPlaceholder: "customPlaceholder", formatWhenValid: "formatWhenValid", digitsOnly: "digitsOnly", allowLeadingPlus: "allowLeadingPlus" }, outputs: { countryChange: "countryChange", validityChange: "validityChange", inputChange: "inputChange" }, providers: [
465
442
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true },
466
443
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true }
467
444
  ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["telInput"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
468
445
  <div class="ngxsmk-tel"
469
- [class.ngxsmk-tel-disabled]="disabled"
446
+ [class.disabled]="disabled"
470
447
  [attr.data-size]="size"
471
448
  [attr.data-variant]="variant"
472
449
  [attr.dir]="dir">
@@ -486,14 +463,14 @@ class NgxsmkTelInputComponent {
486
463
  [attr.autocomplete]="autocomplete"
487
464
  [attr.inputmode]="digitsOnly ? 'numeric' : 'tel'"
488
465
  [attr.pattern]="digitsOnly ? (allowLeadingPlus ? '\\\\+?[0-9]*' : '[0-9]*') : null"
489
- [class.ngxsmk-tel-disabled]="disabled"
466
+ [disabled]="disabled"
490
467
  [attr.aria-invalid]="showError ? 'true' : 'false'"
491
468
  (blur)="onBlur()"
492
469
  (focus)="onFocus()"
493
470
  />
494
471
  </div>
495
472
 
496
- @if (showClear && currentRaw() && !disabled) {
473
+ @if (showClear && currentRaw()) {
497
474
  <button type="button"
498
475
  class="ngxsmk-tel__clear"
499
476
  (click)="clearInput()"
@@ -507,13 +484,13 @@ class NgxsmkTelInputComponent {
507
484
  <div class="ngxsmk-tel__hint">{{ hint }}</div>
508
485
  }
509
486
  </div>
510
- `, isInline: true, styles: [":host{--tel-bg: #fff;--tel-fg: #0f172a;--tel-border: #c0c0c0;--tel-border-hover: #9aa0a6;--tel-ring: #2563eb;--tel-placeholder: #9ca3af;--tel-error: #ef4444;--tel-radius: 12px;--tel-focus-shadow: 0 0 0 3px rgba(37, 99, 235, .25);--tel-dd-bg: var(--tel-bg);--tel-dd-border: var(--tel-border);--tel-dd-shadow: 0 24px 60px rgba(0, 0, 0, .18);--tel-dd-radius: 12px;--tel-dd-item-hover: rgba(37, 99, 235, .08);--tel-dd-z: 2000;--tel-dd-search-bg: rgba(148, 163, 184, .08);display:block}:host-context(.dark){--tel-bg: #0b0f17;--tel-fg: #e5e7eb;--tel-border: #334155;--tel-border-hover: #475569;--tel-ring: #60a5fa;--tel-placeholder: #94a3b8;--tel-dd-bg: #0f1521;--tel-dd-border: #324056;--tel-dd-search-bg: rgba(148, 163, 184, .12)}.ngxsmk-tel{width:100%;color:var(--tel-fg)}.ngxsmk-tel.disabled{opacity:.7;cursor:not-allowed}.ngxsmk-tel__label{display:inline-block;margin-bottom:6px;font-size:.875rem;font-weight:500}.ngxsmk-tel__wrap{position:relative}.ngxsmk-tel-input__wrapper,:host ::ng-deep .iti{width:100%}.ngxsmk-tel-input__control{width:100%;height:40px;font:inherit;color:var(--tel-fg);background:var(--tel-bg);border:1px solid var(--tel-border);border-radius:var(--tel-radius);padding:10px 40px 10px 12px;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.ngxsmk-tel-input__control::placeholder{color:var(--tel-placeholder)}.ngxsmk-tel-input__control:hover{border-color:var(--tel-border-hover)}.ngxsmk-tel-input__control:focus{border-color:var(--tel-ring);box-shadow:var(--tel-focus-shadow)}[data-size=sm] .ngxsmk-tel-input__control{height:34px;font-size:13px;padding:6px 36px 6px 10px;border-radius:10px}[data-size=lg] .ngxsmk-tel-input__control{height:46px;font-size:16px;padding:12px 44px 12px 14px;border-radius:14px}[data-variant=filled] .ngxsmk-tel-input__control{background:#94a3b814}[data-variant=underline] .ngxsmk-tel-input__control{border:0;border-bottom:2px solid var(--tel-border);border-radius:0;padding-left:0;padding-right:34px}[data-variant=underline] .ngxsmk-tel-input__control:focus{border-bottom-color:var(--tel-ring);box-shadow:none}:host ::ng-deep .iti__flag-container{border-top-left-radius:var(--tel-radius);border-bottom-left-radius:var(--tel-radius);border:1px solid var(--tel-border);border-right:none;background:var(--tel-bg)}:host ::ng-deep .iti__selected-flag{height:100%;padding:0 10px;display:inline-flex;align-items:center}:host ::ng-deep .iti__country-list{background:var(--tel-dd-bg);border:1px solid var(--tel-dd-border);border-radius:var(--tel-dd-radius);box-shadow:var(--tel-dd-shadow);max-height:min(50vh,360px);overflow:auto;padding:6px 0;width:max(280px,100%);z-index:var(--tel-dd-z)}:host ::ng-deep .iti--container .iti__country-list{z-index:var(--tel-dd-z)}:host ::ng-deep .iti__search-input{position:sticky;top:0;margin:0;padding:10px 12px;width:100%;border:0;border-bottom:1px solid var(--tel-dd-border);outline:none;background:var(--tel-dd-search-bg);color:var(--tel-fg)}:host ::ng-deep .iti__country{display:grid;grid-template-columns:28px 1fr auto;align-items:center;column-gap:.5rem;padding:10px 12px;cursor:pointer}:host ::ng-deep .iti__dial-code{color:var(--tel-placeholder);font-weight:600;margin-left:10px}.ngxsmk-tel__clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;font-size:18px;line-height:1;width:28px;height:28px;border-radius:50%;cursor:pointer;color:var(--tel-placeholder)}.ngxsmk-tel__clear:hover{background:#94a3b826}.ngxsmk-tel__hint{margin-top:6px;font-size:12px;color:var(--tel-placeholder)}.ngxsmk-tel__error{margin-top:6px;font-size:12px;color:var(--tel-error)}.ngxsmk-tel__wrap.has-error .ngxsmk-tel-input__control{border-color:var(--tel-error);box-shadow:0 0 0 3px #ef444426}.ngxsmk-tel-disabled{pointer-events:none;opacity:.6}\n"] }); }
487
+ `, isInline: true, styles: [":host{--tel-bg: #fff;--tel-fg: #0f172a;--tel-border: #c0c0c0;--tel-border-hover: #9aa0a6;--tel-ring: #2563eb;--tel-placeholder: #9ca3af;--tel-error: #ef4444;--tel-radius: 12px;--tel-focus-shadow: 0 0 0 3px rgba(37, 99, 235, .25);--tel-dd-bg: var(--tel-bg);--tel-dd-border: var(--tel-border);--tel-dd-shadow: 0 24px 60px rgba(0, 0, 0, .18);--tel-dd-radius: 12px;--tel-dd-item-hover: rgba(37, 99, 235, .08);--tel-dd-z: 2000;--tel-dd-search-bg: rgba(148, 163, 184, .08);display:block}:host-context(.dark){--tel-bg: #0b0f17;--tel-fg: #e5e7eb;--tel-border: #334155;--tel-border-hover: #475569;--tel-ring: #60a5fa;--tel-placeholder: #94a3b8;--tel-dd-bg: #0f1521;--tel-dd-border: #324056;--tel-dd-search-bg: rgba(148, 163, 184, .12)}.ngxsmk-tel{width:100%;color:var(--tel-fg)}.ngxsmk-tel.disabled{opacity:.7;cursor:not-allowed}.ngxsmk-tel__label{display:inline-block;margin-bottom:6px;font-size:.875rem;font-weight:500}.ngxsmk-tel__wrap{position:relative}.ngxsmk-tel-input__wrapper,:host ::ng-deep .iti{width:100%}.ngxsmk-tel-input__control{width:100%;height:40px;font:inherit;color:var(--tel-fg);background:var(--tel-bg);border:1px solid var(--tel-border);border-radius:var(--tel-radius);padding:10px 40px 10px 12px;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.ngxsmk-tel-input__control::placeholder{color:var(--tel-placeholder)}.ngxsmk-tel-input__control:hover{border-color:var(--tel-border-hover)}.ngxsmk-tel-input__control:focus{border-color:var(--tel-ring);box-shadow:var(--tel-focus-shadow)}[data-size=sm] .ngxsmk-tel-input__control{height:34px;font-size:13px;padding:6px 36px 6px 10px;border-radius:10px}[data-size=lg] .ngxsmk-tel-input__control{height:46px;font-size:16px;padding:12px 44px 12px 14px;border-radius:14px}[data-variant=filled] .ngxsmk-tel-input__control{background:#94a3b814}[data-variant=underline] .ngxsmk-tel-input__control{border:0;border-bottom:2px solid var(--tel-border);border-radius:0;padding-left:0;padding-right:34px}[data-variant=underline] .ngxsmk-tel-input__control:focus{border-bottom-color:var(--tel-ring);box-shadow:none}:host ::ng-deep .iti__flag-container{border-top-left-radius:var(--tel-radius);border-bottom-left-radius:var(--tel-radius);border:1px solid var(--tel-border);border-right:none;background:var(--tel-bg)}:host ::ng-deep .iti__selected-flag{height:100%;padding:0 10px;display:inline-flex;align-items:center}:host ::ng-deep .iti__country-list{background:var(--tel-dd-bg);border:1px solid var(--tel-dd-border);border-radius:var(--tel-dd-radius);box-shadow:var(--tel-dd-shadow);max-height:min(50vh,360px);overflow:auto;padding:6px 0;width:max(280px,100%);z-index:var(--tel-dd-z)}:host ::ng-deep .iti--container .iti__country-list{z-index:var(--tel-dd-z)}:host ::ng-deep .iti__search-input{position:sticky;top:0;margin:0;padding:10px 12px;width:100%;border:0;border-bottom:1px solid var(--tel-dd-border);outline:none;background:var(--tel-dd-search-bg);color:var(--tel-fg)}:host ::ng-deep .iti__country{display:grid;grid-template-columns:28px 1fr auto;align-items:center;column-gap:.5rem;padding:10px 12px;cursor:pointer}:host ::ng-deep .iti__dial-code{color:var(--tel-placeholder);font-weight:600;margin-left:10px}.ngxsmk-tel__clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;font-size:18px;line-height:1;width:28px;height:28px;border-radius:50%;cursor:pointer;color:var(--tel-placeholder)}.ngxsmk-tel__clear:hover{background:#94a3b826}.ngxsmk-tel__hint{margin-top:6px;font-size:12px;color:var(--tel-placeholder)}.ngxsmk-tel__error{margin-top:6px;font-size:12px;color:var(--tel-error)}.ngxsmk-tel__wrap.has-error .ngxsmk-tel-input__control{border-color:var(--tel-error);box-shadow:0 0 0 3px #ef444426}.ngxsmk-tel.disabled .iti__flag-container,.ngxsmk-tel.disabled .iti__selected-flag{pointer-events:none;opacity:.6}\n"] }); }
511
488
  }
512
489
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NgxsmkTelInputComponent, decorators: [{
513
490
  type: Component,
514
491
  args: [{ selector: 'ngxsmk-tel-input', standalone: true, imports: [], template: `
515
492
  <div class="ngxsmk-tel"
516
- [class.ngxsmk-tel-disabled]="disabled"
493
+ [class.disabled]="disabled"
517
494
  [attr.data-size]="size"
518
495
  [attr.data-variant]="variant"
519
496
  [attr.dir]="dir">
@@ -533,14 +510,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
533
510
  [attr.autocomplete]="autocomplete"
534
511
  [attr.inputmode]="digitsOnly ? 'numeric' : 'tel'"
535
512
  [attr.pattern]="digitsOnly ? (allowLeadingPlus ? '\\\\+?[0-9]*' : '[0-9]*') : null"
536
- [class.ngxsmk-tel-disabled]="disabled"
513
+ [disabled]="disabled"
537
514
  [attr.aria-invalid]="showError ? 'true' : 'false'"
538
515
  (blur)="onBlur()"
539
516
  (focus)="onFocus()"
540
517
  />
541
518
  </div>
542
519
 
543
- @if (showClear && currentRaw() && !disabled) {
520
+ @if (showClear && currentRaw()) {
544
521
  <button type="button"
545
522
  class="ngxsmk-tel__clear"
546
523
  (click)="clearInput()"
@@ -557,7 +534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
557
534
  `, providers: [
558
535
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true },
559
536
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true }
560
- ], styles: [":host{--tel-bg: #fff;--tel-fg: #0f172a;--tel-border: #c0c0c0;--tel-border-hover: #9aa0a6;--tel-ring: #2563eb;--tel-placeholder: #9ca3af;--tel-error: #ef4444;--tel-radius: 12px;--tel-focus-shadow: 0 0 0 3px rgba(37, 99, 235, .25);--tel-dd-bg: var(--tel-bg);--tel-dd-border: var(--tel-border);--tel-dd-shadow: 0 24px 60px rgba(0, 0, 0, .18);--tel-dd-radius: 12px;--tel-dd-item-hover: rgba(37, 99, 235, .08);--tel-dd-z: 2000;--tel-dd-search-bg: rgba(148, 163, 184, .08);display:block}:host-context(.dark){--tel-bg: #0b0f17;--tel-fg: #e5e7eb;--tel-border: #334155;--tel-border-hover: #475569;--tel-ring: #60a5fa;--tel-placeholder: #94a3b8;--tel-dd-bg: #0f1521;--tel-dd-border: #324056;--tel-dd-search-bg: rgba(148, 163, 184, .12)}.ngxsmk-tel{width:100%;color:var(--tel-fg)}.ngxsmk-tel.disabled{opacity:.7;cursor:not-allowed}.ngxsmk-tel__label{display:inline-block;margin-bottom:6px;font-size:.875rem;font-weight:500}.ngxsmk-tel__wrap{position:relative}.ngxsmk-tel-input__wrapper,:host ::ng-deep .iti{width:100%}.ngxsmk-tel-input__control{width:100%;height:40px;font:inherit;color:var(--tel-fg);background:var(--tel-bg);border:1px solid var(--tel-border);border-radius:var(--tel-radius);padding:10px 40px 10px 12px;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.ngxsmk-tel-input__control::placeholder{color:var(--tel-placeholder)}.ngxsmk-tel-input__control:hover{border-color:var(--tel-border-hover)}.ngxsmk-tel-input__control:focus{border-color:var(--tel-ring);box-shadow:var(--tel-focus-shadow)}[data-size=sm] .ngxsmk-tel-input__control{height:34px;font-size:13px;padding:6px 36px 6px 10px;border-radius:10px}[data-size=lg] .ngxsmk-tel-input__control{height:46px;font-size:16px;padding:12px 44px 12px 14px;border-radius:14px}[data-variant=filled] .ngxsmk-tel-input__control{background:#94a3b814}[data-variant=underline] .ngxsmk-tel-input__control{border:0;border-bottom:2px solid var(--tel-border);border-radius:0;padding-left:0;padding-right:34px}[data-variant=underline] .ngxsmk-tel-input__control:focus{border-bottom-color:var(--tel-ring);box-shadow:none}:host ::ng-deep .iti__flag-container{border-top-left-radius:var(--tel-radius);border-bottom-left-radius:var(--tel-radius);border:1px solid var(--tel-border);border-right:none;background:var(--tel-bg)}:host ::ng-deep .iti__selected-flag{height:100%;padding:0 10px;display:inline-flex;align-items:center}:host ::ng-deep .iti__country-list{background:var(--tel-dd-bg);border:1px solid var(--tel-dd-border);border-radius:var(--tel-dd-radius);box-shadow:var(--tel-dd-shadow);max-height:min(50vh,360px);overflow:auto;padding:6px 0;width:max(280px,100%);z-index:var(--tel-dd-z)}:host ::ng-deep .iti--container .iti__country-list{z-index:var(--tel-dd-z)}:host ::ng-deep .iti__search-input{position:sticky;top:0;margin:0;padding:10px 12px;width:100%;border:0;border-bottom:1px solid var(--tel-dd-border);outline:none;background:var(--tel-dd-search-bg);color:var(--tel-fg)}:host ::ng-deep .iti__country{display:grid;grid-template-columns:28px 1fr auto;align-items:center;column-gap:.5rem;padding:10px 12px;cursor:pointer}:host ::ng-deep .iti__dial-code{color:var(--tel-placeholder);font-weight:600;margin-left:10px}.ngxsmk-tel__clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;font-size:18px;line-height:1;width:28px;height:28px;border-radius:50%;cursor:pointer;color:var(--tel-placeholder)}.ngxsmk-tel__clear:hover{background:#94a3b826}.ngxsmk-tel__hint{margin-top:6px;font-size:12px;color:var(--tel-placeholder)}.ngxsmk-tel__error{margin-top:6px;font-size:12px;color:var(--tel-error)}.ngxsmk-tel__wrap.has-error .ngxsmk-tel-input__control{border-color:var(--tel-error);box-shadow:0 0 0 3px #ef444426}.ngxsmk-tel-disabled{pointer-events:none;opacity:.6}\n"] }]
537
+ ], styles: [":host{--tel-bg: #fff;--tel-fg: #0f172a;--tel-border: #c0c0c0;--tel-border-hover: #9aa0a6;--tel-ring: #2563eb;--tel-placeholder: #9ca3af;--tel-error: #ef4444;--tel-radius: 12px;--tel-focus-shadow: 0 0 0 3px rgba(37, 99, 235, .25);--tel-dd-bg: var(--tel-bg);--tel-dd-border: var(--tel-border);--tel-dd-shadow: 0 24px 60px rgba(0, 0, 0, .18);--tel-dd-radius: 12px;--tel-dd-item-hover: rgba(37, 99, 235, .08);--tel-dd-z: 2000;--tel-dd-search-bg: rgba(148, 163, 184, .08);display:block}:host-context(.dark){--tel-bg: #0b0f17;--tel-fg: #e5e7eb;--tel-border: #334155;--tel-border-hover: #475569;--tel-ring: #60a5fa;--tel-placeholder: #94a3b8;--tel-dd-bg: #0f1521;--tel-dd-border: #324056;--tel-dd-search-bg: rgba(148, 163, 184, .12)}.ngxsmk-tel{width:100%;color:var(--tel-fg)}.ngxsmk-tel.disabled{opacity:.7;cursor:not-allowed}.ngxsmk-tel__label{display:inline-block;margin-bottom:6px;font-size:.875rem;font-weight:500}.ngxsmk-tel__wrap{position:relative}.ngxsmk-tel-input__wrapper,:host ::ng-deep .iti{width:100%}.ngxsmk-tel-input__control{width:100%;height:40px;font:inherit;color:var(--tel-fg);background:var(--tel-bg);border:1px solid var(--tel-border);border-radius:var(--tel-radius);padding:10px 40px 10px 12px;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.ngxsmk-tel-input__control::placeholder{color:var(--tel-placeholder)}.ngxsmk-tel-input__control:hover{border-color:var(--tel-border-hover)}.ngxsmk-tel-input__control:focus{border-color:var(--tel-ring);box-shadow:var(--tel-focus-shadow)}[data-size=sm] .ngxsmk-tel-input__control{height:34px;font-size:13px;padding:6px 36px 6px 10px;border-radius:10px}[data-size=lg] .ngxsmk-tel-input__control{height:46px;font-size:16px;padding:12px 44px 12px 14px;border-radius:14px}[data-variant=filled] .ngxsmk-tel-input__control{background:#94a3b814}[data-variant=underline] .ngxsmk-tel-input__control{border:0;border-bottom:2px solid var(--tel-border);border-radius:0;padding-left:0;padding-right:34px}[data-variant=underline] .ngxsmk-tel-input__control:focus{border-bottom-color:var(--tel-ring);box-shadow:none}:host ::ng-deep .iti__flag-container{border-top-left-radius:var(--tel-radius);border-bottom-left-radius:var(--tel-radius);border:1px solid var(--tel-border);border-right:none;background:var(--tel-bg)}:host ::ng-deep .iti__selected-flag{height:100%;padding:0 10px;display:inline-flex;align-items:center}:host ::ng-deep .iti__country-list{background:var(--tel-dd-bg);border:1px solid var(--tel-dd-border);border-radius:var(--tel-dd-radius);box-shadow:var(--tel-dd-shadow);max-height:min(50vh,360px);overflow:auto;padding:6px 0;width:max(280px,100%);z-index:var(--tel-dd-z)}:host ::ng-deep .iti--container .iti__country-list{z-index:var(--tel-dd-z)}:host ::ng-deep .iti__search-input{position:sticky;top:0;margin:0;padding:10px 12px;width:100%;border:0;border-bottom:1px solid var(--tel-dd-border);outline:none;background:var(--tel-dd-search-bg);color:var(--tel-fg)}:host ::ng-deep .iti__country{display:grid;grid-template-columns:28px 1fr auto;align-items:center;column-gap:.5rem;padding:10px 12px;cursor:pointer}:host ::ng-deep .iti__dial-code{color:var(--tel-placeholder);font-weight:600;margin-left:10px}.ngxsmk-tel__clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;font-size:18px;line-height:1;width:28px;height:28px;border-radius:50%;cursor:pointer;color:var(--tel-placeholder)}.ngxsmk-tel__clear:hover{background:#94a3b826}.ngxsmk-tel__hint{margin-top:6px;font-size:12px;color:var(--tel-placeholder)}.ngxsmk-tel__error{margin-top:6px;font-size:12px;color:var(--tel-error)}.ngxsmk-tel__wrap.has-error .ngxsmk-tel-input__control{border-color:var(--tel-error);box-shadow:0 0 0 3px #ef444426}.ngxsmk-tel.disabled .iti__flag-container,.ngxsmk-tel.disabled .iti__selected-flag{pointer-events:none;opacity:.6}\n"] }]
561
538
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: NgxsmkTelInputService }], propDecorators: { inputRef: [{
562
539
  type: ViewChild,
563
540
  args: ['telInput', { static: true }]
@@ -567,8 +544,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
567
544
  type: Input
568
545
  }], onlyCountries: [{
569
546
  type: Input
570
- }], nationalMode: [{
571
- type: Input
572
547
  }], separateDialCode: [{
573
548
  type: Input
574
549
  }], allowDropdown: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-tel-input.mjs","sources":["../../../projects/ngxsmk-tel-input/src/lib/ngxsmk-tel-input.service.ts","../../../projects/ngxsmk-tel-input/src/lib/ngxsmk-tel-input.component.ts","../../../projects/ngxsmk-tel-input/src/ngxsmk-tel-input.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { parsePhoneNumberFromString, type CountryCode } from 'libphonenumber-js';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgxsmkTelInputService {\r\n parse(input: string, iso2: CountryCode): { e164: string | null; national: string | null; isValid: boolean } {\r\n const phone = parsePhoneNumberFromString(input || '', iso2);\r\n if (!phone) return { e164: null, national: null, isValid: false };\r\n const isValid = phone.isValid();\r\n return { e164: isValid ? phone.number : null, national: phone.formatNational(), isValid };\r\n }\r\n\r\n isValid(input: string, iso2: CountryCode): boolean {\r\n const phone = parsePhoneNumberFromString(input || '', iso2);\r\n return !!phone && phone.isValid();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n PLATFORM_ID,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {isPlatformBrowser} from '@angular/common';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport {AsYouType, CountryCode} from 'libphonenumber-js';\r\nimport {NgxsmkTelInputService} from './ngxsmk-tel-input.service';\r\nimport {CountryMap, IntlTelI18n} from './types';\r\n\r\ntype IntlTelInstance = any;\r\n\r\n@Component({\r\n selector: 'ngxsmk-tel-input',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <div class=\"ngxsmk-tel\"\r\n [class.ngxsmk-tel-disabled]=\"disabled\"\r\n [attr.data-size]=\"size\"\r\n [attr.data-variant]=\"variant\"\r\n [attr.dir]=\"dir\">\r\n @if (label) {\r\n <label class=\"ngxsmk-tel__label\" [for]=\"resolvedId\">{{ label }}</label>\r\n }\r\n\r\n <div class=\"ngxsmk-tel__wrap\" [class.has-error]=\"showError\">\r\n <div class=\"ngxsmk-tel-input__wrapper\">\r\n <input\r\n #telInput\r\n type=\"tel\"\r\n class=\"ngxsmk-tel-input__control\"\r\n [id]=\"resolvedId\"\r\n [attr.name]=\"name || null\"\r\n [attr.placeholder]=\"placeholder || null\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [attr.inputmode]=\"digitsOnly ? 'numeric' : 'tel'\"\r\n [attr.pattern]=\"digitsOnly ? (allowLeadingPlus ? '\\\\\\\\+?[0-9]*' : '[0-9]*') : null\"\r\n [class.ngxsmk-tel-disabled]=\"disabled\"\r\n [attr.aria-invalid]=\"showError ? 'true' : 'false'\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n />\r\n </div>\r\n\r\n @if (showClear && currentRaw() && !disabled) {\r\n <button type=\"button\"\r\n class=\"ngxsmk-tel__clear\"\r\n (click)=\"clearInput()\"\r\n [attr.aria-label]=\"clearAriaLabel\">\r\n ×\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (hint && !showError) {\r\n <div class=\"ngxsmk-tel__hint\">{{ hint }}</div>\r\n }\r\n </div>\r\n `,\r\n styleUrls: ['./ngxsmk-tel-input.component.scss'],\r\n providers: [\r\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true},\r\n {provide: NG_VALIDATORS, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true}\r\n ]\r\n})\r\nexport class NgxsmkTelInputComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor, Validator {\r\n\r\n @ViewChild('telInput', {static: true}) inputRef!: ElementRef<HTMLInputElement>;\r\n\r\n /* Core config */\r\n @Input() initialCountry: CountryCode | 'auto' = 'US';\r\n @Input() preferredCountries: CountryCode[] = ['US', 'GB'];\r\n @Input() onlyCountries?: CountryCode[];\r\n @Input() nationalMode: boolean = false;\r\n @Input() separateDialCode: boolean = false;\r\n @Input() allowDropdown: boolean = true;\r\n\r\n @Input() lockWhenValid: boolean = true;\r\n\r\n /* UX */\r\n @Input() placeholder?: string;\r\n @Input() autocomplete = 'tel';\r\n @Input() name?: string;\r\n @Input() inputId?: string;\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() label?: string;\r\n @Input() hint?: string;\r\n @Input() errorText?: string;\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n @Input() variant: 'outline' | 'filled' | 'underline' = 'outline';\r\n @Input() showClear: boolean = true;\r\n @Input() autoFocus: boolean = false;\r\n @Input() selectOnFocus: boolean = false;\r\n @Input() formatOnBlur: boolean = true;\r\n @Input() showErrorWhenTouched: boolean = true;\r\n\r\n /* Dropdown plumbing */\r\n @Input() dropdownAttachToBody: boolean = true;\r\n @Input() dropdownZIndex: number = 2000;\r\n\r\n /* Localization + RTL */\r\n @Input('i18n') i18n?: IntlTelI18n;\r\n\r\n @Input('telI18n') set telI18n(v: IntlTelI18n | undefined) {\r\n this.i18n = v;\r\n }\r\n\r\n @Input('localizedCountries') localizedCountries?: CountryMap;\r\n\r\n @Input('telLocalizedCountries') set telLocalizedCountries(v: CountryMap | undefined) {\r\n this.localizedCountries = v;\r\n }\r\n\r\n @Input() clearAriaLabel: string = 'Clear phone number';\r\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\r\n\r\n /* Placeholders (intl-tel-input) */\r\n @Input() autoPlaceholder: 'off' | 'polite' | 'aggressive' = 'off'; // default OFF since no utils fallback\r\n @Input() utilsScript?: string;\r\n @Input() customPlaceholder?: (example: string, country: any) => string;\r\n\r\n @Input() formatWhenValid: 'off' | 'blur' | 'typing' = 'blur';\r\n\r\n /* Digits-only controls */\r\n @Input() digitsOnly: boolean = true;\r\n @Input() allowLeadingPlus: boolean = true;\r\n\r\n /* Outputs */\r\n @Output() countryChange = new EventEmitter<{ iso2: CountryCode }>();\r\n @Output() validityChange = new EventEmitter<boolean>();\r\n @Output() inputChange = new EventEmitter<{ raw: string; e164: string | null; iso2: CountryCode }>();\r\n\r\n /* Internal */\r\n private iti: IntlTelInstance | null = null;\r\n private onChange: (val: string | null) => void = () => {\r\n };\r\n private onTouchedCb: () => void = () => {\r\n };\r\n private validatorChange?: () => void;\r\n private lastEmittedValid = false;\r\n private pendingWrite: string | null = null;\r\n private touched: boolean = false;\r\n\r\n readonly resolvedId: string = this.inputId || ('tel-' + Math.random().toString(36).slice(2));\r\n\r\n private readonly platformId = inject(PLATFORM_ID);\r\n\r\n private allowDropdownWasTrue = false;\r\n private suppressEvents = false; // already used elsewhere if you added it\r\n\r\n constructor(\r\n private readonly zone: NgZone,\r\n private readonly tel: NgxsmkTelInputService\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n void this.initAndWire();\r\n }\r\n\r\n private async initAndWire(): Promise<void> {\r\n await this.initIntlTelInput();\r\n this.bindDomListeners();\r\n\r\n if (this.pendingWrite !== null) {\r\n // IMPORTANT: use writeValue so the plugin sets country, then we normalize input\r\n const v = this.pendingWrite;\r\n this.pendingWrite = null;\r\n this.writeValue(v);\r\n }\r\n\r\n if (this.autoFocus) setTimeout(() => this.focus(), 0);\r\n }\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n const configChanged = [\r\n 'initialCountry', 'preferredCountries', 'onlyCountries',\r\n 'separateDialCode', 'allowDropdown', 'nationalMode',\r\n 'i18n', 'localizedCountries', 'dir',\r\n 'autoPlaceholder', 'utilsScript', 'customPlaceholder',\r\n 'digitsOnly', 'allowLeadingPlus'\r\n ].some(k => k in changes && !changes[k]?.firstChange);\r\n if (configChanged && this.iti) {\r\n this.reinitPlugin();\r\n this.validatorChange?.();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyPlugin();\r\n }\r\n\r\n // ----- CVA -----\r\n writeValue(val: string | null): void {\r\n if (!this.inputRef) return;\r\n if (!this.iti) { this.pendingWrite = val ?? ''; return; }\r\n\r\n // Let the plugin pick the country from E.164\r\n this.iti.setNumber(val || '');\r\n const iso2 = this.currentIso2();\r\n\r\n const parsed = this.tel.parse(val ?? '', iso2);\r\n\r\n // Show national number only (digits)\r\n const nsn = (parsed.national ?? '').replace(/\\D/g, '');\r\n this.setInputValue(nsn);\r\n\r\n // Keep form value as E.164 (or null)\r\n this.zone.run(() => this.onChange(parsed.e164));\r\n this.zone.run(() => this.inputChange.emit({ raw: nsn, e164: parsed.e164, iso2 }));\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCb = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n\r\n // 1) native input\r\n if (this.inputRef) this.inputRef.nativeElement.disabled = isDisabled;\r\n\r\n // 2) toggle dropdown by re-init with allowDropdown=false when disabled\r\n if (this.iti) {\r\n if (isDisabled && this.allowDropdown) {\r\n this.allowDropdownWasTrue = true;\r\n this.allowDropdown = false;\r\n this.reinitPlugin(); // closes popup & removes handlers\r\n } else if (!isDisabled && this.allowDropdownWasTrue) {\r\n this.allowDropdown = true;\r\n this.allowDropdownWasTrue = false;\r\n this.reinitPlugin(); // restore dropdown\r\n } else {\r\n // even if we didn't reinit, harden UI\r\n this.applyDisabledUi(isDisabled);\r\n }\r\n } else {\r\n // Not initialized yet; just harden UI for first paint\r\n this.applyDisabledUi(isDisabled);\r\n }\r\n }\r\n\r\n private applyDisabledUi(disabled: boolean) {\r\n // wrapper already gets [class.disabled]=\"disabled\" from template\r\n const input = this.inputRef?.nativeElement;\r\n if (!input) return;\r\n\r\n // Make the flag button non-focusable/non-clickable\r\n const flag = input.parentElement?.querySelector('.iti__selected-flag') as HTMLElement | null;\r\n if (flag) {\r\n flag.tabIndex = disabled ? -1 : 0;\r\n flag.setAttribute('aria-disabled', String(disabled));\r\n }\r\n }\r\n\r\n\r\n // ----- Validator -----\r\n validate(_: AbstractControl): ValidationErrors | null {\r\n const raw = this.currentRaw();\r\n if (!raw) return null;\r\n const valid = this.tel.isValid(raw, this.currentIso2());\r\n if (valid !== this.lastEmittedValid) {\r\n this.lastEmittedValid = valid;\r\n this.validityChange.emit(valid);\r\n }\r\n return valid ? null : {phoneInvalid: true};\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.validatorChange = fn;\r\n }\r\n\r\n // ----- Public helpers -----\r\n focus(): void {\r\n this.inputRef?.nativeElement.focus();\r\n if (this.selectOnFocus) {\r\n const el = this.inputRef.nativeElement;\r\n queueMicrotask(() => el.setSelectionRange(0, el.value.length));\r\n }\r\n }\r\n\r\n selectCountry(iso2: CountryCode): void {\r\n if (this.iti) {\r\n this.iti.setCountry(iso2.toLowerCase());\r\n this.handleInput();\r\n }\r\n }\r\n\r\n clearInput() {\r\n this.setInputValue('');\r\n this.handleInput();\r\n this.inputRef.nativeElement.focus();\r\n }\r\n\r\n // ----- Plugin wiring -----\r\n private async initIntlTelInput() {\r\n const [{default: intlTelInput}] = await Promise.all([import('intl-tel-input')]);\r\n\r\n const toLowerKeys = (m?: CountryMap) => {\r\n if (!m) return undefined;\r\n const out: Record<string, string> = {};\r\n for (const k in m) {\r\n if (Object.prototype.hasOwnProperty.call(m, k)) {\r\n const v = (m as Record<string, string | undefined>)[k];\r\n if (v != null) out[k.toLowerCase()] = v;\r\n }\r\n }\r\n return out;\r\n };\r\n\r\n const config: any = {\r\n initialCountry: this.initialCountry === 'auto' ? 'auto' : (this.initialCountry?.toLowerCase() || 'us'),\r\n preferredCountries: (this.preferredCountries ?? []).map(c => c.toLowerCase()),\r\n onlyCountries: (this.onlyCountries ?? []).map(c => c.toLowerCase()),\r\n nationalMode: true,\r\n allowDropdown: this.allowDropdown,\r\n separateDialCode: this.separateDialCode,\r\n geoIpLookup: (cb: (iso2: string) => void) => cb('us'),\r\n\r\n // placeholders\r\n autoPlaceholder: this.autoPlaceholder,\r\n utilsScript: this.utilsScript,\r\n customPlaceholder: this.customPlaceholder,\r\n\r\n // localization\r\n i18n: this.i18n,\r\n localizedCountries: toLowerKeys(this.localizedCountries),\r\n\r\n // dropdown container\r\n dropdownContainer: this.dropdownAttachToBody && typeof document !== 'undefined' ? document.body : undefined\r\n };\r\n\r\n this.zone.runOutsideAngular(() => {\r\n this.iti = intlTelInput(this.inputRef.nativeElement, config);\r\n });\r\n\r\n (this.inputRef.nativeElement as HTMLElement).style.setProperty('--tel-dd-z', String(this.dropdownZIndex));\r\n }\r\n\r\n private async reinitPlugin() {\r\n const prevIso2 = (this.iti?.getSelectedCountryData?.().iso2 || this.initialCountry || 'US').toString().toLowerCase();\r\n const prevValue = this.currentRaw();\r\n\r\n this.destroyPlugin();\r\n await this.initIntlTelInput();\r\n this.bindDomListeners();\r\n\r\n // restore country & value\r\n try { this.iti?.setCountry(prevIso2); } catch {}\r\n if (prevValue) {\r\n this.setInputValue(prevValue);\r\n this.handleInput();\r\n }\r\n\r\n (this.inputRef.nativeElement as HTMLElement).style.setProperty('--tel-dd-z', String(this.dropdownZIndex));\r\n this.applyDisabledUi(this.disabled);\r\n }\r\n\r\n private destroyPlugin() {\r\n if (this.iti) {\r\n this.iti.destroy();\r\n this.iti = null;\r\n }\r\n if (this.inputRef?.nativeElement) {\r\n const el = this.inputRef.nativeElement;\r\n const clone = el.cloneNode(true) as HTMLInputElement;\r\n\r\n // preserve important state across clone\r\n clone.disabled = this.disabled;\r\n clone.id = this.resolvedId; // keep the same id\r\n clone.name = this.name ?? clone.name;\r\n clone.value = el.value;\r\n\r\n el.parentNode?.replaceChild(clone, el);\r\n (this.inputRef as any).nativeElement = clone;\r\n }\r\n }\r\n\r\n\r\n // ----- Input filtering (digits-only) -----\r\n private sanitizeDigits(value: string): string {\r\n if (!this.digitsOnly) return value;\r\n let v = value.replace(/[^\\d+]/g, '');\r\n if (this.allowLeadingPlus) {\r\n const hasLeadingPlus = v.startsWith('+');\r\n v = (hasLeadingPlus ? '+' : '') + v.replace(/\\+/g, '');\r\n } else {\r\n v = v.replace(/\\+/g, '');\r\n }\r\n return v;\r\n }\r\n\r\n\r\n /** Remove a single trunk '0' when that makes the number valid.\r\n * Works for: \"+<cc>0...\" and \"0...\" (national), but only if the stripped form parses valid.\r\n */\r\n private stripTrunkZeroIfNeeded(raw: string, iso2: CountryCode): string {\r\n if (!raw) return raw;\r\n\r\n const dial = this.iti?.getSelectedCountryData?.().dialCode ?? '';\r\n\r\n // If already valid, don't touch.\r\n const parsed0 = this.tel.parse(raw, iso2);\r\n if (parsed0.isValid) return raw;\r\n\r\n // Try: +<dial>0xxxx → +<dial>xxxx\r\n if (dial && raw.startsWith(`+${dial}0`)) {\r\n const attempt = `+${dial}${raw.slice(dial.length + 2)}`;\r\n const p = this.tel.parse(attempt, iso2);\r\n if (p.isValid) return attempt;\r\n }\r\n\r\n // Try: 0xxxx → xxxx (national)\r\n if (!raw.startsWith('+') && raw.startsWith('0')) {\r\n const attemptNat = raw.slice(1);\r\n const p = this.tel.parse(attemptNat, iso2);\r\n if (p.isValid) return attemptNat;\r\n }\r\n\r\n return raw;\r\n }\r\n\r\n private bindDomListeners() {\r\n const el = this.inputRef.nativeElement;\r\n\r\n this.zone.runOutsideAngular(() => {\r\n el.addEventListener('beforeinput', (ev: InputEvent) => {\r\n if (!this.digitsOnly) return;\r\n\r\n const data = (ev as any).data as string | null;\r\n\r\n // If already valid, block extra digit insertions when no selection\r\n if (this.lockWhenValid && this.isCurrentlyValid()) {\r\n const selCollapsed = (el.selectionStart ?? 0) === (el.selectionEnd ?? 0);\r\n const isDigit = !!data && ev.inputType === 'insertText' && data >= '0' && data <= '9';\r\n const isPlusAtStart = this.allowLeadingPlus && data === '+' && (el.selectionStart ?? 0) === 0 && !el.value.includes('+');\r\n\r\n if (selCollapsed && (isDigit || isPlusAtStart)) {\r\n ev.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n // normal filtering when not valid (or replacing text)\r\n if (!data || ev.inputType !== 'insertText') return;\r\n\r\n const pos = el.selectionStart ?? 0;\r\n const isDigit = data >= '0' && data <= '9';\r\n const isPlusAtStart = this.allowLeadingPlus && data === '+' && pos === 0 && !el.value.includes('+');\r\n\r\n if (!isDigit && !isPlusAtStart) ev.preventDefault();\r\n });\r\n\r\n el.addEventListener('paste', (e: ClipboardEvent) => {\r\n if (!this.digitsOnly) return;\r\n\r\n const text = (e.clipboardData || (window as any).clipboardData).getData('text') || '';\r\n const hasAnyDigit = /[0-9]/.test(text);\r\n\r\n // block pasting extra digits if valid and there is no selection\r\n if (this.lockWhenValid && this.isCurrentlyValid()) {\r\n const selCollapsed = (el.selectionStart ?? 0) === (el.selectionEnd ?? 0);\r\n if (selCollapsed && hasAnyDigit) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n // sanitize paste\r\n e.preventDefault();\r\n const sanitized = this.sanitizeDigits(text);\r\n const start = el.selectionStart ?? el.value.length;\r\n const end = el.selectionEnd ?? el.value.length;\r\n el.setRangeText(sanitized, start, end, 'end');\r\n queueMicrotask(() => this.handleInput());\r\n });\r\n\r\n el.addEventListener('input', () => {\r\n if (this.digitsOnly) {\r\n const val = el.value;\r\n const sanitized = this.sanitizeDigits(val);\r\n if (val !== sanitized) {\r\n const caret = el.selectionStart ?? sanitized.length;\r\n el.value = sanitized;\r\n el.setSelectionRange(caret, caret);\r\n }\r\n }\r\n this.handleInput();\r\n });\r\n\r\n el.addEventListener('countrychange', () => {\r\n const iso2 = this.currentIso2();\r\n this.zone.run(() => {\r\n this.countryChange.emit({iso2});\r\n this.validatorChange?.();\r\n });\r\n this.handleInput();\r\n });\r\n\r\n el.addEventListener('blur', () => this.onBlur());\r\n });\r\n }\r\n\r\n onBlur() {\r\n this.touched = true;\r\n this.zone.run(() => this.onTouchedCb());\r\n if (!this.formatOnBlur) return;\r\n\r\n const iso2 = this.currentIso2();\r\n const parsed = this.tel.parse(this.currentRaw(), iso2);\r\n if (parsed.isValid && parsed.national) {\r\n this.setInputValue(parsed.national.replace(/\\D/g, '')); // digits only\r\n }\r\n }\r\n\r\n onFocus() {\r\n if (this.selectOnFocus) {\r\n const el = this.inputRef.nativeElement;\r\n queueMicrotask(() => el.setSelectionRange(0, el.value.length));\r\n }\r\n }\r\n\r\n private handleInput() {\r\n let raw = this.currentRaw();\r\n // ensure digits-only in the box\r\n raw = raw.replace(/\\D/g, '');\r\n if (raw !== this.currentRaw()) this.setInputValue(raw);\r\n\r\n const iso2 = this.currentIso2();\r\n const parsed = this.tel.parse(raw, iso2);\r\n\r\n // emit E.164 to the form\r\n this.zone.run(() => this.onChange(parsed.e164));\r\n this.zone.run(() => this.inputChange.emit({ raw, e164: parsed.e164, iso2 }));\r\n\r\n // keep visible input as national digits only (when valid we can normalize spacing, but we remove it anyway)\r\n if (parsed.isValid && parsed.national) {\r\n const nsn = parsed.national.replace(/\\D/g, '');\r\n if (nsn !== raw) this.setInputValue(nsn);\r\n }\r\n }\r\n\r\n private formatAsYouType(raw: string, iso2: CountryCode): string {\r\n try {\r\n // When a region is provided, AsYouType returns NATIONAL formatting\r\n const fmt = new AsYouType(iso2);\r\n return fmt.input(raw);\r\n } catch {\r\n return raw;\r\n }\r\n }\r\n\r\n currentRaw(): string {\r\n return (this.inputRef?.nativeElement.value ?? '').trim();\r\n }\r\n\r\n private currentIso2(): CountryCode {\r\n const iso2 = (this.iti?.getSelectedCountryData?.().iso2 ?? this.initialCountry ?? 'US')\r\n .toString().toUpperCase();\r\n return iso2 as CountryCode;\r\n }\r\n\r\n private setInputValue(v: string) {\r\n this.inputRef.nativeElement.value = v ?? '';\r\n }\r\n\r\n get showError(): boolean {\r\n const invalid = !!this.validate({} as AbstractControl);\r\n return this.showErrorWhenTouched ? (this.touched && invalid) : invalid;\r\n }\r\n\r\n private isCurrentlyValid(): boolean {\r\n return this.tel.isValid(this.currentRaw(), this.currentIso2());\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxsmkTelInputService"],"mappings":"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"}
1
+ {"version":3,"file":"ngxsmk-tel-input.mjs","sources":["../../../projects/ngxsmk-tel-input/src/lib/ngxsmk-tel-input.service.ts","../../../projects/ngxsmk-tel-input/src/lib/ngxsmk-tel-input.component.ts","../../../projects/ngxsmk-tel-input/src/ngxsmk-tel-input.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { parsePhoneNumberFromString, type CountryCode } from 'libphonenumber-js';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgxsmkTelInputService {\r\n parse(input: string, iso2: CountryCode): { e164: string | null; national: string | null; isValid: boolean } {\r\n const phone = parsePhoneNumberFromString(input || '', iso2);\r\n if (!phone) return { e164: null, national: null, isValid: false };\r\n const isValid = phone.isValid();\r\n return { e164: isValid ? phone.number : null, national: phone.formatNational(), isValid };\r\n }\r\n\r\n isValid(input: string, iso2: CountryCode): boolean {\r\n const phone = parsePhoneNumberFromString(input || '', iso2);\r\n return !!phone && phone.isValid();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n PLATFORM_ID,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { AsYouType, CountryCode } from 'libphonenumber-js';\r\nimport { NgxsmkTelInputService } from './ngxsmk-tel-input.service';\r\nimport { CountryMap, IntlTelI18n } from './types';\r\n\r\ntype IntlTelInstance = any;\r\n\r\n@Component({\r\n selector: 'ngxsmk-tel-input',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <div class=\"ngxsmk-tel\"\r\n [class.disabled]=\"disabled\"\r\n [attr.data-size]=\"size\"\r\n [attr.data-variant]=\"variant\"\r\n [attr.dir]=\"dir\">\r\n @if (label) {\r\n <label class=\"ngxsmk-tel__label\" [for]=\"resolvedId\">{{ label }}</label>\r\n }\r\n\r\n <div class=\"ngxsmk-tel__wrap\" [class.has-error]=\"showError\">\r\n <div class=\"ngxsmk-tel-input__wrapper\">\r\n <input\r\n #telInput\r\n type=\"tel\"\r\n class=\"ngxsmk-tel-input__control\"\r\n [id]=\"resolvedId\"\r\n [attr.name]=\"name || null\"\r\n [attr.placeholder]=\"placeholder || null\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [attr.inputmode]=\"digitsOnly ? 'numeric' : 'tel'\"\r\n [attr.pattern]=\"digitsOnly ? (allowLeadingPlus ? '\\\\\\\\+?[0-9]*' : '[0-9]*') : null\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-invalid]=\"showError ? 'true' : 'false'\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n />\r\n </div>\r\n\r\n @if (showClear && currentRaw()) {\r\n <button type=\"button\"\r\n class=\"ngxsmk-tel__clear\"\r\n (click)=\"clearInput()\"\r\n [attr.aria-label]=\"clearAriaLabel\">\r\n ×\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (hint && !showError) {\r\n <div class=\"ngxsmk-tel__hint\">{{ hint }}</div>\r\n }\r\n </div>\r\n `,\r\n styleUrls: ['./ngxsmk-tel-input.component.scss'],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgxsmkTelInputComponent), multi: true }\r\n ]\r\n})\r\nexport class NgxsmkTelInputComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor, Validator {\r\n @ViewChild('telInput', { static: true }) inputRef!: ElementRef<HTMLInputElement>;\r\n\r\n /* Core config */\r\n @Input() initialCountry: CountryCode | 'auto' = 'US';\r\n @Input() preferredCountries: CountryCode[] = ['US', 'GB'];\r\n @Input() onlyCountries?: CountryCode[];\r\n /** UI-only: flag/dial code. Input will ALWAYS show national digits only. */\r\n @Input() separateDialCode: boolean = false;\r\n @Input() allowDropdown: boolean = true;\r\n /** UI “valid lock” while typing digits */\r\n @Input() lockWhenValid: boolean = true;\r\n\r\n /* UX */\r\n @Input() placeholder?: string;\r\n @Input() autocomplete = 'tel';\r\n @Input() name?: string;\r\n @Input() inputId?: string;\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() label?: string;\r\n @Input() hint?: string;\r\n @Input() errorText?: string;\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n @Input() variant: 'outline' | 'filled' | 'underline' = 'outline';\r\n @Input() showClear: boolean = true;\r\n @Input() autoFocus: boolean = false;\r\n @Input() selectOnFocus: boolean = false;\r\n @Input() formatOnBlur: boolean = true;\r\n @Input() showErrorWhenTouched: boolean = true;\r\n\r\n /* Dropdown plumbing */\r\n @Input() dropdownAttachToBody: boolean = true;\r\n @Input() dropdownZIndex: number = 2000;\r\n\r\n /* Localization + RTL */\r\n @Input('i18n') i18n?: IntlTelI18n;\r\n @Input('telI18n') set telI18n(v: IntlTelI18n | undefined) { this.i18n = v; }\r\n @Input('localizedCountries') localizedCountries?: CountryMap;\r\n @Input('telLocalizedCountries') set telLocalizedCountries(v: CountryMap | undefined) { this.localizedCountries = v; }\r\n\r\n @Input() clearAriaLabel: string = 'Clear phone number';\r\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\r\n\r\n /* Placeholders (intl-tel-input) */\r\n @Input() autoPlaceholder: 'off' | 'polite' | 'aggressive' = 'off';\r\n @Input() utilsScript?: string;\r\n @Input() customPlaceholder?: (example: string, country: any) => string;\r\n\r\n /** When to live-format while typing (NATIONAL visible only) */\r\n @Input() formatWhenValid: 'off' | 'blur' | 'typing' = 'blur';\r\n\r\n /* Digits-only controls (visible input is digits-only regardless; these affect typing filters) */\r\n @Input() digitsOnly: boolean = true;\r\n @Input() allowLeadingPlus: boolean = false;\r\n\r\n /* Outputs */\r\n @Output() countryChange = new EventEmitter<{ iso2: CountryCode }>();\r\n @Output() validityChange = new EventEmitter<boolean>();\r\n @Output() inputChange = new EventEmitter<{ raw: string; e164: string | null; iso2: CountryCode }>();\r\n\r\n /* Internal */\r\n private iti: IntlTelInstance | null = null;\r\n private onChange: (val: string | null) => void = () => {};\r\n private onTouchedCb: () => void = () => {};\r\n private validatorChange?: () => void;\r\n private lastEmittedValid = false;\r\n private pendingWrite: string | null = null;\r\n private touched: boolean = false;\r\n\r\n private allowDropdownWasTrue = false;\r\n private suppressEvents = false;\r\n\r\n readonly resolvedId: string = this.inputId || ('tel-' + Math.random().toString(36).slice(2));\r\n private readonly platformId = inject(PLATFORM_ID);\r\n\r\n constructor(\r\n private readonly zone: NgZone,\r\n private readonly tel: NgxsmkTelInputService\r\n ) {}\r\n\r\n // ---------- Lifecycle ----------\r\n ngAfterViewInit(): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n void this.initAndWire();\r\n }\r\n\r\n private async initAndWire(): Promise<void> {\r\n await this.initIntlTelInput();\r\n this.bindDomListeners();\r\n\r\n if (this.pendingWrite !== null) {\r\n const v = this.pendingWrite;\r\n this.pendingWrite = null;\r\n this.writeValue(v);\r\n }\r\n\r\n if (this.autoFocus) setTimeout(() => this.focus(), 0);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n const configChanged = [\r\n 'initialCountry', 'preferredCountries', 'onlyCountries',\r\n 'separateDialCode', 'allowDropdown',\r\n 'i18n', 'localizedCountries', 'dir',\r\n 'autoPlaceholder', 'utilsScript', 'customPlaceholder'\r\n ].some(k => k in changes && !changes[k]?.firstChange);\r\n\r\n if (configChanged && this.iti) {\r\n this.reinitPlugin();\r\n this.validatorChange?.();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void { this.destroyPlugin(); }\r\n\r\n // ---------- CVA ----------\r\n writeValue(val: string | null): void {\r\n if (!this.inputRef) return;\r\n\r\n if (!this.iti) { // not initialized yet\r\n this.pendingWrite = val ?? '';\r\n return;\r\n }\r\n\r\n this.suppressEvents = true;\r\n try {\r\n // Let the plugin infer selected country from E.164\r\n this.iti.setNumber(val || '');\r\n\r\n const iso2 = this.currentIso2();\r\n const normalized = this.stripTrunkZeroIfNeeded(val ?? '', iso2);\r\n const parsed = this.tel.parse(normalized, iso2);\r\n\r\n // Visible input: ALWAYS NATIONAL digits only\r\n const nsn = this.toNSN(parsed.national ?? normalized.replace(/^\\+\\d+/, ''));\r\n this.setInputValue(nsn);\r\n\r\n // FormControl value: ALWAYS E.164 (or null)\r\n this.zone.run(() => this.onChange(parsed.e164));\r\n this.zone.run(() => this.inputChange.emit({ raw: nsn, e164: parsed.e164, iso2 }));\r\n } finally {\r\n this.suppressEvents = false;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void { this.onChange = fn; }\r\n registerOnTouched(fn: any): void { this.onTouchedCb = fn; }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n\r\n // 1) native input state\r\n if (this.inputRef) this.inputRef.nativeElement.disabled = isDisabled;\r\n\r\n // 2) disable/enable dropdown robustly by toggling allowDropdown and reinit\r\n if (this.iti) {\r\n if (isDisabled && this.allowDropdown) {\r\n this.allowDropdownWasTrue = true;\r\n this.allowDropdown = false;\r\n this.reinitPlugin();\r\n } else if (!isDisabled && this.allowDropdownWasTrue) {\r\n this.allowDropdown = true;\r\n this.allowDropdownWasTrue = false;\r\n this.reinitPlugin();\r\n } else {\r\n this.applyDisabledUi(isDisabled);\r\n }\r\n } else {\r\n this.applyDisabledUi(isDisabled);\r\n }\r\n }\r\n\r\n // ---------- Validator ----------\r\n validate(_: AbstractControl): ValidationErrors | null {\r\n const raw = this.currentRaw();\r\n if (!raw) return null;\r\n const valid = this.tel.isValid(raw, this.currentIso2());\r\n if (valid !== this.lastEmittedValid) {\r\n this.lastEmittedValid = valid;\r\n this.validityChange.emit(valid);\r\n }\r\n return valid ? null : { phoneInvalid: true };\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void { this.validatorChange = fn; }\r\n\r\n // ---------- Public helpers ----------\r\n focus(): void {\r\n this.inputRef?.nativeElement.focus();\r\n if (this.selectOnFocus) {\r\n const el = this.inputRef.nativeElement;\r\n queueMicrotask(() => el.setSelectionRange(0, el.value.length));\r\n }\r\n }\r\n\r\n selectCountry(iso2: CountryCode): void {\r\n if (this.iti) {\r\n this.iti.setCountry(iso2.toLowerCase());\r\n this.handleInput();\r\n }\r\n }\r\n\r\n clearInput(): void {\r\n this.setInputValue('');\r\n this.handleInput();\r\n this.inputRef.nativeElement.focus();\r\n }\r\n\r\n // ---------- intl-tel-input wiring ----------\r\n private async initIntlTelInput() {\r\n const [{ default: intlTelInput }] = await Promise.all([import('intl-tel-input')]);\r\n\r\n const toLowerKeys = (m?: CountryMap) => {\r\n if (!m) return undefined;\r\n const out: Record<string, string> = {};\r\n for (const k in m) if (Object.prototype.hasOwnProperty.call(m, k)) {\r\n const v = (m as Record<string, string | undefined>)[k];\r\n if (v != null) out[k.toLowerCase()] = v;\r\n }\r\n return out;\r\n };\r\n\r\n const config: any = {\r\n initialCountry: this.initialCountry === 'auto' ? 'auto' : (this.initialCountry?.toLowerCase() || 'us'),\r\n preferredCountries: (this.preferredCountries ?? []).map(c => c.toLowerCase()),\r\n onlyCountries: (this.onlyCountries ?? []).map(c => c.toLowerCase()),\r\n\r\n // We ALWAYS show national digits in the input ourselves,\r\n // but enabling nationalMode prevents plugin from forcing a '+' back in.\r\n nationalMode: true,\r\n\r\n allowDropdown: this.allowDropdown,\r\n separateDialCode: this.separateDialCode,\r\n geoIpLookup: (cb: (iso2: string) => void) => cb('us'),\r\n\r\n // placeholders\r\n autoPlaceholder: this.autoPlaceholder,\r\n utilsScript: this.utilsScript,\r\n customPlaceholder: this.customPlaceholder,\r\n\r\n // localization\r\n i18n: this.i18n,\r\n localizedCountries: toLowerKeys(this.localizedCountries),\r\n\r\n // dropdown container\r\n dropdownContainer: this.dropdownAttachToBody && typeof document !== 'undefined' ? document.body : undefined\r\n };\r\n\r\n this.zone.runOutsideAngular(() => {\r\n this.iti = intlTelInput(this.inputRef.nativeElement, config);\r\n });\r\n\r\n // ensure dropdown is above app UI & apply disabled UI\r\n (this.inputRef.nativeElement as HTMLElement).style.setProperty('--tel-dd-z', String(this.dropdownZIndex));\r\n this.applyDisabledUi(this.disabled);\r\n }\r\n\r\n private async reinitPlugin() {\r\n const prevIso2 = (this.iti?.getSelectedCountryData?.().iso2 || this.initialCountry || 'US').toString().toLowerCase();\r\n const prevValue = this.currentRaw();\r\n\r\n this.destroyPlugin();\r\n await this.initIntlTelInput();\r\n this.bindDomListeners();\r\n\r\n try { this.iti?.setCountry(prevIso2); } catch {}\r\n if (prevValue) {\r\n this.setInputValue(prevValue);\r\n this.handleInput();\r\n }\r\n this.applyDisabledUi(this.disabled);\r\n }\r\n\r\n private destroyPlugin() {\r\n if (this.iti) {\r\n this.iti.destroy();\r\n this.iti = null;\r\n }\r\n if (this.inputRef?.nativeElement) {\r\n const el = this.inputRef.nativeElement;\r\n const clone = el.cloneNode(true) as HTMLInputElement;\r\n\r\n // preserve state across clone\r\n clone.disabled = this.disabled;\r\n clone.id = this.resolvedId;\r\n clone.name = this.name ?? clone.name;\r\n clone.value = el.value;\r\n\r\n el.parentNode?.replaceChild(clone, el);\r\n (this.inputRef as any).nativeElement = clone;\r\n }\r\n }\r\n\r\n // ---------- Input filtering (digits-only) ----------\r\n private sanitizeDigits(value: string): string {\r\n // visible input is digits-only regardless of props\r\n return (value || '').replace(/\\D/g, '');\r\n }\r\n\r\n private bindDomListeners() {\r\n const el = this.inputRef.nativeElement;\r\n\r\n this.zone.runOutsideAngular(() => {\r\n el.addEventListener('beforeinput', (ev: InputEvent) => {\r\n if (!this.digitsOnly) return;\r\n const data = (ev as any).data as string | null;\r\n\r\n // If already valid, block extra digit insertions when no selection\r\n if (this.lockWhenValid && this.isCurrentlyValid()) {\r\n const selCollapsed = (el.selectionStart ?? 0) === (el.selectionEnd ?? 0);\r\n const isDigit = !!data && ev.inputType === 'insertText' && data >= '0' && data <= '9';\r\n if (selCollapsed && isDigit) { ev.preventDefault(); return; }\r\n }\r\n\r\n if (!data || ev.inputType !== 'insertText') return;\r\n const isDigit = data >= '0' && data <= '9';\r\n if (!isDigit) ev.preventDefault();\r\n });\r\n\r\n el.addEventListener('paste', (e: ClipboardEvent) => {\r\n const text = (e.clipboardData || (window as any).clipboardData).getData('text') || '';\r\n e.preventDefault();\r\n const sanitized = this.sanitizeDigits(text);\r\n const start = el.selectionStart ?? el.value.length;\r\n const end = el.selectionEnd ?? el.value.length;\r\n el.setRangeText(sanitized, start, end, 'end');\r\n queueMicrotask(() => this.handleInput());\r\n });\r\n\r\n el.addEventListener('input', () => {\r\n const val = el.value;\r\n const sanitized = this.sanitizeDigits(val);\r\n if (val !== sanitized) {\r\n const caret = el.selectionStart ?? sanitized.length;\r\n el.value = sanitized;\r\n el.setSelectionRange(caret, caret);\r\n }\r\n this.handleInput();\r\n });\r\n\r\n el.addEventListener('countrychange', () => {\r\n const iso2 = this.currentIso2();\r\n this.zone.run(() => {\r\n this.countryChange.emit({ iso2 });\r\n this.validatorChange?.();\r\n });\r\n this.handleInput();\r\n });\r\n\r\n el.addEventListener('blur', () => this.onBlur());\r\n });\r\n }\r\n\r\n // ---------- UX handlers ----------\r\n onBlur() {\r\n this.touched = true;\r\n this.zone.run(() => this.onTouchedCb());\r\n if (!this.formatOnBlur) return;\r\n\r\n const raw = this.currentRaw();\r\n if (!raw) return;\r\n\r\n const iso2 = this.currentIso2();\r\n const parsed = this.tel.parse(raw, iso2);\r\n\r\n if (parsed.isValid && parsed.national) {\r\n this.setInputValue(this.toNSN(parsed.national)); // keep digits only\r\n }\r\n }\r\n\r\n onFocus() {\r\n if (this.selectOnFocus) {\r\n const el = this.inputRef.nativeElement;\r\n queueMicrotask(() => el.setSelectionRange(0, el.value.length));\r\n }\r\n }\r\n\r\n // ---------- Core input pipeline ----------\r\n private handleInput() {\r\n if (this.suppressEvents) return;\r\n\r\n let raw = this.toNSN(this.currentRaw());\r\n const iso2 = this.currentIso2();\r\n\r\n // Try a generic trunk-0 strip only if it makes the number valid\r\n const fixed = this.stripTrunkZeroIfNeeded(raw, iso2);\r\n if (fixed !== raw) {\r\n this.setInputValue(this.toNSN(fixed));\r\n raw = this.currentRaw();\r\n }\r\n\r\n // Parse once\r\n const parsed = this.tel.parse(raw, iso2);\r\n\r\n // Emit E.164 to the form\r\n this.zone.run(() => this.onChange(parsed.e164));\r\n this.zone.run(() => this.inputChange.emit({ raw, e164: parsed.e164, iso2 }));\r\n\r\n // Keep visible as NATIONAL digits only\r\n if (parsed.isValid && parsed.national) {\r\n const nsn = this.toNSN(parsed.national).replace(/\\s{2,}/g, ' ');\r\n if (nsn !== raw) this.setInputValue(nsn);\r\n }\r\n\r\n // optional live formatting (we keep digits-only anyway)\r\n if (this.formatWhenValid === 'typing' && raw && parsed.isValid) {\r\n const natPretty = this.toNSN(this.formatAsYouType(raw, iso2));\r\n if (natPretty !== raw) this.setInputValue(natPretty);\r\n }\r\n }\r\n\r\n // ---------- Utilities ----------\r\n /** NATIONAL-only formatter while typing, using region for rules */\r\n private formatAsYouType(raw: string, iso2: CountryCode): string {\r\n try {\r\n const fmt = new AsYouType(iso2);\r\n return this.toNSN(fmt.input(raw));\r\n } catch {\r\n return raw;\r\n }\r\n }\r\n\r\n /** Convert any string to NSN (digits only). */\r\n private toNSN(v: string | null | undefined): string {\r\n return (v ?? '').replace(/\\D/g, '');\r\n }\r\n\r\n /** Generic: remove one trunk '0' after +<dial> or at national start, only if it makes a valid number */\r\n private stripTrunkZeroIfNeeded(raw: string, iso2: CountryCode): string {\r\n if (!raw) return raw;\r\n\r\n const dial = this.iti?.getSelectedCountryData?.().dialCode ?? '';\r\n const p0 = this.tel.parse(raw, iso2);\r\n if (p0.isValid) return raw;\r\n\r\n // Case 1: \"+<dial>0xxxx\" -> try \"+<dial>xxxx\"\r\n if (raw.startsWith('+') && dial && raw.startsWith(`+${dial}0`)) {\r\n const attempt = `+${dial}${raw.slice(dial.length + 2)}`;\r\n const p1 = this.tel.parse(attempt, iso2);\r\n if (p1.isValid) return attempt;\r\n }\r\n\r\n // Case 2: national \"0xxxx\" -> try \"xxxx\"\r\n if (!raw.startsWith('+') && raw.startsWith('0')) {\r\n const attemptNat = raw.slice(1);\r\n const p2 = this.tel.parse(attemptNat, iso2);\r\n if (p2.isValid) return attemptNat;\r\n }\r\n\r\n return raw;\r\n }\r\n\r\n currentRaw(): string { return (this.inputRef?.nativeElement.value ?? '').trim(); }\r\n\r\n private currentIso2(): CountryCode {\r\n const iso2 = (this.iti?.getSelectedCountryData?.().iso2 ?? this.initialCountry ?? 'US')\r\n .toString().toUpperCase();\r\n return iso2 as CountryCode;\r\n }\r\n\r\n private setInputValue(v: string) { this.inputRef.nativeElement.value = v ?? ''; }\r\n\r\n get showError(): boolean {\r\n const invalid = !!this.validate({} as AbstractControl);\r\n return this.showErrorWhenTouched ? (this.touched && invalid) : invalid;\r\n }\r\n\r\n private isCurrentlyValid(): boolean { return this.tel.isValid(this.currentRaw(), this.currentIso2()); }\r\n\r\n /** Make flag/dropdown non-interactive when disabled */\r\n private applyDisabledUi(disabled: boolean) {\r\n const input = this.inputRef?.nativeElement;\r\n if (!input) return;\r\n const flag = input.parentElement?.querySelector('.iti__selected-flag') as HTMLElement | null;\r\n if (flag) {\r\n flag.tabIndex = disabled ? -1 : 0;\r\n flag.setAttribute('aria-disabled', String(disabled));\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxsmkTelInputService"],"mappings":"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"}
@@ -11,9 +11,10 @@ export declare class NgxsmkTelInputComponent implements AfterViewInit, OnChanges
11
11
  initialCountry: CountryCode | 'auto';
12
12
  preferredCountries: CountryCode[];
13
13
  onlyCountries?: CountryCode[];
14
- nationalMode: boolean;
14
+ /** UI-only: flag/dial code. Input will ALWAYS show national digits only. */
15
15
  separateDialCode: boolean;
16
16
  allowDropdown: boolean;
17
+ /** UI “valid lock” while typing digits */
17
18
  lockWhenValid: boolean;
18
19
  placeholder?: string;
19
20
  autocomplete: string;
@@ -41,6 +42,7 @@ export declare class NgxsmkTelInputComponent implements AfterViewInit, OnChanges
41
42
  autoPlaceholder: 'off' | 'polite' | 'aggressive';
42
43
  utilsScript?: string;
43
44
  customPlaceholder?: (example: string, country: any) => string;
45
+ /** When to live-format while typing (NATIONAL visible only) */
44
46
  formatWhenValid: 'off' | 'blur' | 'typing';
45
47
  digitsOnly: boolean;
46
48
  allowLeadingPlus: boolean;
@@ -60,10 +62,10 @@ export declare class NgxsmkTelInputComponent implements AfterViewInit, OnChanges
60
62
  private lastEmittedValid;
61
63
  private pendingWrite;
62
64
  private touched;
63
- readonly resolvedId: string;
64
- private readonly platformId;
65
65
  private allowDropdownWasTrue;
66
66
  private suppressEvents;
67
+ readonly resolvedId: string;
68
+ private readonly platformId;
67
69
  constructor(zone: NgZone, tel: NgxsmkTelInputService);
68
70
  ngAfterViewInit(): void;
69
71
  private initAndWire;
@@ -73,7 +75,6 @@ export declare class NgxsmkTelInputComponent implements AfterViewInit, OnChanges
73
75
  registerOnChange(fn: any): void;
74
76
  registerOnTouched(fn: any): void;
75
77
  setDisabledState(isDisabled: boolean): void;
76
- private applyDisabledUi;
77
78
  validate(_: AbstractControl): ValidationErrors | null;
78
79
  registerOnValidatorChange(fn: () => void): void;
79
80
  focus(): void;
@@ -83,21 +84,24 @@ export declare class NgxsmkTelInputComponent implements AfterViewInit, OnChanges
83
84
  private reinitPlugin;
84
85
  private destroyPlugin;
85
86
  private sanitizeDigits;
86
- /** Remove a single trunk '0' when that makes the number valid.
87
- * Works for: "+<cc>0..." and "0..." (national), but only if the stripped form parses valid.
88
- */
89
- private stripTrunkZeroIfNeeded;
90
87
  private bindDomListeners;
91
88
  onBlur(): void;
92
89
  onFocus(): void;
93
90
  private handleInput;
91
+ /** NATIONAL-only formatter while typing, using region for rules */
94
92
  private formatAsYouType;
93
+ /** Convert any string to NSN (digits only). */
94
+ private toNSN;
95
+ /** Generic: remove one trunk '0' after +<dial> or at national start, only if it makes a valid number */
96
+ private stripTrunkZeroIfNeeded;
95
97
  currentRaw(): string;
96
98
  private currentIso2;
97
99
  private setInputValue;
98
100
  get showError(): boolean;
99
101
  private isCurrentlyValid;
102
+ /** Make flag/dropdown non-interactive when disabled */
103
+ private applyDisabledUi;
100
104
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxsmkTelInputComponent, never>;
101
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxsmkTelInputComponent, "ngxsmk-tel-input", never, { "initialCountry": { "alias": "initialCountry"; "required": false; }; "preferredCountries": { "alias": "preferredCountries"; "required": false; }; "onlyCountries": { "alias": "onlyCountries"; "required": false; }; "nationalMode": { "alias": "nationalMode"; "required": false; }; "separateDialCode": { "alias": "separateDialCode"; "required": false; }; "allowDropdown": { "alias": "allowDropdown"; "required": false; }; "lockWhenValid": { "alias": "lockWhenValid"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "name": { "alias": "name"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "selectOnFocus": { "alias": "selectOnFocus"; "required": false; }; "formatOnBlur": { "alias": "formatOnBlur"; "required": false; }; "showErrorWhenTouched": { "alias": "showErrorWhenTouched"; "required": false; }; "dropdownAttachToBody": { "alias": "dropdownAttachToBody"; "required": false; }; "dropdownZIndex": { "alias": "dropdownZIndex"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "telI18n": { "alias": "telI18n"; "required": false; }; "localizedCountries": { "alias": "localizedCountries"; "required": false; }; "telLocalizedCountries": { "alias": "telLocalizedCountries"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "autoPlaceholder": { "alias": "autoPlaceholder"; "required": false; }; "utilsScript": { "alias": "utilsScript"; "required": false; }; "customPlaceholder": { "alias": "customPlaceholder"; "required": false; }; "formatWhenValid": { "alias": "formatWhenValid"; "required": false; }; "digitsOnly": { "alias": "digitsOnly"; "required": false; }; "allowLeadingPlus": { "alias": "allowLeadingPlus"; "required": false; }; }, { "countryChange": "countryChange"; "validityChange": "validityChange"; "inputChange": "inputChange"; }, never, never, true, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxsmkTelInputComponent, "ngxsmk-tel-input", never, { "initialCountry": { "alias": "initialCountry"; "required": false; }; "preferredCountries": { "alias": "preferredCountries"; "required": false; }; "onlyCountries": { "alias": "onlyCountries"; "required": false; }; "separateDialCode": { "alias": "separateDialCode"; "required": false; }; "allowDropdown": { "alias": "allowDropdown"; "required": false; }; "lockWhenValid": { "alias": "lockWhenValid"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "name": { "alias": "name"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "selectOnFocus": { "alias": "selectOnFocus"; "required": false; }; "formatOnBlur": { "alias": "formatOnBlur"; "required": false; }; "showErrorWhenTouched": { "alias": "showErrorWhenTouched"; "required": false; }; "dropdownAttachToBody": { "alias": "dropdownAttachToBody"; "required": false; }; "dropdownZIndex": { "alias": "dropdownZIndex"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "telI18n": { "alias": "telI18n"; "required": false; }; "localizedCountries": { "alias": "localizedCountries"; "required": false; }; "telLocalizedCountries": { "alias": "telLocalizedCountries"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "autoPlaceholder": { "alias": "autoPlaceholder"; "required": false; }; "utilsScript": { "alias": "utilsScript"; "required": false; }; "customPlaceholder": { "alias": "customPlaceholder"; "required": false; }; "formatWhenValid": { "alias": "formatWhenValid"; "required": false; }; "digitsOnly": { "alias": "digitsOnly"; "required": false; }; "allowLeadingPlus": { "alias": "allowLeadingPlus"; "required": false; }; }, { "countryChange": "countryChange"; "validityChange": "validityChange"; "inputChange": "inputChange"; }, never, never, true, never>;
102
106
  }
103
107
  //# sourceMappingURL=ngxsmk-tel-input.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-tel-input.component.d.ts","sourceRoot":"","sources":["../../../projects/ngxsmk-tel-input/src/lib/ngxsmk-tel-input.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngxsmk-tel-input.component.d.ts","sourceRoot":"","sources":["../../../projects/ngxsmk-tel-input/src/lib/ngxsmk-tel-input.component.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngxsmk-tel-input",
3
- "version": "1.5.9",
3
+ "version": "1.6.1",
4
4
  "description": "Angular international telephone input (intl-tel-input UI + libphonenumber-js validation). ControlValueAccessor. SSR-safe.",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,