@taiga-ui/legacy 4.52.0-canary.e10b718 → 4.52.0-canary.eb5ffe3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/components/dialog/dialog.component.d.ts +20 -0
  2. package/components/dialog/dialog.directive.d.ts +7 -0
  3. package/components/dialog/dialog.factory.d.ts +16 -0
  4. package/components/dialog/dialog.interfaces.d.ts +31 -0
  5. package/components/dialog/dialog.service.d.ts +7 -0
  6. package/components/dialog/dialog.tokens.d.ts +8 -0
  7. package/components/dialog/index.d.ts +6 -0
  8. package/components/index.d.ts +2 -9
  9. package/components/input/input.module.d.ts +1 -1
  10. package/components/input-date-range/input-date-range.module.d.ts +1 -1
  11. package/components/input-date-time/input-date-time.component.d.ts +4 -3
  12. package/components/input-date-time/input-date-time.module.d.ts +1 -1
  13. package/components/input-month-range/input-month-range.module.d.ts +1 -1
  14. package/components/input-range/input-range.component.d.ts +1 -1
  15. package/components/input-tag/input-tag.module.d.ts +1 -1
  16. package/components/multi-select/multi-select-group/multi-select-group.component.d.ts +1 -1
  17. package/components/multi-select/multi-select.module.d.ts +1 -1
  18. package/components/pdf-viewer/index.d.ts +4 -0
  19. package/components/pdf-viewer/pdf-viewer.component.d.ts +12 -0
  20. package/components/pdf-viewer/pdf-viewer.directive.d.ts +7 -0
  21. package/components/pdf-viewer/pdf-viewer.options.d.ts +13 -0
  22. package/components/pdf-viewer/pdf-viewer.service.d.ts +13 -0
  23. package/components/select/select.module.d.ts +1 -1
  24. package/fesm2022/taiga-ui-legacy-components-arrow.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-legacy-components-dialog.mjs +129 -0
  26. package/fesm2022/taiga-ui-legacy-components-dialog.mjs.map +1 -0
  27. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs +5 -5
  28. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs +6 -6
  30. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs +2 -2
  32. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-legacy-components-input-number.mjs +3 -3
  34. package/fesm2022/taiga-ui-legacy-components-input-number.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-legacy-components-input-range.mjs +7 -7
  36. package/fesm2022/taiga-ui-legacy-components-input-range.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs +3 -3
  38. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs +5 -5
  40. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs.map +1 -1
  41. package/fesm2022/taiga-ui-legacy-components-input.mjs +4 -5
  42. package/fesm2022/taiga-ui-legacy-components-input.mjs.map +1 -1
  43. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs +9 -9
  45. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs +82 -0
  47. package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs.map +1 -0
  48. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs +2 -2
  49. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-legacy-components-select-option.mjs.map +1 -1
  51. package/fesm2022/taiga-ui-legacy-components-select.mjs +8 -9
  52. package/fesm2022/taiga-ui-legacy-components-select.mjs.map +1 -1
  53. package/fesm2022/taiga-ui-legacy-components-tag.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-legacy-components-textarea.mjs +2 -2
  55. package/fesm2022/taiga-ui-legacy-components-textarea.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-legacy-components.mjs +2 -9
  57. package/fesm2022/taiga-ui-legacy-components.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs +1 -2
  59. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-legacy.mjs +0 -2
  61. package/fesm2022/taiga-ui-legacy.mjs.map +1 -1
  62. package/index.d.ts +0 -2
  63. package/package.json +8 -56
  64. package/utils/icons-path-factory.d.ts +1 -1
  65. package/components/color-selector/color-edit/color-edit.component.d.ts +0 -18
  66. package/components/color-selector/color-edit/color-edit.module.d.ts +0 -21
  67. package/components/color-selector/color-picker/color-picker.component.d.ts +0 -22
  68. package/components/color-selector/color-picker/color-picker.module.d.ts +0 -14
  69. package/components/color-selector/color-selector.component.d.ts +0 -47
  70. package/components/color-selector/color-selector.module.d.ts +0 -23
  71. package/components/color-selector/color-selector.options.d.ts +0 -25
  72. package/components/color-selector/flat-picker/flat-picker.component.d.ts +0 -12
  73. package/components/color-selector/flat-picker/flat-picker.module.d.ts +0 -12
  74. package/components/color-selector/index.d.ts +0 -16
  75. package/components/color-selector/linear-multi-picker/linear-multi-picker.component.d.ts +0 -17
  76. package/components/color-selector/linear-multi-picker/linear-multi-picker.module.d.ts +0 -12
  77. package/components/color-selector/linear-picker/linear-picker.component.d.ts +0 -10
  78. package/components/color-selector/linear-picker/linear-picker.module.d.ts +0 -12
  79. package/components/color-selector/palette/palette.component.d.ts +0 -10
  80. package/components/color-selector/palette/palette.module.d.ts +0 -13
  81. package/components/color-selector/services/picker.service.d.ts +0 -15
  82. package/components/combo-box/combo-box-strict.directive.d.ts +0 -12
  83. package/components/combo-box/combo-box.component.d.ts +0 -52
  84. package/components/combo-box/combo-box.directive.d.ts +0 -13
  85. package/components/combo-box/combo-box.module.d.ts +0 -20
  86. package/components/combo-box/index.d.ts +0 -4
  87. package/components/input-color/index.d.ts +0 -2
  88. package/components/input-color/input-color.component.d.ts +0 -30
  89. package/components/input-color/input-color.module.d.ts +0 -17
  90. package/components/input-date/index.d.ts +0 -3
  91. package/components/input-date/input-date.component.d.ts +0 -62
  92. package/components/input-date/input-date.directive.d.ts +0 -19
  93. package/components/input-date/input-date.module.d.ts +0 -24
  94. package/components/input-date/native-date/native-date.component.d.ts +0 -15
  95. package/components/input-phone/index.d.ts +0 -4
  96. package/components/input-phone/input-phone.component.d.ts +0 -52
  97. package/components/input-phone/input-phone.directive.d.ts +0 -16
  98. package/components/input-phone/input-phone.module.d.ts +0 -15
  99. package/components/input-phone/input-phone.options.d.ts +0 -22
  100. package/components/input-phone/utils/complete-phone-insertion-preprocessor.d.ts +0 -9
  101. package/components/input-phone/utils/create-phone-mask-expression.d.ts +0 -7
  102. package/components/input-phone/utils/index.d.ts +0 -2
  103. package/components/input-phone-international/index.d.ts +0 -3
  104. package/components/input-phone-international/input-phone-international.component.d.ts +0 -43
  105. package/components/input-phone-international/input-phone-international.options.d.ts +0 -25
  106. package/components/input-phone-international/utils/extract-value-from-event.d.ts +0 -4
  107. package/components/input-time/index.d.ts +0 -4
  108. package/components/input-time/input-time.component.d.ts +0 -62
  109. package/components/input-time/input-time.directive.d.ts +0 -17
  110. package/components/input-time/input-time.module.d.ts +0 -23
  111. package/components/input-time/input-time.options.d.ts +0 -42
  112. package/components/input-time/native-time/native-time.component.d.ts +0 -12
  113. package/components/input-year/index.d.ts +0 -3
  114. package/components/input-year/input-year.component.d.ts +0 -36
  115. package/components/input-year/input-year.directive.d.ts +0 -14
  116. package/components/input-year/input-year.module.d.ts +0 -18
  117. package/components/svg/content-processor.d.ts +0 -19
  118. package/components/svg/deprecated-icons.d.ts +0 -5
  119. package/components/svg/index.d.ts +0 -5
  120. package/components/svg/svg-options.d.ts +0 -50
  121. package/components/svg/svg.component.d.ts +0 -50
  122. package/components/svg/svg.service.d.ts +0 -21
  123. package/fesm2022/taiga-ui-legacy-components-color-selector.mjs +0 -726
  124. package/fesm2022/taiga-ui-legacy-components-color-selector.mjs.map +0 -1
  125. package/fesm2022/taiga-ui-legacy-components-combo-box.mjs +0 -300
  126. package/fesm2022/taiga-ui-legacy-components-combo-box.mjs.map +0 -1
  127. package/fesm2022/taiga-ui-legacy-components-input-color.mjs +0 -127
  128. package/fesm2022/taiga-ui-legacy-components-input-color.mjs.map +0 -1
  129. package/fesm2022/taiga-ui-legacy-components-input-date.mjs +0 -372
  130. package/fesm2022/taiga-ui-legacy-components-input-date.mjs.map +0 -1
  131. package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs +0 -215
  132. package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs.map +0 -1
  133. package/fesm2022/taiga-ui-legacy-components-input-phone.mjs +0 -373
  134. package/fesm2022/taiga-ui-legacy-components-input-phone.mjs.map +0 -1
  135. package/fesm2022/taiga-ui-legacy-components-input-time.mjs +0 -430
  136. package/fesm2022/taiga-ui-legacy-components-input-time.mjs.map +0 -1
  137. package/fesm2022/taiga-ui-legacy-components-input-year.mjs +0 -188
  138. package/fesm2022/taiga-ui-legacy-components-input-year.mjs.map +0 -1
  139. package/fesm2022/taiga-ui-legacy-components-svg.mjs +0 -387
  140. package/fesm2022/taiga-ui-legacy-components-svg.mjs.map +0 -1
  141. package/fesm2022/taiga-ui-legacy-pipes-format-phone.mjs +0 -59
  142. package/fesm2022/taiga-ui-legacy-pipes-format-phone.mjs.map +0 -1
  143. package/fesm2022/taiga-ui-legacy-pipes-iso-to-country-code.mjs +0 -50
  144. package/fesm2022/taiga-ui-legacy-pipes-iso-to-country-code.mjs.map +0 -1
  145. package/fesm2022/taiga-ui-legacy-pipes-to-country-code.mjs +0 -80
  146. package/fesm2022/taiga-ui-legacy-pipes-to-country-code.mjs.map +0 -1
  147. package/fesm2022/taiga-ui-legacy-pipes.mjs +0 -8
  148. package/fesm2022/taiga-ui-legacy-pipes.mjs.map +0 -1
  149. package/fesm2022/taiga-ui-legacy-services.mjs +0 -42
  150. package/fesm2022/taiga-ui-legacy-services.mjs.map +0 -1
  151. package/pipes/format-phone/format-phone.pipe.d.ts +0 -37
  152. package/pipes/format-phone/index.d.ts +0 -1
  153. package/pipes/index.d.ts +0 -3
  154. package/pipes/iso-to-country-code/index.d.ts +0 -1
  155. package/pipes/iso-to-country-code/iso-to-country-code.pipe.d.ts +0 -30
  156. package/pipes/to-country-code/index.d.ts +0 -1
  157. package/pipes/to-country-code/to-country-code.pipe.d.ts +0 -38
  158. package/services/index.d.ts +0 -1
  159. package/services/static-request.service.d.ts +0 -11
