@taiga-ui/kit 5.9.0 → 5.10.0-canary.9984aef
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/components/input-color/index.d.ts +1 -0
- package/components/input-color/input-color-content.component.d.ts +11 -0
- package/components/input-color/input-color.component.d.ts +4 -7
- package/components/input-color/input-color.d.ts +2 -1
- package/components/input-date/index.d.ts +1 -0
- package/components/input-date/input-date-content.component.d.ts +13 -0
- package/components/input-date/input-date.component.d.ts +1 -4
- package/components/input-date-time/index.d.ts +1 -0
- package/components/input-date-time/input-date-time-content.component.d.ts +14 -0
- package/components/input-date-time/input-date-time.component.d.ts +1 -8
- package/components/input-date-time/input-date-time.directive.d.ts +1 -2
- package/components/input-month/index.d.ts +1 -0
- package/components/input-month/input-month-content.component.d.ts +14 -0
- package/components/input-month/input-month.component.d.ts +4 -8
- package/components/input-phone-international/index.d.ts +1 -0
- package/components/input-phone-international/input-phone-international-content.component.d.ts +21 -0
- package/components/input-phone-international/input-phone-international.component.d.ts +10 -20
- package/components/input-phone-international/input-phone-international.d.ts +2 -1
- package/components/input-pin/index.d.ts +1 -0
- package/components/input-pin/input-pin-content.component.d.ts +10 -0
- package/components/input-pin/input-pin.component.d.ts +6 -5
- package/components/input-time/index.d.ts +1 -0
- package/components/input-time/input-time-content.component.d.ts +12 -0
- package/components/input-time/input-time.component.d.ts +5 -11
- package/components/segmented/segmented.directive.d.ts +2 -1
- package/directives/button-group/button-group.directive.d.ts +1 -0
- package/directives/present/present.directive.d.ts +1 -0
- package/fesm2022/taiga-ui-kit-components-accordion.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-action-bar.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-avatar.mjs +23 -23
- package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-badge-notification.mjs +4 -4
- package/fesm2022/taiga-ui-kit-components-badge-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-badge.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-badge.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-badged-content.mjs +6 -6
- package/fesm2022/taiga-ui-kit-components-block.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +5 -5
- package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-button-loading.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-chip.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-combo-box.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-comment.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-comment.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-compass.mjs +4 -4
- package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-confirm.mjs +6 -6
- package/fesm2022/taiga-ui-kit-components-copy.mjs +11 -11
- package/fesm2022/taiga-ui-kit-components-copy.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-counter.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs +6 -6
- package/fesm2022/taiga-ui-kit-components-drawer.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-files.mjs +25 -25
- package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-filter.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-fullscreen.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-input-chip.mjs +6 -6
- package/fesm2022/taiga-ui-kit-components-input-color.mjs +60 -31
- package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +5 -5
- package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +5 -5
- package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +70 -36
- package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-date.mjs +65 -19
- package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-inline.mjs +4 -4
- package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-input-month.mjs +62 -17
- package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-number.mjs +45 -42
- package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +99 -68
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-phone.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-input-pin.mjs +48 -22
- package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-range.mjs +4 -4
- package/fesm2022/taiga-ui-kit-components-input-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-slider.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-time.mjs +68 -43
- package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-year.mjs +5 -5
- package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +12 -12
- package/fesm2022/taiga-ui-kit-components-like.mjs +5 -5
- package/fesm2022/taiga-ui-kit-components-like.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +9 -9
- package/fesm2022/taiga-ui-kit-components-message.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-message.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-multi-select.mjs +12 -12
- package/fesm2022/taiga-ui-kit-components-notification-middle.mjs +9 -9
- package/fesm2022/taiga-ui-kit-components-pager.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-pagination.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-pin.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-pincode.mjs +13 -7
- package/fesm2022/taiga-ui-kit-components-pincode.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-preview.mjs +26 -26
- package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-progress.mjs +27 -27
- package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-pulse.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-push.mjs +12 -12
- package/fesm2022/taiga-ui-kit-components-radio-list.mjs +4 -4
- package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-range.mjs +6 -6
- package/fesm2022/taiga-ui-kit-components-rating.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-segmented.mjs +13 -14
- package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-select.mjs +9 -9
- package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-status.mjs +7 -7
- package/fesm2022/taiga-ui-kit-components-status.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-stepper.mjs +6 -6
- package/fesm2022/taiga-ui-kit-components-switch.mjs +4 -4
- package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-tabs.mjs +19 -19
- package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-textarea.mjs +12 -12
- package/fesm2022/taiga-ui-kit-components-tiles.mjs +14 -14
- package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-timeline.mjs +6 -6
- package/fesm2022/taiga-ui-kit-components-toast.mjs +16 -16
- package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-tree.mjs +24 -24
- package/fesm2022/taiga-ui-kit-directives-appearance-proxy.mjs +3 -3
- package/fesm2022/taiga-ui-kit-directives-button-group.mjs +11 -9
- package/fesm2022/taiga-ui-kit-directives-button-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-button-select.mjs +3 -3
- package/fesm2022/taiga-ui-kit-directives-chevron.mjs +7 -7
- package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-connected.mjs +7 -7
- package/fesm2022/taiga-ui-kit-directives-connected.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs +3 -3
- package/fesm2022/taiga-ui-kit-directives-fade.mjs +7 -7
- package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +3 -3
- package/fesm2022/taiga-ui-kit-directives-highlight.mjs +3 -3
- package/fesm2022/taiga-ui-kit-directives-password.mjs +4 -3
- package/fesm2022/taiga-ui-kit-directives-password.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-present.mjs +7 -5
- package/fesm2022/taiga-ui-kit-directives-present.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-sensitive.mjs +7 -7
- package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-shimmer.mjs +7 -7
- package/fesm2022/taiga-ui-kit-directives-shimmer.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-skeleton.mjs +7 -7
- package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +10 -12
- package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs +3 -3
- package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-emails.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-flag.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-initials.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs +3 -3
- package/fesm2022/taiga-ui-kit-pipes-stringify.mjs +3 -3
- package/package.json +21 -21
|
@@ -1,41 +1,40 @@
|
|
|
1
1
|
import { TuiLabel } from '@taiga-ui/core/components/label';
|
|
2
|
-
import * as
|
|
3
|
-
import { TUI_TEXTFIELD_OPTIONS, TuiTextfieldContent, TuiTextfieldComponent, TuiTextfieldOptionsDirective } from '@taiga-ui/core/components/textfield';
|
|
4
|
-
import
|
|
5
|
-
import { TuiDropdownOpen, tuiDropdownEnabled, TuiDropdownContent } from '@taiga-ui/core/portals/dropdown';
|
|
6
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import * as i3 from '@taiga-ui/core/components/textfield';
|
|
3
|
+
import { TUI_TEXTFIELD_OPTIONS, TuiTextfield, tuiAsTextfieldContent, TuiTextfieldContent, TuiTextfieldComponent, TuiTextfieldOptionsDirective } from '@taiga-ui/core/components/textfield';
|
|
4
|
+
import { TuiDropdownContent, tuiDropdownEnabled, TuiDropdownOpen } from '@taiga-ui/core/portals/dropdown';
|
|
7
5
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { viewChildren, ElementRef,
|
|
9
|
-
import {
|
|
10
|
-
import * as
|
|
11
|
-
import { FormsModule } from '@angular/forms';
|
|
12
|
-
import * as i1 from '@maskito/angular';
|
|
6
|
+
import { inject, viewChildren, ElementRef, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, effect, signal, input, model, Directive } from '@angular/core';
|
|
7
|
+
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
8
|
+
import * as i1$1 from '@maskito/angular';
|
|
13
9
|
import { MaskitoDirective } from '@maskito/angular';
|
|
14
10
|
import { maskitoTransform, MASKITO_DEFAULT_OPTIONS, maskitoInitialCalibrationPlugin } from '@maskito/core';
|
|
15
11
|
import { maskitoPhoneOptionsGenerator, maskitoGetCountryFromNumber } from '@maskito/phone';
|
|
16
12
|
import { WA_IS_IOS } from '@ng-web-apis/platform';
|
|
17
13
|
import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
|
|
18
|
-
import { TUI_DEFAULT_MATCHER, CHAR_PLUS } from '@taiga-ui/cdk/constants';
|
|
14
|
+
import { TUI_DEFAULT_MATCHER, TUI_VERSION, CHAR_PLUS } from '@taiga-ui/cdk/constants';
|
|
19
15
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
20
16
|
import { TuiAutoFocus, tuiAutoFocusOptionsProvider } from '@taiga-ui/cdk/directives/auto-focus';
|
|
21
17
|
import { tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
|
|
22
18
|
import { tuiInjectElement, tuiValue, tuiIsInputEvent } from '@taiga-ui/cdk/utils/dom';
|
|
19
|
+
import * as i4 from '@taiga-ui/core/components/input';
|
|
20
|
+
import { TuiInput, TuiWithInput } from '@taiga-ui/core/components/input';
|
|
21
|
+
import * as i3$1 from '@taiga-ui/kit/directives/appearance-proxy';
|
|
22
|
+
import { TuiAppearanceProxy } from '@taiga-ui/kit/directives/appearance-proxy';
|
|
23
|
+
import { tuiMaskito } from '@taiga-ui/kit/utils';
|
|
24
|
+
import { validatePhoneNumberLength, getCountryCallingCode } from 'libphonenumber-js/core';
|
|
25
|
+
import { of, filter, from } from 'rxjs';
|
|
26
|
+
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
27
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
28
|
+
import * as i1 from '@angular/forms';
|
|
29
|
+
import { FormsModule } from '@angular/forms';
|
|
23
30
|
import { TuiButton } from '@taiga-ui/core/components/button';
|
|
24
|
-
import * as
|
|
31
|
+
import * as i2 from '@taiga-ui/core/components/data-list';
|
|
25
32
|
import { TuiOption, TuiDataList } from '@taiga-ui/core/components/data-list';
|
|
26
|
-
import * as i2 from '@taiga-ui/core/components/input';
|
|
27
|
-
import { TuiWithInput, TuiInput } from '@taiga-ui/core/components/input';
|
|
28
33
|
import { TuiTitle } from '@taiga-ui/core/components/title';
|
|
29
34
|
import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
|
|
30
|
-
import * as i3 from '@taiga-ui/kit/directives/appearance-proxy';
|
|
31
|
-
import { TuiAppearanceProxy } from '@taiga-ui/kit/directives/appearance-proxy';
|
|
32
35
|
import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
|
|
33
36
|
import { TuiFlagPipe } from '@taiga-ui/kit/pipes/flag';
|
|
34
37
|
import { TUI_INTERNATIONAL_SEARCH, TUI_COUNTRIES } from '@taiga-ui/kit/tokens';
|
|
35
|
-
import { tuiMaskito } from '@taiga-ui/kit/utils';
|
|
36
|
-
import { validatePhoneNumberLength, getCountryCallingCode } from 'libphonenumber-js/core';
|
|
37
|
-
import { of, from, filter } from 'rxjs';
|
|
38
|
-
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
39
38
|
|
|
40
39
|
const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS = {
|
|
41
40
|
countries: [],
|
|
@@ -54,42 +53,80 @@ const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS = {
|
|
|
54
53
|
*/
|
|
55
54
|
const [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS, tuiInputPhoneInternationalOptionsProvider,] = tuiCreateOptions(TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS);
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
class TuiInputPhoneInternationalComponent extends TuiControl {
|
|
56
|
+
class TuiInputPhoneInternationalContent {
|
|
59
57
|
constructor() {
|
|
60
|
-
|
|
58
|
+
this.host = inject(TuiInputPhoneInternationalComponent);
|
|
61
59
|
this.list = viewChildren(TuiOption, { read: ElementRef });
|
|
62
|
-
this.el = tuiInjectElement();
|
|
63
60
|
this.ios = inject(WA_IS_IOS);
|
|
64
61
|
this.icons = inject(TUI_COMMON_ICONS);
|
|
65
|
-
this.options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);
|
|
66
62
|
this.label = inject(TUI_INTERNATIONAL_SEARCH);
|
|
67
|
-
this.metadata = toSignal(from(this.options.metadata));
|
|
68
63
|
this.names = inject(TUI_COUNTRIES);
|
|
69
|
-
this.open = inject(TuiDropdownOpen).open;
|
|
70
|
-
this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
|
|
71
|
-
this.change = effect(() => this.onChange(this.unmask(this.masked())));
|
|
72
|
-
this.search = signal('');
|
|
73
64
|
this.size = inject(TUI_TEXTFIELD_OPTIONS).size;
|
|
65
|
+
this.filtered = computed(() => {
|
|
66
|
+
const metadata = this.host.metadata();
|
|
67
|
+
return this.host
|
|
68
|
+
.countries()
|
|
69
|
+
.map((iso) => ({
|
|
70
|
+
iso,
|
|
71
|
+
name: this.names()[iso] || '',
|
|
72
|
+
code: tuiGetCallingCode(iso, metadata),
|
|
73
|
+
}))
|
|
74
|
+
.filter(({ name, code }) => TUI_DEFAULT_MATCHER(`${name}${code}`, this.host.search()));
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
onItemClick(code) {
|
|
78
|
+
this.host.el.focus();
|
|
79
|
+
this.host.open.set(false);
|
|
80
|
+
this.host.countryIsoCode.set(code);
|
|
81
|
+
this.host.search.set('');
|
|
82
|
+
this.host.masked.set(maskitoTransform(this.host.value() || tuiGetCallingCode(code, this.host.metadata()), this.host.mask() || MASKITO_DEFAULT_OPTIONS));
|
|
83
|
+
}
|
|
84
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPhoneInternationalContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.23", type: TuiInputPhoneInternationalContent, isStandalone: true, selector: "tui-input-phone-international-content", host: { attributes: { "data-tui-version": "5.10.0-canary.9984aef" } }, viewQueries: [{ propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.10.0-canary.9984aef\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.10.0-canary.9984aef\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.10.0-canary.9984aef\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.10.0-canary.9984aef\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.10.0-canary.9984aef\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i2.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i3.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiInputDirective, selector: "input[tuiInput]", inputs: ["readOnly", "invalid", "focused", "state"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPhoneInternationalContent, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{ selector: 'tui-input-phone-international-content', imports: [
|
|
90
|
+
FormsModule,
|
|
91
|
+
NgTemplateOutlet,
|
|
92
|
+
TuiAutoFocus,
|
|
93
|
+
TuiButton,
|
|
94
|
+
TuiChevron,
|
|
95
|
+
TuiDataList,
|
|
96
|
+
TuiDropdownContent,
|
|
97
|
+
TuiFlagPipe,
|
|
98
|
+
TuiInput,
|
|
99
|
+
TuiOption,
|
|
100
|
+
TuiTextfield,
|
|
101
|
+
TuiTitle,
|
|
102
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'data-tui-version': TUI_VERSION }, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.10.0-canary.9984aef\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.10.0-canary.9984aef\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.10.0-canary.9984aef\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.10.0-canary.9984aef\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.10.0-canary.9984aef\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.10.0-canary.9984aef\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"] }]
|
|
103
|
+
}] });
|
|
104
|
+
|
|
105
|
+
const NOT_FORM_CONTROL_SYMBOLS = /[^+\d]/g;
|
|
106
|
+
// TODO(v6): rename to TuiInputPhoneInternationalDirective
|
|
107
|
+
class TuiInputPhoneInternationalComponent extends TuiControl {
|
|
108
|
+
constructor() {
|
|
109
|
+
super(...arguments);
|
|
110
|
+
this.options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);
|
|
111
|
+
this.el = tuiInjectElement();
|
|
112
|
+
this.ios = inject(WA_IS_IOS);
|
|
113
|
+
this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
|
|
74
114
|
this.masked = tuiValue(this.el);
|
|
75
115
|
this.mask = tuiMaskito(computed(() => this.computeMask(this.countryIsoCode(), this.metadata())));
|
|
76
|
-
this.
|
|
77
|
-
.map((iso) => ({
|
|
78
|
-
iso,
|
|
79
|
-
name: this.names()?.[iso] || '',
|
|
80
|
-
code: getCallingCode(iso, this.metadata()),
|
|
81
|
-
}))
|
|
82
|
-
.filter(({ name, code }) => TUI_DEFAULT_MATCHER(`${name}${code}`, this.search())));
|
|
116
|
+
this.change = effect(() => this.onChange(this.unmask(this.masked())));
|
|
83
117
|
this.$ = inject(TuiActiveZone)
|
|
84
118
|
.tuiActiveZoneChange.pipe(filter(() => !this.readOnly()), takeUntilDestroyed())
|
|
85
119
|
.subscribe((active) => {
|
|
86
|
-
const prefix = `${
|
|
120
|
+
const prefix = `${tuiGetCallingCode(this.countryIsoCode(), this.metadata())} `;
|
|
87
121
|
this.search.set('');
|
|
88
122
|
this.masked.update((value) => {
|
|
89
123
|
const fallback = active ? value || prefix : value;
|
|
90
124
|
return value === prefix ? '' : fallback;
|
|
91
125
|
});
|
|
92
126
|
});
|
|
127
|
+
this.metadata = toSignal(from(this.options.metadata));
|
|
128
|
+
this.open = inject(TuiDropdownOpen).open;
|
|
129
|
+
this.search = signal('');
|
|
93
130
|
this.countrySearch = input(this.options.countrySearch);
|
|
94
131
|
this.countryIsoCode = model(this.options.countryIsoCode);
|
|
95
132
|
this.countries = input(this.options.countries);
|
|
@@ -113,13 +150,6 @@ class TuiInputPhoneInternationalComponent extends TuiControl {
|
|
|
113
150
|
this.countryIsoCode.set(code);
|
|
114
151
|
}
|
|
115
152
|
}
|
|
116
|
-
onItemClick(code) {
|
|
117
|
-
this.el.focus();
|
|
118
|
-
this.open.set(false);
|
|
119
|
-
this.countryIsoCode.set(code);
|
|
120
|
-
this.search.set('');
|
|
121
|
-
this.masked.set(maskitoTransform(this.value() || getCallingCode(code, this.metadata()), this.mask() || MASKITO_DEFAULT_OPTIONS));
|
|
122
|
-
}
|
|
123
153
|
computeMask(countryIsoCode, metadata) {
|
|
124
154
|
if (!metadata) {
|
|
125
155
|
return MASKITO_DEFAULT_OPTIONS;
|
|
@@ -136,7 +166,7 @@ class TuiInputPhoneInternationalComponent extends TuiControl {
|
|
|
136
166
|
}
|
|
137
167
|
unmask(maskedValue) {
|
|
138
168
|
const value = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');
|
|
139
|
-
const code =
|
|
169
|
+
const code = tuiGetCallingCode(this.countryIsoCode(), this.metadata());
|
|
140
170
|
return value === code ? '' : value;
|
|
141
171
|
}
|
|
142
172
|
getCountryCode(value) {
|
|
@@ -146,46 +176,47 @@ class TuiInputPhoneInternationalComponent extends TuiControl {
|
|
|
146
176
|
? (maskitoGetCountryFromNumber(phone, metadata) ?? null)
|
|
147
177
|
: null;
|
|
148
178
|
}
|
|
149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
150
|
-
static { this.ɵ
|
|
179
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPhoneInternationalComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
180
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.23", type: TuiInputPhoneInternationalComponent, isStandalone: true, selector: "input[tuiInputPhoneInternational]", inputs: { countrySearch: { classPropertyName: "countrySearch", publicName: "countrySearch", isSignal: true, isRequired: false, transformFunction: null }, countryIsoCode: { classPropertyName: "countryIsoCode", publicName: "countryIsoCode", isSignal: true, isRequired: false, transformFunction: null }, countries: { classPropertyName: "countries", publicName: "countries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { countryIsoCode: "countryIsoCodeChange" }, host: { attributes: { "type": "tel" }, listeners: { "beforeinput.capture": "onPaste($event)", "click": "open.set(false)", "input": "masked.set($event.target.value)" }, properties: { "attr.inputmode": "!ios && open() ? \"none\" : null", "disabled": "disabled()" } }, providers: [
|
|
151
181
|
tuiAsControl(TuiInputPhoneInternationalComponent),
|
|
152
182
|
tuiFallbackValueProvider(''),
|
|
153
183
|
tuiAutoFocusOptionsProvider({ preventScroll: true }),
|
|
154
|
-
|
|
184
|
+
tuiAsTextfieldContent(() => TuiInputPhoneInternationalContent),
|
|
185
|
+
], usesInheritance: true, hostDirectives: [{ directive: i1$1.MaskitoDirective }, { directive: i4.TuiWithInput }, { directive: i3$1.TuiAppearanceProxy }, { directive: i3.TuiTextfieldContent }], ngImport: i0 }); }
|
|
155
186
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
157
|
-
type:
|
|
158
|
-
args: [{
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
TuiAutoFocus,
|
|
162
|
-
TuiButton,
|
|
163
|
-
TuiChevron,
|
|
164
|
-
TuiDataList,
|
|
165
|
-
TuiFlagPipe,
|
|
166
|
-
TuiInput,
|
|
167
|
-
TuiTextfieldContent,
|
|
168
|
-
TuiTitle,
|
|
169
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPhoneInternationalComponent, decorators: [{
|
|
188
|
+
type: Directive,
|
|
189
|
+
args: [{
|
|
190
|
+
selector: 'input[tuiInputPhoneInternational]',
|
|
191
|
+
providers: [
|
|
170
192
|
tuiAsControl(TuiInputPhoneInternationalComponent),
|
|
171
193
|
tuiFallbackValueProvider(''),
|
|
172
194
|
tuiAutoFocusOptionsProvider({ preventScroll: true }),
|
|
173
|
-
|
|
174
|
-
|
|
195
|
+
tuiAsTextfieldContent(() => TuiInputPhoneInternationalContent),
|
|
196
|
+
],
|
|
197
|
+
hostDirectives: [
|
|
198
|
+
MaskitoDirective,
|
|
199
|
+
TuiWithInput,
|
|
200
|
+
TuiAppearanceProxy,
|
|
201
|
+
TuiTextfieldContent,
|
|
202
|
+
],
|
|
203
|
+
host: {
|
|
175
204
|
type: 'tel',
|
|
176
205
|
'[attr.inputmode]': '!ios && open() ? "none" : null',
|
|
177
206
|
'[disabled]': 'disabled()',
|
|
178
207
|
'(beforeinput.capture)': 'onPaste($event)',
|
|
179
208
|
'(click)': 'open.set(false)',
|
|
180
209
|
'(input)': 'masked.set($event.target.value)',
|
|
181
|
-
},
|
|
210
|
+
},
|
|
211
|
+
}]
|
|
182
212
|
}] });
|
|
183
|
-
function
|
|
213
|
+
function tuiGetCallingCode(iso, metadata) {
|
|
184
214
|
return metadata ? CHAR_PLUS + getCountryCallingCode(iso, metadata) : '';
|
|
185
215
|
}
|
|
186
216
|
|
|
187
217
|
const TuiInputPhoneInternational = [
|
|
188
218
|
TuiInputPhoneInternationalComponent,
|
|
219
|
+
TuiInputPhoneInternationalContent,
|
|
189
220
|
TuiLabel,
|
|
190
221
|
TuiTextfieldComponent,
|
|
191
222
|
TuiTextfieldOptionsDirective,
|
|
@@ -196,5 +227,5 @@ const TuiInputPhoneInternational = [
|
|
|
196
227
|
* Generated bundle index. Do not edit.
|
|
197
228
|
*/
|
|
198
229
|
|
|
199
|
-
export { TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS, TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS, TuiInputPhoneInternational, TuiInputPhoneInternationalComponent, tuiInputPhoneInternationalOptionsProvider };
|
|
230
|
+
export { TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS, TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS, TuiInputPhoneInternational, TuiInputPhoneInternationalComponent, TuiInputPhoneInternationalContent, tuiGetCallingCode, tuiInputPhoneInternationalOptionsProvider };
|
|
200
231
|
//# sourceMappingURL=taiga-ui-kit-components-input-phone-international.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-input-phone-international.mjs","sources":["../../../projects/kit/components/input-phone-international/input-phone-international.options.ts","../../../projects/kit/components/input-phone-international/input-phone-international.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international.template.html","../../../projects/kit/components/input-phone-international/input-phone-international.ts","../../../projects/kit/components/input-phone-international/taiga-ui-kit-components-input-phone-international.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {type MetadataJson} from 'libphonenumber-js/core';\nimport {type Observable, of} from 'rxjs';\n\nexport interface TuiInputPhoneInternationalOptions {\n readonly countries: readonly TuiCountryIsoCode[];\n readonly countrySearch: boolean;\n readonly countryIsoCode: TuiCountryIsoCode;\n readonly metadata: Observable<MetadataJson> | Promise<MetadataJson>;\n readonly separator: string;\n}\n\nexport const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS: TuiInputPhoneInternationalOptions =\n {\n countries: [],\n countrySearch: false,\n countryIsoCode: 'RU',\n metadata: of({\n version: 4,\n countries: {},\n country_calling_codes: {},\n nonGeographic: {},\n }),\n separator: '-',\n };\n\n/**\n * Default parameters for input phone international component\n */\nexport const [\n TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,\n tuiInputPhoneInternationalOptionsProvider,\n] = tuiCreateOptions(TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS);\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n signal,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n maskitoInitialCalibrationPlugin,\n type MaskitoOptions,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoGetCountryFromNumber, maskitoPhoneOptionsGenerator} from '@maskito/phone';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_PLUS, TUI_DEFAULT_MATCHER, TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {\n TuiAutoFocus,\n tuiAutoFocusOptionsProvider,\n} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiIsInputEvent, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList, TuiOption} from '@taiga-ui/core/components/data-list';\nimport {TuiInput, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {tuiDropdownEnabled, TuiDropdownOpen} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiFlagPipe} from '@taiga-ui/kit/pipes/flag';\nimport {TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH} from '@taiga-ui/kit/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\nimport {\n getCountryCallingCode,\n type MetadataJson,\n validatePhoneNumberLength,\n} from 'libphonenumber-js/core';\nimport {filter, from} from 'rxjs';\n\nimport {TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS} from './input-phone-international.options';\n\nconst NOT_FORM_CONTROL_SYMBOLS = /[^+\\d]/g;\n\n@Component({\n selector: 'input[tuiInputPhoneInternational]',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n TuiAutoFocus,\n TuiButton,\n TuiChevron,\n TuiDataList,\n TuiFlagPipe,\n TuiInput,\n TuiTextfieldContent,\n TuiTitle,\n ],\n templateUrl: './input-phone-international.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-phone-international.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputPhoneInternationalComponent),\n tuiFallbackValueProvider(''),\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n ],\n hostDirectives: [MaskitoDirective, TuiWithInput, TuiAppearanceProxy],\n host: {\n ngSkipHydration: 'true',\n type: 'tel',\n '[attr.inputmode]': '!ios && open() ? \"none\" : null',\n '[disabled]': 'disabled()',\n '(beforeinput.capture)': 'onPaste($event)',\n '(click)': 'open.set(false)',\n '(input)': 'masked.set($event.target.value)',\n },\n})\nexport class TuiInputPhoneInternationalComponent extends TuiControl<string> {\n protected readonly list = viewChildren(TuiOption, {read: ElementRef});\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly ios = inject(WA_IS_IOS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);\n protected readonly label = inject(TUI_INTERNATIONAL_SEARCH);\n protected readonly metadata = toSignal(from(this.options.metadata));\n protected readonly names = inject(TUI_COUNTRIES);\n protected readonly open = inject(TuiDropdownOpen).open;\n protected readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n protected readonly change = effect(() => this.onChange(this.unmask(this.masked())));\n protected readonly search = signal('');\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n protected readonly masked = tuiValue(this.el);\n\n protected readonly mask = tuiMaskito(\n computed(() => this.computeMask(this.countryIsoCode(), this.metadata())),\n );\n\n protected readonly filtered = computed(() =>\n this.countries()\n .map((iso) => ({\n iso,\n name: this.names()?.[iso] || '',\n code: getCallingCode(iso, this.metadata()),\n }))\n .filter(({name, code}) =>\n TUI_DEFAULT_MATCHER(`${name}${code}`, this.search()),\n ),\n );\n\n protected readonly $ = inject(TuiActiveZone)\n .tuiActiveZoneChange.pipe(\n filter(() => !this.readOnly()),\n takeUntilDestroyed(),\n )\n .subscribe((active) => {\n const prefix = `${getCallingCode(this.countryIsoCode(), this.metadata())} `;\n\n this.search.set('');\n this.masked.update((value) => {\n const fallback = active ? value || prefix : value;\n\n return value === prefix ? '' : fallback;\n });\n });\n\n public readonly countrySearch = input(this.options.countrySearch);\n public readonly countryIsoCode = model(this.options.countryIsoCode);\n public readonly countries = input(this.options.countries);\n\n public override writeValue(unmasked: string | null): void {\n const code = this.getCountryCode(unmasked ?? '');\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n\n super.writeValue(unmasked);\n this.masked.set(\n maskitoTransform(this.value() ?? '', this.mask() || MASKITO_DEFAULT_OPTIONS),\n );\n }\n\n protected onPaste(event: Event): void {\n const data = tuiIsInputEvent(event) && event.data;\n\n if (\n !data ||\n (!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))\n ) {\n return;\n }\n\n const code = this.getCountryCode(data);\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n }\n\n protected onItemClick(code: TuiCountryIsoCode): void {\n this.el.focus();\n this.open.set(false);\n this.countryIsoCode.set(code);\n this.search.set('');\n this.masked.set(\n maskitoTransform(\n this.value() || getCallingCode(code, this.metadata()),\n this.mask() || MASKITO_DEFAULT_OPTIONS,\n ),\n );\n }\n\n private computeMask(\n countryIsoCode: TuiCountryIsoCode,\n metadata?: MetadataJson,\n ): MaskitoOptions {\n if (!metadata) {\n return MASKITO_DEFAULT_OPTIONS;\n }\n\n const {plugins, ...options} = maskitoPhoneOptionsGenerator({\n countryIsoCode,\n metadata,\n separator: this.options.separator,\n });\n\n return {\n ...options,\n plugins: [...plugins, maskitoInitialCalibrationPlugin()],\n };\n }\n\n private unmask(maskedValue: string): string {\n const value = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');\n const code = getCallingCode(this.countryIsoCode(), this.metadata());\n\n return value === code ? '' : value;\n }\n\n private getCountryCode(value: string): TuiCountryIsoCode | null {\n const metadata = this.metadata();\n const phone = value.startsWith(CHAR_PLUS) ? value : `${CHAR_PLUS}${value}`;\n\n return metadata && validatePhoneNumberLength(phone, metadata) !== 'TOO_SHORT'\n ? (maskitoGetCountryFromNumber(phone, metadata) ?? null)\n : null;\n }\n}\n\nfunction getCallingCode(iso: TuiCountryIsoCode, metadata?: MetadataJson | null): string {\n return metadata ? CHAR_PLUS + getCountryCallingCode(iso, metadata) : '';\n}\n","<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (click.prevent)=\"interactive() && open.set(!open())\"\n (pointerdown.stop)=\"(0)\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n <!-- To keep it under local injector -->\n @if (countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track $index) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPhoneInternationalComponent} from './input-phone-international.component';\n\nexport const TuiInputPhoneInternational = [\n TuiInputPhoneInternationalComponent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-input-phone-international.mjs","sources":["../../../projects/kit/components/input-phone-international/input-phone-international.options.ts","../../../projects/kit/components/input-phone-international/input-phone-international-content.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international-content.template.html","../../../projects/kit/components/input-phone-international/input-phone-international.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international.ts","../../../projects/kit/components/input-phone-international/taiga-ui-kit-components-input-phone-international.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {type MetadataJson} from 'libphonenumber-js/core';\nimport {type Observable, of} from 'rxjs';\n\nexport interface TuiInputPhoneInternationalOptions {\n readonly countries: readonly TuiCountryIsoCode[];\n readonly countrySearch: boolean;\n readonly countryIsoCode: TuiCountryIsoCode;\n readonly metadata: Observable<MetadataJson> | Promise<MetadataJson>;\n readonly separator: string;\n}\n\nexport const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS: TuiInputPhoneInternationalOptions =\n {\n countries: [],\n countrySearch: false,\n countryIsoCode: 'RU',\n metadata: of({\n version: 4,\n countries: {},\n country_calling_codes: {},\n nonGeographic: {},\n }),\n separator: '-',\n };\n\n/**\n * Default parameters for input phone international component\n */\nexport const [\n TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,\n tuiInputPhoneInternationalOptionsProvider,\n] = tuiCreateOptions(TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS);\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MASKITO_DEFAULT_OPTIONS, maskitoTransform} from '@maskito/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TUI_DEFAULT_MATCHER, TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList, TuiOption} from '@taiga-ui/core/components/data-list';\nimport {TuiInput} from '@taiga-ui/core/components/input';\nimport {TUI_TEXTFIELD_OPTIONS, TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiFlagPipe} from '@taiga-ui/kit/pipes/flag';\nimport {TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH} from '@taiga-ui/kit/tokens';\n\nimport {\n tuiGetCallingCode,\n TuiInputPhoneInternationalComponent,\n} from './input-phone-international.component';\n\n@Component({\n selector: 'tui-input-phone-international-content',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n TuiAutoFocus,\n TuiButton,\n TuiChevron,\n TuiDataList,\n TuiDropdownContent,\n TuiFlagPipe,\n TuiInput,\n TuiOption,\n TuiTextfield,\n TuiTitle,\n ],\n templateUrl: './input-phone-international-content.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-phone-international.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'data-tui-version': TUI_VERSION},\n})\nexport class TuiInputPhoneInternationalContent {\n protected readonly host = inject(TuiInputPhoneInternationalComponent);\n protected readonly list = viewChildren(TuiOption, {read: ElementRef});\n protected readonly ios = inject(WA_IS_IOS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly label = inject(TUI_INTERNATIONAL_SEARCH);\n protected readonly names = inject(TUI_COUNTRIES);\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n\n protected readonly filtered = computed(() => {\n const metadata = this.host.metadata();\n\n return this.host\n .countries()\n .map((iso) => ({\n iso,\n name: this.names()[iso] || '',\n code: tuiGetCallingCode(iso, metadata),\n }))\n .filter(({name, code}) =>\n TUI_DEFAULT_MATCHER(`${name}${code}`, this.host.search()),\n );\n });\n\n protected onItemClick(code: TuiCountryIsoCode): void {\n this.host.el.focus();\n this.host.open.set(false);\n this.host.countryIsoCode.set(code);\n this.host.search.set('');\n this.host.masked.set(\n maskitoTransform(\n this.host.value() || tuiGetCallingCode(code, this.host.metadata()),\n this.host.mask() || MASKITO_DEFAULT_OPTIONS,\n ),\n );\n }\n}\n","<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n","import {computed, Directive, effect, inject, input, model, signal} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n maskitoInitialCalibrationPlugin,\n type MaskitoOptions,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoGetCountryFromNumber, maskitoPhoneOptionsGenerator} from '@maskito/phone';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_PLUS} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiAutoFocusOptionsProvider} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiIsInputEvent, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n tuiAsTextfieldContent,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiDropdownEnabled, TuiDropdownOpen} from '@taiga-ui/core/portals/dropdown';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\nimport {\n getCountryCallingCode,\n type MetadataJson,\n validatePhoneNumberLength,\n} from 'libphonenumber-js/core';\nimport {filter, from} from 'rxjs';\n\nimport {TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS} from './input-phone-international.options';\nimport {TuiInputPhoneInternationalContent} from './input-phone-international-content.component';\n\nconst NOT_FORM_CONTROL_SYMBOLS = /[^+\\d]/g;\n\n@Directive({\n selector: 'input[tuiInputPhoneInternational]',\n providers: [\n tuiAsControl(TuiInputPhoneInternationalComponent),\n tuiFallbackValueProvider(''),\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n tuiAsTextfieldContent(() => TuiInputPhoneInternationalContent),\n ],\n hostDirectives: [\n MaskitoDirective,\n TuiWithInput,\n TuiAppearanceProxy,\n TuiTextfieldContent,\n ],\n host: {\n type: 'tel',\n '[attr.inputmode]': '!ios && open() ? \"none\" : null',\n '[disabled]': 'disabled()',\n '(beforeinput.capture)': 'onPaste($event)',\n '(click)': 'open.set(false)',\n '(input)': 'masked.set($event.target.value)',\n },\n})\n// TODO(v6): rename to TuiInputPhoneInternationalDirective\nexport class TuiInputPhoneInternationalComponent extends TuiControl<string> {\n private readonly options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);\n\n public readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly ios = inject(WA_IS_IOS);\n protected readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n\n public readonly masked = tuiValue(this.el);\n\n public readonly mask = tuiMaskito(\n computed(() => this.computeMask(this.countryIsoCode(), this.metadata())),\n );\n\n protected readonly change = effect(() => this.onChange(this.unmask(this.masked())));\n\n protected readonly $ = inject(TuiActiveZone)\n .tuiActiveZoneChange.pipe(\n filter(() => !this.readOnly()),\n takeUntilDestroyed(),\n )\n .subscribe((active) => {\n const prefix = `${tuiGetCallingCode(this.countryIsoCode(), this.metadata())} `;\n\n this.search.set('');\n this.masked.update((value) => {\n const fallback = active ? value || prefix : value;\n\n return value === prefix ? '' : fallback;\n });\n });\n\n public readonly metadata = toSignal(from(this.options.metadata));\n public readonly open = inject(TuiDropdownOpen).open;\n public readonly search = signal('');\n public readonly countrySearch = input(this.options.countrySearch);\n public readonly countryIsoCode = model(this.options.countryIsoCode);\n public readonly countries = input(this.options.countries);\n\n public override writeValue(unmasked: string | null): void {\n const code = this.getCountryCode(unmasked ?? '');\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n\n super.writeValue(unmasked);\n this.masked.set(\n maskitoTransform(this.value() ?? '', this.mask() || MASKITO_DEFAULT_OPTIONS),\n );\n }\n\n protected onPaste(event: Event): void {\n const data = tuiIsInputEvent(event) && event.data;\n\n if (\n !data ||\n (!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))\n ) {\n return;\n }\n\n const code = this.getCountryCode(data);\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n }\n\n private computeMask(\n countryIsoCode: TuiCountryIsoCode,\n metadata?: MetadataJson,\n ): MaskitoOptions {\n if (!metadata) {\n return MASKITO_DEFAULT_OPTIONS;\n }\n\n const {plugins, ...options} = maskitoPhoneOptionsGenerator({\n countryIsoCode,\n metadata,\n separator: this.options.separator,\n });\n\n return {\n ...options,\n plugins: [...plugins, maskitoInitialCalibrationPlugin()],\n };\n }\n\n private unmask(maskedValue: string): string {\n const value = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');\n const code = tuiGetCallingCode(this.countryIsoCode(), this.metadata());\n\n return value === code ? '' : value;\n }\n\n private getCountryCode(value: string): TuiCountryIsoCode | null {\n const metadata = this.metadata();\n const phone = value.startsWith(CHAR_PLUS) ? value : `${CHAR_PLUS}${value}`;\n\n return metadata && validatePhoneNumberLength(phone, metadata) !== 'TOO_SHORT'\n ? (maskitoGetCountryFromNumber(phone, metadata) ?? null)\n : null;\n }\n}\n\nexport function tuiGetCallingCode(\n iso: TuiCountryIsoCode,\n metadata?: MetadataJson | null,\n): string {\n return metadata ? CHAR_PLUS + getCountryCallingCode(iso, metadata) : '';\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPhoneInternationalComponent} from './input-phone-international.component';\nimport {TuiInputPhoneInternationalContent} from './input-phone-international-content.component';\n\nexport const TuiInputPhoneInternational = [\n TuiInputPhoneInternationalComponent,\n TuiInputPhoneInternationalContent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}
|
|
@@ -152,13 +152,13 @@ class TuiInputPhoneDirective extends TuiControl {
|
|
|
152
152
|
],
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
156
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.
|
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPhoneDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
156
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.23", type: TuiInputPhoneDirective, isStandalone: true, selector: "input[tuiInputPhone]", inputs: { allowText: { classPropertyName: "allowText", publicName: "allowText", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "tel" }, listeners: { "input": "onInput($event.target.value)" }, properties: { "disabled": "disabled()", "inputMode": "inputMode()" } }, providers: [
|
|
157
157
|
tuiAsControl(TuiInputPhoneDirective),
|
|
158
158
|
tuiValueTransformerFrom(TUI_INPUT_PHONE_OPTIONS),
|
|
159
159
|
], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithInput }, { directive: i2.MaskitoDirective }], ngImport: i0 }); }
|
|
160
160
|
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPhoneDirective, decorators: [{
|
|
162
162
|
type: Directive,
|
|
163
163
|
args: [{
|
|
164
164
|
selector: 'input[tuiInputPhone]',
|
|
@@ -1,22 +1,40 @@
|
|
|
1
1
|
import { TuiLabel } from '@taiga-ui/core/components/label';
|
|
2
|
-
import
|
|
2
|
+
import * as i2 from '@taiga-ui/core/components/textfield';
|
|
3
|
+
import { TUI_TEXTFIELD_OPTIONS, tuiAsTextfieldContent, TuiTextfieldContent, TuiTextfieldComponent, TuiTextfieldOptionsDirective } from '@taiga-ui/core/components/textfield';
|
|
3
4
|
import { TuiDropdownContent } from '@taiga-ui/core/portals/dropdown';
|
|
4
5
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { inject, computed, input,
|
|
6
|
-
import { NgControl } from '@angular/forms';
|
|
6
|
+
import { inject, ChangeDetectionStrategy, ViewEncapsulation, Component, signal, computed, input, Directive } from '@angular/core';
|
|
7
7
|
import * as i1 from '@maskito/angular';
|
|
8
8
|
import { MaskitoDirective } from '@maskito/angular';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { TUI_VERSION } from '@taiga-ui/cdk/constants';
|
|
10
|
+
import { tuiInjectElement, tuiValue } from '@taiga-ui/cdk/utils/dom';
|
|
11
|
+
import { tuiFocusedIn } from '@taiga-ui/cdk/utils/focus';
|
|
11
12
|
import { tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
12
|
-
import { TuiAppearance } from '@taiga-ui/core/directives/appearance';
|
|
13
13
|
import { tuiMaskito } from '@taiga-ui/kit/utils';
|
|
14
|
+
import { NgControl } from '@angular/forms';
|
|
15
|
+
import { TuiAppearance } from '@taiga-ui/core/directives/appearance';
|
|
14
16
|
|
|
15
|
-
class
|
|
17
|
+
class TuiInputPinContent {
|
|
16
18
|
constructor() {
|
|
17
|
-
this.
|
|
19
|
+
this.pin = inject(TuiInputPinComponent);
|
|
18
20
|
this.appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;
|
|
19
21
|
this.control = inject(NgControl);
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPinContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.23", type: TuiInputPinContent, isStandalone: true, selector: "tui-input-pin-content", host: { attributes: { "aria-hidden": "true", "data-tui-version": "5.10.0-canary.9984aef" } }, ngImport: i0, template: "@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n", styles: ["@keyframes blink{50%{opacity:0}}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;display:flex;gap:inherit;border-radius:inherit}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item{display:flex;flex:1;align-items:center;justify-content:center;border-radius:inherit;pointer-events:auto;cursor:text;margin-inline-start:.25rem}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item:first-child{pointer-events:none;margin:0}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item[data-focus=true] .t-value_filled{background:var(--tui-service-selection-background)}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item[data-focus=true] .t-value_filled:before{display:none}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item[data-focus=true] .t-value:before{content:\"\";block-size:1em;border-inline-start:1px solid var(--tui-text-primary);animation:blink 1s steps(1) infinite}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-value{color:var(--tui-text-secondary)}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-value_filled{color:var(--tui-text-primary)}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){position:absolute;inset:0;color:transparent;background:transparent;border:none;outline:none;--t-caret-color: rgba(255, 255, 255, .01);caret-color:var(--t-caret-color)}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])::selection{background:transparent}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])::placeholder{color:transparent!important}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])+.t-content{gap:inherit!important}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])+.t-content [tuiButtonX]{display:none!important}[tuiTheme=dark] input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-caret-color: rgba(50, 50, 50, .01)}\n"], dependencies: [{ kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPinContent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'tui-input-pin-content', imports: [TuiAppearance], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'aria-hidden': 'true', 'data-tui-version': TUI_VERSION }, template: "@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n", styles: ["@keyframes blink{50%{opacity:0}}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;display:flex;gap:inherit;border-radius:inherit}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item{display:flex;flex:1;align-items:center;justify-content:center;border-radius:inherit;pointer-events:auto;cursor:text;margin-inline-start:.25rem}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item:first-child{pointer-events:none;margin:0}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item[data-focus=true] .t-value_filled{background:var(--tui-service-selection-background)}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item[data-focus=true] .t-value_filled:before{display:none}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-item[data-focus=true] .t-value:before{content:\"\";block-size:1em;border-inline-start:1px solid var(--tui-text-primary);animation:blink 1s steps(1) infinite}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-value{color:var(--tui-text-secondary)}tui-input-pin-content:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]) .t-value_filled{color:var(--tui-text-primary)}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){position:absolute;inset:0;color:transparent;background:transparent;border:none;outline:none;--t-caret-color: rgba(255, 255, 255, .01);caret-color:var(--t-caret-color)}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])::selection{background:transparent}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])::placeholder{color:transparent!important}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])+.t-content{gap:inherit!important}input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"])+.t-content [tuiButtonX]{display:none!important}[tuiTheme=dark] input[tuiInputPin]:where(*[data-tui-version=\"5.10.0-canary.9984aef\"]){--t-caret-color: rgba(50, 50, 50, .01)}\n"] }]
|
|
29
|
+
}] });
|
|
30
|
+
|
|
31
|
+
// TODO(v6): rename to TuiInputPinDirective
|
|
32
|
+
class TuiInputPinComponent {
|
|
33
|
+
constructor() {
|
|
34
|
+
this.selectionStart = signal(null);
|
|
35
|
+
this.el = tuiInjectElement();
|
|
36
|
+
this.value = tuiValue(this.el);
|
|
37
|
+
this.focused = tuiFocusedIn(this.el);
|
|
20
38
|
this.maskito = tuiMaskito(computed(() => ({ mask: this.mask(), overwriteMode: 'replace' })));
|
|
21
39
|
this.mask = input(/^\d+$/, {
|
|
22
40
|
transform: (mask) => tuiIsString(mask) ? new RegExp(mask) : mask,
|
|
@@ -27,28 +45,36 @@ class TuiInputPinComponent {
|
|
|
27
45
|
this.el.setSelectionRange(index, index + 1);
|
|
28
46
|
}
|
|
29
47
|
onSelection() {
|
|
30
|
-
|
|
31
|
-
|
|
48
|
+
const { selectionStart, selectionEnd, maxLength, value } = this.el;
|
|
49
|
+
if (selectionStart === maxLength) {
|
|
50
|
+
this.el.setSelectionRange(maxLength - 1, maxLength - 1);
|
|
32
51
|
}
|
|
52
|
+
else if (!selectionStart && !selectionEnd && value) {
|
|
53
|
+
this.el.setSelectionRange(0, 1);
|
|
54
|
+
}
|
|
55
|
+
this.selectionStart.set(this.el.selectionStart);
|
|
33
56
|
}
|
|
34
57
|
isFocused(index) {
|
|
35
|
-
return (
|
|
36
|
-
(this.el.selectionStart === index ||
|
|
37
|
-
(this.el.selectionStart === this.el.maxLength &&
|
|
38
|
-
index === this.el.maxLength - 1)));
|
|
58
|
+
return (this.focused() && (this.selectionStart() ?? this.el.selectionStart) === index);
|
|
39
59
|
}
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
41
|
-
static { this.ɵ
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPinComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
61
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.23", type: TuiInputPinComponent, isStandalone: true, selector: "input[tuiInputPin]", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-tui-version": "5.10.0-canary.9984aef", "inputmode": "numeric", "maxlength": "4", "spellcheck": "false" }, listeners: { "pointerdown.prevent": "onClick(0)", "selectionchange": "onSelection()" } }, providers: [tuiAsTextfieldContent(() => TuiInputPinContent)], hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiTextfieldContent }], ngImport: i0 }); }
|
|
42
62
|
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
44
|
-
type:
|
|
45
|
-
args: [{
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.23", ngImport: i0, type: TuiInputPinComponent, decorators: [{
|
|
64
|
+
type: Directive,
|
|
65
|
+
args: [{
|
|
66
|
+
selector: 'input[tuiInputPin]',
|
|
67
|
+
providers: [tuiAsTextfieldContent(() => TuiInputPinContent)],
|
|
68
|
+
hostDirectives: [MaskitoDirective, TuiTextfieldContent],
|
|
69
|
+
host: {
|
|
70
|
+
'data-tui-version': TUI_VERSION,
|
|
46
71
|
inputmode: 'numeric',
|
|
47
|
-
|
|
72
|
+
maxlength: '4',
|
|
48
73
|
spellcheck: 'false',
|
|
49
74
|
'(pointerdown.prevent)': 'onClick(0)',
|
|
50
75
|
'(selectionchange)': 'onSelection()',
|
|
51
|
-
},
|
|
76
|
+
},
|
|
77
|
+
}]
|
|
52
78
|
}] });
|
|
53
79
|
|
|
54
80
|
const TuiInputPin = [
|
|
@@ -63,5 +89,5 @@ const TuiInputPin = [
|
|
|
63
89
|
* Generated bundle index. Do not edit.
|
|
64
90
|
*/
|
|
65
91
|
|
|
66
|
-
export { TuiInputPin, TuiInputPinComponent };
|
|
92
|
+
export { TuiInputPin, TuiInputPinComponent, TuiInputPinContent };
|
|
67
93
|
//# sourceMappingURL=taiga-ui-kit-components-input-pin.mjs.map
|