@@ -1,373 +0,0 @@
1
- import { __decorate } from 'tslib';
2
- import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, EventEmitter, TemplateRef, Input, Output, ContentChild, ViewChild, ChangeDetectionStrategy, Component, Directive, NgModule } from '@angular/core';
4
- import { maskitoTransform, MASKITO_DEFAULT_OPTIONS } from '@maskito/core';
5
- import { maskitoCaretGuard, maskitoPrefixPostprocessorGenerator } from '@maskito/kit';
6
- import { tuiIsNativeFocused } from '@taiga-ui/cdk/utils/focus';
7
- import { tuiProvideOptions, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
8
- import { TuiDataListDirective, tuiAsDataListHost } from '@taiga-ui/core/components/data-list';
9
- import * as i1 from '@taiga-ui/core/directives/dropdown';
10
- import { TuiDropdownOpen, TuiDropdownFixed, TuiDropdown } from '@taiga-ui/core/directives/dropdown';
11
- import { AbstractTuiControl, tuiAsControl, AbstractTuiTextfieldHost } from '@taiga-ui/legacy/classes';
12
- import * as i3 from '@taiga-ui/legacy/components/primitive-textfield';
13
- import { TuiPrimitiveTextfieldComponent, TuiTextfieldComponent, TuiPrimitiveTextfieldModule } from '@taiga-ui/legacy/components/primitive-textfield';
14
- import * as i4 from '@taiga-ui/legacy/directives';
15
- import { TUI_TEXTFIELD_CLEANER, TUI_TEXTFIELD_SIZE, TuiTextfieldControllerModule, TuiValueAccessorModule, TuiLegacyDropdownOpenMonitorDirective } from '@taiga-ui/legacy/directives';
16
- import { tuiAsFocusableItemAccessor, tuiAsTextfieldHost } from '@taiga-ui/legacy/tokens';
17
- import * as i2 from '@maskito/angular';
18
- import { MaskitoDirective } from '@maskito/angular';
19
-
20
- /**
21
- * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}
22
- */
23
- const TUI_INPUT_PHONE_DEFAULT_OPTIONS = {
24
- phoneMaskAfterCountryCode: '### ###-##-##',
25
- allowText: false,
26
- countryCode: '+7',
27
- };
28
- /**
29
- * Default parameters for input phone component
30
- * @deprecated drop in v5.0, use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}
31
- */
32
- const TUI_INPUT_PHONE_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT_PHONE_OPTIONS' : '', {
33
- factory: () => TUI_INPUT_PHONE_DEFAULT_OPTIONS,
34
- });
35
- /**
36
- * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}
37
- */
38
- function tuiInputPhoneOptionsProvider(options) {
39
- return tuiProvideOptions(TUI_INPUT_PHONE_OPTIONS, options, TUI_INPUT_PHONE_DEFAULT_OPTIONS);
40
- }
41
-
42
- const countDigits = (value) => value.replaceAll(/\D/g, '').length;
43
- /**
44
- * `InputPhone` component sets country code as non-removable prefix.
45
- * This prefix appears on focus and cannot be erased.
46
- * But users sometimes can copy complete phone number (from any different source)
47
- * and try to insert the whole string inside our `InputPhone` textfield.
48
- * This preprocessor helps to avoid country prefix duplication on paste/drop/autofill events.
49
- */
50
- function tuiCreateCompletePhoneInsertionPreprocessor(countryCode, phoneMaskAfterCountryCode) {
51
- const completePhoneLength = (countryCode + phoneMaskAfterCountryCode).replaceAll(/[^#\d]+/g, '').length;
52
- const trimCountryPrefix = (value) => countryCode === '+7'
53
- ? value.replace(/^(\+?\s*7?\s?8?)\s?/, '')
54
- : value.replace(new RegExp(`^(\\+?\\s*${countryCode.replace('+', '')}?)\\s?`), '');
55
- return ({ elementState, data }) => {
56
- const { value, selection } = elementState;
57
- return {
58
- elementState: {
59
- selection,
60
- value:
61
- /**
62
- * The only possible case when `value` includes digits more
63
- * than mask expression allows – browser autofill.
64
- * It means that we are inside `input`-event
65
- * and mask are ready to reject "extra" characters.
66
- * We should cut leading country prefix to save trailing characters!
67
- */
68
- countDigits(value) > completePhoneLength
69
- ? trimCountryPrefix(value)
70
- : value,
71
- },
72
- data: countDigits(data) >= completePhoneLength || data.startsWith(countryCode)
73
- ? /**
74
- * User tries to insert/drop the complete phone number (with country prefix).
75
- * We should drop already existing non-removable prefix.
76
- */
77
- trimCountryPrefix(data)
78
- : data,
79
- };
80
- };
81
- }
82
-
83
- /**
84
- * Create {@link https://maskito.dev/core-concepts/mask-expression pattern mask expression} for phone number
85
- *
86
- * @example
87
- * tuiCreatePhoneMaskExpression('+1', '(###) ###-####');
88
- */
89
- function tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode) {
90
- return [
91
- ...countryCode.split(''),
92
- ' ',
93
- ...phoneMaskAfterCountryCode
94
- .replaceAll(/[^#\- ()]+/g, '')
95
- .split('')
96
- .map((item) => (item === '#' ? /\d/ : item)),
97
- ];
98
- }
99
-
100
- const MASK_SYMBOLS = /[ \-_()]/g;
101
- function isText(value) {
102
- return Number.isNaN(parseInt(value.replaceAll(MASK_SYMBOLS, ''), 10));
103
- }
104
- /**
105
- * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}
106
- */
107
- class TuiInputPhoneComponent extends AbstractTuiControl {
108
- constructor() {
109
- super(...arguments);
110
- this.textfieldCleaner = inject(TUI_TEXTFIELD_CLEANER);
111
- this.options = inject(TUI_INPUT_PHONE_OPTIONS);
112
- this.textfieldSize = inject(TUI_TEXTFIELD_SIZE);
113
- this.open = false;
114
- this.phoneMaskAfterCountryCode = this.options.phoneMaskAfterCountryCode;
115
- this.allowText = this.options.allowText;
116
- this.search = '';
117
- this.searchChange = new EventEmitter();
118
- this.countryCode = this.options.countryCode;
119
- }
120
- set countryCodeSetter(newCountryCode) {
121
- const prevCountryCode = this.countryCode;
122
- this.countryCode = newCountryCode;
123
- this.updateValueWithNewCountryCode(prevCountryCode, newCountryCode);
124
- }
125
- get size() {
126
- return this.textfieldSize.size;
127
- }
128
- get nativeFocusableElement() {
129
- return !this.textfield || this.computedDisabled
130
- ? null
131
- : this.textfield.nativeFocusableElement;
132
- }
133
- get focused() {
134
- return (tuiIsNativeFocused(this.nativeFocusableElement) ||
135
- !!this.dropdown?.tuiDropdownOpen);
136
- }
137
- get nativeValue() {
138
- return (this.nativeFocusableElement?.value ||
139
- maskitoTransform(this.value, this.maskOptions));
140
- }
141
- set nativeValue(value) {
142
- if (this.nativeFocusableElement) {
143
- this.nativeFocusableElement.value = value;
144
- }
145
- }
146
- get inputMode() {
147
- return this.allowText ? 'text' : 'numeric';
148
- }
149
- onValueChange(value) {
150
- const parsed = isText(value)
151
- ? value
152
- : value.replaceAll(MASK_SYMBOLS, '').slice(0, this.maxPhoneLength);
153
- this.updateSearch(parsed);
154
- this.value = parsed === this.countryCode || isText(parsed) ? '' : parsed;
155
- this.open = true;
156
- if (!this.value && !this.allowText) {
157
- this.nativeValue = this.nonRemovablePrefix;
158
- }
159
- }
160
- handleOption(item) {
161
- this.focusInput();
162
- this.value = item;
163
- this.nativeValue = maskitoTransform(this.value, this.maskOptions);
164
- this.updateSearch('');
165
- this.open = false;
166
- }
167
- setDisabledState() {
168
- super.setDisabledState();
169
- this.open = false;
170
- }
171
- writeValue(value) {
172
- super.writeValue(value);
173
- this.nativeValue = maskitoTransform(this.value || '', this.maskOptions);
174
- this.updateSearch('');
175
- }
176
- get canOpen() {
177
- return this.interactive && !!this.datalist;
178
- }
179
- get canClean() {
180
- return (this.nativeValue !== this.nonRemovablePrefix && this.textfieldCleaner.cleaner);
181
- }
182
- get maskOptions() {
183
- return this.calculateMask(this.countryCode, this.phoneMaskAfterCountryCode, this.nonRemovablePrefix, this.allowText);
184
- }
185
- onActiveZone(active) {
186
- this.updateFocused(active);
187
- if (active && !this.nativeValue && !this.readOnly && !this.allowText) {
188
- this.updateSearch(this.nonRemovablePrefix);
189
- this.nativeValue = this.nonRemovablePrefix;
190
- return;
191
- }
192
- if (this.nativeValue === this.nonRemovablePrefix || this.isTextValue) {
193
- this.updateSearch('');
194
- this.nativeValue = '';
195
- return;
196
- }
197
- if (!active && !this.allowText && this.nativeFocusableElement) {
198
- this.nativeValue = this.nativeValue.replace(/\D$/, '');
199
- }
200
- }
201
- getFallbackValue() {
202
- return '';
203
- }
204
- get nonRemovablePrefix() {
205
- return `${this.countryCode} `;
206
- }
207
- get maxPhoneLength() {
208
- return (this.countryCode.length +
209
- this.phoneMaskAfterCountryCode.replaceAll(/[^#]+/g, '').length);
210
- }
211
- get isTextValue() {
212
- return !!this.search && isText(this.search);
213
- }
214
- calculateMask(countryCode, phoneMaskAfterCountryCode, nonRemovablePrefix, allowText) {
215
- const mask = tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode);
216
- const preprocessors = [
217
- tuiCreateCompletePhoneInsertionPreprocessor(countryCode, phoneMaskAfterCountryCode),
218
- ];
219
- return allowText
220
- ? {
221
- mask: ({ value }) => isText(value) && value !== '+'
222
- ? MASKITO_DEFAULT_OPTIONS.mask
223
- : mask,
224
- preprocessors,
225
- }
226
- : {
227
- mask,
228
- preprocessors,
229
- postprocessors: [
230
- maskitoPrefixPostprocessorGenerator(nonRemovablePrefix),
231
- ],
232
- plugins: [
233
- maskitoCaretGuard((value, [from, to]) => [
234
- from === to ? nonRemovablePrefix.length : 0,
235
- value.length,
236
- ]),
237
- ],
238
- };
239
- }
240
- focusInput() {
241
- if (this.nativeFocusableElement) {
242
- this.nativeFocusableElement.focus({ preventScroll: true });
243
- }
244
- }
245
- updateSearch(search) {
246
- if (this.search === search) {
247
- return;
248
- }
249
- this.search = search;
250
- this.searchChange.emit(search);
251
- }
252
- updateValueWithNewCountryCode(prevCountryCode, newCountryCode) {
253
- if (!this.isTextValue) {
254
- this.value = this.value.replace(prevCountryCode, newCountryCode);
255
- this.nativeValue = maskitoTransform(this.value, this.maskOptions);
256
- }
257
- }
258
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
259
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputPhoneComponent, isStandalone: false, selector: "tui-input-phone", inputs: { phoneMaskAfterCountryCode: "phoneMaskAfterCountryCode", allowText: "allowText", search: "search", countryCodeSetter: ["countryCode", "countryCodeSetter"] }, outputs: { searchChange: "searchChange" }, host: { properties: { "attr.data-size": "size" } }, providers: [
260
- tuiAsFocusableItemAccessor(TuiInputPhoneComponent),
261
- tuiAsControl(TuiInputPhoneComponent),
262
- tuiAsDataListHost(TuiInputPhoneComponent),
263
- ], queries: [{ propertyName: "datalist", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: TuiDropdownOpen, descendants: true }, { propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiDropdownFixed }], ngImport: i0, template: "<div\n tuiDropdownOpenMonitor\n class=\"t-hosted\"\n [tuiDropdown]=\"datalist || ''\"\n [tuiDropdownEnabled]=\"canOpen\"\n [(tuiDropdownOpen)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"maskOptions\"\n [nativeId]=\"nativeId\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [tuiTextfieldCleaner]=\"canClean\"\n [(value)]=\"nativeValue\"\n (valueChange)=\"onValueChange($event)\"\n >\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n </tui-primitive-textfield>\n</div>\n", styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:start}:host._disabled,:host :host-context(*:disabled){pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-textfield{border-radius:inherit;text-align:inherit}\n"], dependencies: [{ kind: "directive", type: i2.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i3.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "iconCleaner", "readOnly", "invalid", "disabled", "value"], outputs: ["valueChange"] }, { kind: "directive", type: i3.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { kind: "directive", type: i4.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { kind: "directive", type: i4.TuiLegacyDropdownOpenMonitorDirective, selector: "[tuiDropdownOpenMonitor]" }, { kind: "directive", type: i1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
264
- }
265
- __decorate([
266
- tuiPure
267
- ], TuiInputPhoneComponent.prototype, "calculateMask", null);
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneComponent, decorators: [{
269
- type: Component,
270
- args: [{ standalone: false, selector: 'tui-input-phone', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
271
- tuiAsFocusableItemAccessor(TuiInputPhoneComponent),
272
- tuiAsControl(TuiInputPhoneComponent),
273
- tuiAsDataListHost(TuiInputPhoneComponent),
274
- ], hostDirectives: [TuiDropdownFixed], host: {
275
- '[attr.data-size]': 'size',
276
- }, template: "<div\n tuiDropdownOpenMonitor\n class=\"t-hosted\"\n [tuiDropdown]=\"datalist || ''\"\n [tuiDropdownEnabled]=\"canOpen\"\n [(tuiDropdownOpen)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"maskOptions\"\n [nativeId]=\"nativeId\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [tuiTextfieldCleaner]=\"canClean\"\n [(value)]=\"nativeValue\"\n (valueChange)=\"onValueChange($event)\"\n >\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n </tui-primitive-textfield>\n</div>\n", styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:start}:host._disabled,:host :host-context(*:disabled){pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-textfield{border-radius:inherit;text-align:inherit}\n"] }]
277
- }], propDecorators: { dropdown: [{
278
- type: ViewChild,
279
- args: [TuiDropdownOpen]
280
- }], textfield: [{
281
- type: ViewChild,
282
- args: [TuiPrimitiveTextfieldComponent]
283
- }], datalist: [{
284
- type: ContentChild,
285
- args: [TuiDataListDirective, { read: TemplateRef }]
286
- }], phoneMaskAfterCountryCode: [{
287
- type: Input
288
- }], allowText: [{
289
- type: Input
290
- }], search: [{
291
- type: Input
292
- }], searchChange: [{
293
- type: Output
294
- }], countryCodeSetter: [{
295
- type: Input,
296
- args: ['countryCode']
297
- }], calculateMask: [] } });
298
-
299
- /**
300
- * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}
301
- */
302
- class TuiInputPhoneDirective extends AbstractTuiTextfieldHost {
303
- get value() {
304
- return this.host.nativeValue;
305
- }
306
- onValueChange(value) {
307
- this.host.onValueChange(value);
308
- }
309
- process(input) {
310
- this.input = input;
311
- }
312
- ngDoCheck() {
313
- if (!this.input) {
314
- return;
315
- }
316
- this.input.type = 'tel';
317
- this.input.inputMode = this.host.inputMode;
318
- }
319
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
320
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputPhoneDirective, isStandalone: false, selector: "tui-input-phone", providers: [tuiAsTextfieldHost(TuiInputPhoneDirective)], usesInheritance: true, ngImport: i0 }); }
321
- }
322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneDirective, decorators: [{
323
- type: Directive,
324
- args: [{
325
- standalone: false,
326
- selector: 'tui-input-phone',
327
- providers: [tuiAsTextfieldHost(TuiInputPhoneDirective)],
328
- }]
329
- }] });
330
-
331
- /**
332
- * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}
333
- */
334
- class TuiInputPhoneModule {
335
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
336
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneModule, declarations: [TuiInputPhoneComponent, TuiInputPhoneDirective], imports: [MaskitoDirective,
337
- TuiPrimitiveTextfieldModule,
338
- TuiTextfieldControllerModule,
339
- TuiValueAccessorModule,
340
- TuiLegacyDropdownOpenMonitorDirective, i1.TuiDropdownOptionsDirective, i1.TuiDropdownDriverDirective, i1.TuiDropdownDirective, i1.TuiDropdownComponent, i1.TuiDropdownOpen, i1.TuiDropdownOpenLegacy, i1.TuiDropdownPortal, i1.TuiDropdownManual, i1.TuiDropdownHover, i1.TuiDropdownContext, i1.TuiDropdownPosition, i1.TuiDropdownPositionSided, i1.TuiDropdownSelection], exports: [TuiInputPhoneComponent,
341
- TuiInputPhoneDirective,
342
- TuiTextfieldComponent, i1.TuiDropdownOptionsDirective, i1.TuiDropdownDriverDirective, i1.TuiDropdownDirective, i1.TuiDropdownComponent, i1.TuiDropdownOpen, i1.TuiDropdownOpenLegacy, i1.TuiDropdownPortal, i1.TuiDropdownManual, i1.TuiDropdownHover, i1.TuiDropdownContext, i1.TuiDropdownPosition, i1.TuiDropdownPositionSided, i1.TuiDropdownSelection] }); }
343
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneModule, imports: [TuiPrimitiveTextfieldModule,
344
- TuiTextfieldControllerModule,
345
- TuiValueAccessorModule, i1.TuiDropdownComponent] }); }
346
- }
347
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputPhoneModule, decorators: [{
348
- type: NgModule,
349
- args: [{
350
- imports: [
351
- MaskitoDirective,
352
- TuiPrimitiveTextfieldModule,
353
- TuiTextfieldControllerModule,
354
- TuiValueAccessorModule,
355
- TuiLegacyDropdownOpenMonitorDirective,
356
- ...TuiDropdown,
357
- ],
358
- declarations: [TuiInputPhoneComponent, TuiInputPhoneDirective],
359
- exports: [
360
- TuiInputPhoneComponent,
361
- TuiInputPhoneDirective,
362
- TuiTextfieldComponent,
363
- ...TuiDropdown,
364
- ],
365
- }]
366
- }] });
367
-
368
- /**
369
- * Generated bundle index. Do not edit.
370
- */
371
-
372
- export { TUI_INPUT_PHONE_DEFAULT_OPTIONS, TUI_INPUT_PHONE_OPTIONS, TuiInputPhoneComponent, TuiInputPhoneDirective, TuiInputPhoneModule, tuiInputPhoneOptionsProvider };
373
- //# sourceMappingURL=taiga-ui-legacy-components-input-phone.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taiga-ui-legacy-components-input-phone.mjs","sources":["../../../projects/legacy/components/input-phone/input-phone.options.ts","../../../projects/legacy/components/input-phone/utils/complete-phone-insertion-preprocessor.ts","../../../projects/legacy/components/input-phone/utils/create-phone-mask-expression.ts","../../../projects/legacy/components/input-phone/input-phone.component.ts","../../../projects/legacy/components/input-phone/input-phone.template.html","../../../projects/legacy/components/input-phone/input-phone.directive.ts","../../../projects/legacy/components/input-phone/input-phone.module.ts","../../../projects/legacy/components/input-phone/taiga-ui-legacy-components-input-phone.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}\n */\nexport interface TuiInputPhoneOptions {\n readonly allowText: boolean;\n readonly countryCode: string;\n readonly phoneMaskAfterCountryCode: string;\n}\n\n/**\n * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}\n */\nexport const TUI_INPUT_PHONE_DEFAULT_OPTIONS: TuiInputPhoneOptions = {\n phoneMaskAfterCountryCode: '### ###-##-##',\n allowText: false,\n countryCode: '+7',\n};\n\n/**\n * Default parameters for input phone component\n * @deprecated drop in v5.0, use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}\n */\nexport const TUI_INPUT_PHONE_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_PHONE_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_PHONE_DEFAULT_OPTIONS,\n },\n);\n\n/**\n * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}\n */\nexport function tuiInputPhoneOptionsProvider(\n options: Partial<TuiInputPhoneOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_PHONE_OPTIONS,\n options,\n TUI_INPUT_PHONE_DEFAULT_OPTIONS,\n );\n}\n","import {type MaskitoPreprocessor} from '@maskito/core';\n\nconst countDigits = (value: string): number => value.replaceAll(/\\D/g, '').length;\n\n/**\n * `InputPhone` component sets country code as non-removable prefix.\n * This prefix appears on focus and cannot be erased.\n * But users sometimes can copy complete phone number (from any different source)\n * and try to insert the whole string inside our `InputPhone` textfield.\n * This preprocessor helps to avoid country prefix duplication on paste/drop/autofill events.\n */\nexport function tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n): MaskitoPreprocessor {\n const completePhoneLength = (countryCode + phoneMaskAfterCountryCode).replaceAll(\n /[^#\\d]+/g,\n '',\n ).length;\n\n const trimCountryPrefix = (value: string): string =>\n countryCode === '+7'\n ? value.replace(/^(\\+?\\s*7?\\s?8?)\\s?/, '')\n : value.replace(\n new RegExp(`^(\\\\+?\\\\s*${countryCode.replace('+', '')}?)\\\\s?`),\n '',\n );\n\n return ({elementState, data}) => {\n const {value, selection} = elementState;\n\n return {\n elementState: {\n selection,\n value:\n /**\n * The only possible case when `value` includes digits more\n * than mask expression allows – browser autofill.\n * It means that we are inside `input`-event\n * and mask are ready to reject \"extra\" characters.\n * We should cut leading country prefix to save trailing characters!\n */\n countDigits(value) > completePhoneLength\n ? trimCountryPrefix(value)\n : value,\n },\n data:\n countDigits(data) >= completePhoneLength || data.startsWith(countryCode)\n ? /**\n * User tries to insert/drop the complete phone number (with country prefix).\n * We should drop already existing non-removable prefix.\n */\n trimCountryPrefix(data)\n : data,\n };\n };\n}\n","/**\n * Create {@link https://maskito.dev/core-concepts/mask-expression pattern mask expression} for phone number\n *\n * @example\n * tuiCreatePhoneMaskExpression('+1', '(###) ###-####');\n */\nexport function tuiCreatePhoneMaskExpression(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n): Array<RegExp | string> {\n return [\n ...countryCode.split(''),\n ' ',\n ...phoneMaskAfterCountryCode\n .replaceAll(/[^#\\- ()]+/g, '')\n .split('')\n .map((item) => (item === '#' ? /\\d/ : item)),\n ];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n inject,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n type MaskitoOptions,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoCaretGuard, maskitoPrefixPostprocessorGenerator} from '@maskito/kit';\nimport {type TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiIsNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDataListHost,\n TuiDataListDirective,\n type TuiDataListHost,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiDropdownFixed, TuiDropdownOpen} from '@taiga-ui/core/directives/dropdown';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {AbstractTuiControl, tuiAsControl} from '@taiga-ui/legacy/classes';\nimport {TuiPrimitiveTextfieldComponent} from '@taiga-ui/legacy/components/primitive-textfield';\nimport {TUI_TEXTFIELD_CLEANER, TUI_TEXTFIELD_SIZE} from '@taiga-ui/legacy/directives';\nimport {\n tuiAsFocusableItemAccessor,\n type TuiFocusableElementAccessor,\n} from '@taiga-ui/legacy/tokens';\n\nimport {TUI_INPUT_PHONE_OPTIONS} from './input-phone.options';\nimport {\n tuiCreateCompletePhoneInsertionPreprocessor,\n tuiCreatePhoneMaskExpression,\n} from './utils';\n\nconst MASK_SYMBOLS = /[ \\-_()]/g;\n\nfunction isText(value: string): boolean {\n return Number.isNaN(parseInt(value.replaceAll(MASK_SYMBOLS, ''), 10));\n}\n\n/**\n * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}\n */\n@Component({\n standalone: false,\n selector: 'tui-input-phone',\n templateUrl: './input-phone.template.html',\n styleUrls: ['./input-phone.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsFocusableItemAccessor(TuiInputPhoneComponent),\n tuiAsControl(TuiInputPhoneComponent),\n tuiAsDataListHost(TuiInputPhoneComponent),\n ],\n hostDirectives: [TuiDropdownFixed],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiInputPhoneComponent\n extends AbstractTuiControl<string>\n implements TuiFocusableElementAccessor, TuiDataListHost<string>\n{\n @ViewChild(TuiDropdownOpen)\n private readonly dropdown?: TuiDropdownOpen;\n\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private readonly textfieldCleaner = inject(TUI_TEXTFIELD_CLEANER);\n private readonly options = inject(TUI_INPUT_PHONE_OPTIONS);\n private readonly textfieldSize = inject(TUI_TEXTFIELD_SIZE);\n\n @ContentChild(TuiDataListDirective, {read: TemplateRef})\n protected readonly datalist?: TemplateRef<TuiContext<TuiActiveZone>>;\n\n protected open = false;\n\n @Input()\n public phoneMaskAfterCountryCode = this.options.phoneMaskAfterCountryCode;\n\n @Input()\n public allowText = this.options.allowText;\n\n @Input()\n public search = '';\n\n @Output()\n public readonly searchChange = new EventEmitter<string>();\n\n public countryCode = this.options.countryCode;\n\n @Input('countryCode')\n public set countryCodeSetter(newCountryCode: string) {\n const prevCountryCode = this.countryCode;\n\n this.countryCode = newCountryCode;\n this.updateValueWithNewCountryCode(prevCountryCode, newCountryCode);\n }\n\n public get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n public get nativeFocusableElement(): HTMLInputElement | null {\n return !this.textfield || this.computedDisabled\n ? null\n : this.textfield.nativeFocusableElement;\n }\n\n public get focused(): boolean {\n return (\n tuiIsNativeFocused(this.nativeFocusableElement) ||\n !!this.dropdown?.tuiDropdownOpen\n );\n }\n\n public get nativeValue(): string {\n return (\n this.nativeFocusableElement?.value ||\n maskitoTransform(this.value, this.maskOptions)\n );\n }\n\n public set nativeValue(value: string) {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.value = value;\n }\n }\n\n public get inputMode(): string {\n return this.allowText ? 'text' : 'numeric';\n }\n\n public onValueChange(value: string): void {\n const parsed = isText(value)\n ? value\n : value.replaceAll(MASK_SYMBOLS, '').slice(0, this.maxPhoneLength);\n\n this.updateSearch(parsed);\n this.value = parsed === this.countryCode || isText(parsed) ? '' : parsed;\n this.open = true;\n\n if (!this.value && !this.allowText) {\n this.nativeValue = this.nonRemovablePrefix;\n }\n }\n\n public handleOption(item: string): void {\n this.focusInput();\n this.value = item;\n this.nativeValue = maskitoTransform(this.value, this.maskOptions);\n this.updateSearch('');\n this.open = false;\n }\n\n public override setDisabledState(): void {\n super.setDisabledState();\n this.open = false;\n }\n\n public override writeValue(value: string | null): void {\n super.writeValue(value);\n this.nativeValue = maskitoTransform(this.value || '', this.maskOptions);\n this.updateSearch('');\n }\n\n protected get canOpen(): boolean {\n return this.interactive && !!this.datalist;\n }\n\n protected get canClean(): boolean {\n return (\n this.nativeValue !== this.nonRemovablePrefix && this.textfieldCleaner.cleaner\n );\n }\n\n protected get maskOptions(): MaskitoOptions {\n return this.calculateMask(\n this.countryCode,\n this.phoneMaskAfterCountryCode,\n this.nonRemovablePrefix,\n this.allowText,\n );\n }\n\n protected onActiveZone(active: boolean): void {\n this.updateFocused(active);\n\n if (active && !this.nativeValue && !this.readOnly && !this.allowText) {\n this.updateSearch(this.nonRemovablePrefix);\n this.nativeValue = this.nonRemovablePrefix;\n\n return;\n }\n\n if (this.nativeValue === this.nonRemovablePrefix || this.isTextValue) {\n this.updateSearch('');\n this.nativeValue = '';\n\n return;\n }\n\n if (!active && !this.allowText && this.nativeFocusableElement) {\n this.nativeValue = this.nativeValue.replace(/\\D$/, '');\n }\n }\n\n protected getFallbackValue(): string {\n return '';\n }\n\n private get nonRemovablePrefix(): string {\n return `${this.countryCode} `;\n }\n\n private get maxPhoneLength(): number {\n return (\n this.countryCode.length +\n this.phoneMaskAfterCountryCode.replaceAll(/[^#]+/g, '').length\n );\n }\n\n private get isTextValue(): boolean {\n return !!this.search && isText(this.search);\n }\n\n @tuiPure\n private calculateMask(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n nonRemovablePrefix: string,\n allowText: boolean,\n ): MaskitoOptions {\n const mask = tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode);\n const preprocessors = [\n tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode,\n phoneMaskAfterCountryCode,\n ),\n ];\n\n return allowText\n ? {\n mask: ({value}) =>\n isText(value) && value !== '+'\n ? (MASKITO_DEFAULT_OPTIONS.mask as RegExp)\n : mask,\n preprocessors,\n }\n : {\n mask,\n preprocessors,\n postprocessors: [\n maskitoPrefixPostprocessorGenerator(nonRemovablePrefix),\n ],\n plugins: [\n maskitoCaretGuard((value, [from, to]) => [\n from === to ? nonRemovablePrefix.length : 0,\n value.length,\n ]),\n ],\n };\n }\n\n private focusInput(): void {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.focus({preventScroll: true});\n }\n }\n\n private updateSearch(search: string): void {\n if (this.search === search) {\n return;\n }\n\n this.search = search;\n this.searchChange.emit(search);\n }\n\n private updateValueWithNewCountryCode(\n prevCountryCode: string,\n newCountryCode: string,\n ): void {\n if (!this.isTextValue) {\n this.value = this.value.replace(prevCountryCode, newCountryCode);\n this.nativeValue = maskitoTransform(this.value, this.maskOptions);\n }\n }\n}\n","<div\n tuiDropdownOpenMonitor\n class=\"t-hosted\"\n [tuiDropdown]=\"datalist || ''\"\n [tuiDropdownEnabled]=\"canOpen\"\n [(tuiDropdownOpen)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"maskOptions\"\n [nativeId]=\"nativeId\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [tuiTextfieldCleaner]=\"canClean\"\n [(value)]=\"nativeValue\"\n (valueChange)=\"onValueChange($event)\"\n >\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n </tui-primitive-textfield>\n</div>\n","import {Directive, type DoCheck} from '@angular/core';\nimport {AbstractTuiTextfieldHost} from '@taiga-ui/legacy/classes';\nimport {tuiAsTextfieldHost} from '@taiga-ui/legacy/tokens';\n\nimport {type TuiInputPhoneComponent} from './input-phone.component';\n\n/**\n * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}\n */\n@Directive({\n standalone: false,\n selector: 'tui-input-phone',\n providers: [tuiAsTextfieldHost(TuiInputPhoneDirective)],\n})\nexport class TuiInputPhoneDirective\n extends AbstractTuiTextfieldHost<TuiInputPhoneComponent>\n implements DoCheck\n{\n protected input?: HTMLInputElement;\n\n public override get value(): string {\n return this.host.nativeValue;\n }\n\n public onValueChange(value: string): void {\n this.host.onValueChange(value);\n }\n\n public override process(input: HTMLInputElement): void {\n this.input = input;\n }\n\n public ngDoCheck(): void {\n if (!this.input) {\n return;\n }\n\n this.input.type = 'tel';\n this.input.inputMode = this.host.inputMode;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport {\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n} from '@taiga-ui/legacy/components/primitive-textfield';\nimport {\n TuiLegacyDropdownOpenMonitorDirective,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n} from '@taiga-ui/legacy/directives';\n\nimport {TuiInputPhoneComponent} from './input-phone.component';\nimport {TuiInputPhoneDirective} from './input-phone.directive';\n\n/**\n * @deprecated use {@link https://taiga-ui.dev/components/input-phone TuiInputPhone} with {@link https://taiga-ui.dev/components/textfield TuiTextfield}\n */\n@NgModule({\n imports: [\n MaskitoDirective,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n TuiLegacyDropdownOpenMonitorDirective,\n ...TuiDropdown,\n ],\n declarations: [TuiInputPhoneComponent, TuiInputPhoneDirective],\n exports: [\n TuiInputPhoneComponent,\n TuiInputPhoneDirective,\n TuiTextfieldComponent,\n ...TuiDropdown,\n ],\n})\nexport class TuiInputPhoneModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}