@taiga-ui/legacy 4.52.0-canary.c107f6a → 4.52.0-canary.ca43bcb

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 (232) hide show
  1. package/README.md +1 -1
  2. package/components/dialog/dialog.component.d.ts +3 -4
  3. package/components/dialog/dialog.directive.d.ts +4 -3
  4. package/components/dialog/dialog.interfaces.d.ts +3 -4
  5. package/components/dialog/dialog.service.d.ts +5 -2
  6. package/components/dialog/dialog.tokens.d.ts +1 -3
  7. package/components/index.d.ts +1 -17
  8. package/components/mobile-dialog/index.d.ts +3 -0
  9. package/components/mobile-dialog/mobile-dialog.component.d.ts +10 -0
  10. package/components/mobile-dialog/mobile-dialog.options.d.ts +10 -0
  11. package/components/mobile-dialog/mobile-dialog.service.d.ts +14 -0
  12. package/components/pdf-viewer/pdf-viewer.component.d.ts +2 -2
  13. package/components/pdf-viewer/pdf-viewer.directive.d.ts +4 -3
  14. package/components/pdf-viewer/pdf-viewer.options.d.ts +1 -3
  15. package/components/pdf-viewer/pdf-viewer.service.d.ts +7 -3
  16. package/fesm2022/taiga-ui-legacy-components-dialog.mjs +28 -20
  17. package/fesm2022/taiga-ui-legacy-components-dialog.mjs.map +1 -1
  18. package/fesm2022/taiga-ui-legacy-components-mobile-dialog.mjs +62 -0
  19. package/fesm2022/taiga-ui-legacy-components-mobile-dialog.mjs.map +1 -0
  20. package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs +27 -20
  21. package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-legacy-components.mjs +1 -17
  23. package/fesm2022/taiga-ui-legacy-components.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-legacy.mjs +0 -4
  25. package/fesm2022/taiga-ui-legacy.mjs.map +1 -1
  26. package/index.d.ts +0 -4
  27. package/package.json +12 -113
  28. package/classes/abstract-native-select.d.ts +0 -22
  29. package/classes/abstract-textfield-host.d.ts +0 -19
  30. package/classes/control.d.ts +0 -60
  31. package/classes/controller.d.ts +0 -9
  32. package/classes/index.d.ts +0 -9
  33. package/classes/interactive.d.ts +0 -34
  34. package/classes/multiple-control.d.ts +0 -11
  35. package/classes/named-day.d.ts +0 -11
  36. package/classes/nullable-control.d.ts +0 -10
  37. package/classes/stringifiable-item.d.ts +0 -11
  38. package/components/arrow/arrow.component.d.ts +0 -17
  39. package/components/arrow/arrow.options.d.ts +0 -19
  40. package/components/arrow/arrow.providers.d.ts +0 -23
  41. package/components/arrow/index.d.ts +0 -3
  42. package/components/input/index.d.ts +0 -3
  43. package/components/input/input.component.d.ts +0 -32
  44. package/components/input/input.directive.d.ts +0 -12
  45. package/components/input/input.module.d.ts +0 -16
  46. package/components/input-date-range/index.d.ts +0 -3
  47. package/components/input-date-range/input-date-range.component.d.ts +0 -66
  48. package/components/input-date-range/input-date-range.directive.d.ts +0 -16
  49. package/components/input-date-range/input-date-range.module.d.ts +0 -21
  50. package/components/input-date-time/index.d.ts +0 -3
  51. package/components/input-date-time/input-date-time.component.d.ts +0 -87
  52. package/components/input-date-time/input-date-time.directive.d.ts +0 -17
  53. package/components/input-date-time/input-date-time.module.d.ts +0 -23
  54. package/components/input-date-time/native-date-time/native-date-time.directive.d.ts +0 -13
  55. package/components/input-month-range/index.d.ts +0 -3
  56. package/components/input-month-range/input-month-range.component.d.ts +0 -38
  57. package/components/input-month-range/input-month-range.directive.d.ts +0 -23
  58. package/components/input-month-range/input-month-range.module.d.ts +0 -18
  59. package/components/input-number/index.d.ts +0 -4
  60. package/components/input-number/input-number.component.d.ts +0 -62
  61. package/components/input-number/input-number.directive.d.ts +0 -16
  62. package/components/input-number/input-number.module.d.ts +0 -18
  63. package/components/input-number/input-number.options.d.ts +0 -29
  64. package/components/input-range/index.d.ts +0 -2
  65. package/components/input-range/input-range.component.d.ts +0 -56
  66. package/components/input-range/input-range.module.d.ts +0 -19
  67. package/components/input-slider/index.d.ts +0 -2
  68. package/components/input-slider/input-slider.component.d.ts +0 -42
  69. package/components/input-slider/input-slider.module.d.ts +0 -18
  70. package/components/input-tag/index.d.ts +0 -3
  71. package/components/input-tag/input-tag.component.d.ts +0 -103
  72. package/components/input-tag/input-tag.module.d.ts +0 -22
  73. package/components/input-tag/input-tag.options.d.ts +0 -27
  74. package/components/multi-select/hide-selected.pipe.d.ts +0 -11
  75. package/components/multi-select/index.d.ts +0 -10
  76. package/components/multi-select/multi-select-group/multi-select-group.component.d.ts +0 -23
  77. package/components/multi-select/multi-select-group/multi-select-group.directive.d.ts +0 -8
  78. package/components/multi-select/multi-select.component.d.ts +0 -71
  79. package/components/multi-select/multi-select.directive.d.ts +0 -14
  80. package/components/multi-select/multi-select.module.d.ts +0 -30
  81. package/components/multi-select/multi-select.options.d.ts +0 -14
  82. package/components/multi-select/native-multi-select/native-multi-select-group.component.d.ts +0 -9
  83. package/components/multi-select/native-multi-select/native-multi-select.component.d.ts +0 -8
  84. package/components/multi-select/native-multi-select/native-multi-select.d.ts +0 -11
  85. package/components/multi-select-option/index.d.ts +0 -2
  86. package/components/multi-select-option/multi-select-option.component.d.ts +0 -9
  87. package/components/multi-select-option/multi-select-option.module.d.ts +0 -9
  88. package/components/primitive-textfield/index.d.ts +0 -7
  89. package/components/primitive-textfield/primitive-textfield-options.d.ts +0 -21
  90. package/components/primitive-textfield/primitive-textfield-types.d.ts +0 -11
  91. package/components/primitive-textfield/primitive-textfield.component.d.ts +0 -73
  92. package/components/primitive-textfield/primitive-textfield.directive.d.ts +0 -14
  93. package/components/primitive-textfield/primitive-textfield.module.d.ts +0 -21
  94. package/components/primitive-textfield/textfield/textfield.component.d.ts +0 -13
  95. package/components/primitive-textfield/value-decoration/value-decoration.component.d.ts +0 -22
  96. package/components/select/index.d.ts +0 -6
  97. package/components/select/native-select/native-select-group.component.d.ts +0 -17
  98. package/components/select/native-select/native-select.component.d.ts +0 -16
  99. package/components/select/select.component.d.ts +0 -45
  100. package/components/select/select.directive.d.ts +0 -16
  101. package/components/select/select.module.d.ts +0 -24
  102. package/components/select/select.options.d.ts +0 -25
  103. package/components/select-option/index.d.ts +0 -2
  104. package/components/select-option/select-option.component.d.ts +0 -27
  105. package/components/select-option/select-option.module.d.ts +0 -10
  106. package/components/tag/index.d.ts +0 -3
  107. package/components/tag/tag.component.d.ts +0 -44
  108. package/components/tag/tag.module.d.ts +0 -16
  109. package/components/tag/tag.options.d.ts +0 -27
  110. package/components/textarea/index.d.ts +0 -3
  111. package/components/textarea/textarea.component.d.ts +0 -54
  112. package/components/textarea/textarea.directive.d.ts +0 -12
  113. package/components/textarea/textarea.module.d.ts +0 -21
  114. package/components/tooltip/index.d.ts +0 -2
  115. package/components/tooltip/tooltip.component.d.ts +0 -12
  116. package/components/tooltip/tooltip.module.d.ts +0 -13
  117. package/directives/index.d.ts +0 -5
  118. package/directives/legacy-dropdown-open-monitor/index.d.ts +0 -1
  119. package/directives/legacy-dropdown-open-monitor/legacy-dropdown-open-monitor.d.ts +0 -11
  120. package/directives/textfield-controller/index.d.ts +0 -14
  121. package/directives/textfield-controller/textfield-appearance.directive.d.ts +0 -9
  122. package/directives/textfield-controller/textfield-cleaner.directive.d.ts +0 -9
  123. package/directives/textfield-controller/textfield-controller.module.d.ts +0 -17
  124. package/directives/textfield-controller/textfield-controller.provider.d.ts +0 -4
  125. package/directives/textfield-controller/textfield-custom-content.directive.d.ts +0 -10
  126. package/directives/textfield-controller/textfield-filler.directive.d.ts +0 -9
  127. package/directives/textfield-controller/textfield-icon-left.directive.d.ts +0 -12
  128. package/directives/textfield-controller/textfield-icon.directive.d.ts +0 -12
  129. package/directives/textfield-controller/textfield-label-outside.directive.d.ts +0 -9
  130. package/directives/textfield-controller/textfield-postfix.directive.d.ts +0 -9
  131. package/directives/textfield-controller/textfield-prefix.directive.d.ts +0 -9
  132. package/directives/textfield-controller/textfield-size.directive.d.ts +0 -10
  133. package/directives/textfield-controller/textfield.controller.d.ts +0 -41
  134. package/directives/textfield-controller/textfield.options.d.ts +0 -19
  135. package/directives/unfinished-validator/index.d.ts +0 -2
  136. package/directives/unfinished-validator/unfinished-validator.directive.d.ts +0 -10
  137. package/directives/unfinished-validator/unfinished.validator.d.ts +0 -4
  138. package/directives/value-accessor/index.d.ts +0 -3
  139. package/directives/value-accessor/value-accessor.directive.d.ts +0 -5
  140. package/directives/value-accessor/value-accessor.module.d.ts +0 -7
  141. package/directives/value-accessor/value-accessor.provider.d.ts +0 -2
  142. package/directives/wrapper/README.md +0 -19
  143. package/directives/wrapper/index.d.ts +0 -2
  144. package/directives/wrapper/wrapper.directive.d.ts +0 -22
  145. package/directives/wrapper/wrapper.module.d.ts +0 -10
  146. package/fesm2022/taiga-ui-legacy-classes.mjs +0 -415
  147. package/fesm2022/taiga-ui-legacy-classes.mjs.map +0 -1
  148. package/fesm2022/taiga-ui-legacy-components-arrow.mjs +0 -85
  149. package/fesm2022/taiga-ui-legacy-components-arrow.mjs.map +0 -1
  150. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs +0 -346
  151. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs.map +0 -1
  152. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs +0 -459
  153. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs.map +0 -1
  154. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs +0 -221
  155. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs.map +0 -1
  156. package/fesm2022/taiga-ui-legacy-components-input-number.mjs +0 -383
  157. package/fesm2022/taiga-ui-legacy-components-input-number.mjs.map +0 -1
  158. package/fesm2022/taiga-ui-legacy-components-input-range.mjs +0 -261
  159. package/fesm2022/taiga-ui-legacy-components-input-range.mjs.map +0 -1
  160. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs +0 -199
  161. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs.map +0 -1
  162. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs +0 -524
  163. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs.map +0 -1
  164. package/fesm2022/taiga-ui-legacy-components-input.mjs +0 -156
  165. package/fesm2022/taiga-ui-legacy-components-input.mjs.map +0 -1
  166. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs +0 -47
  167. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs.map +0 -1
  168. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs +0 -686
  169. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs.map +0 -1
  170. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs +0 -454
  171. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs.map +0 -1
  172. package/fesm2022/taiga-ui-legacy-components-select-option.mjs +0 -88
  173. package/fesm2022/taiga-ui-legacy-components-select-option.mjs.map +0 -1
  174. package/fesm2022/taiga-ui-legacy-components-select.mjs +0 -353
  175. package/fesm2022/taiga-ui-legacy-components-select.mjs.map +0 -1
  176. package/fesm2022/taiga-ui-legacy-components-tag.mjs +0 -225
  177. package/fesm2022/taiga-ui-legacy-components-tag.mjs.map +0 -1
  178. package/fesm2022/taiga-ui-legacy-components-textarea.mjs +0 -262
  179. package/fesm2022/taiga-ui-legacy-components-textarea.mjs.map +0 -1
  180. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs +0 -53
  181. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs.map +0 -1
  182. package/fesm2022/taiga-ui-legacy-directives-legacy-dropdown-open-monitor.mjs +0 -49
  183. package/fesm2022/taiga-ui-legacy-directives-legacy-dropdown-open-monitor.mjs.map +0 -1
  184. package/fesm2022/taiga-ui-legacy-directives-textfield-controller.mjs +0 -401
  185. package/fesm2022/taiga-ui-legacy-directives-textfield-controller.mjs.map +0 -1
  186. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs +0 -48
  187. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs.map +0 -1
  188. package/fesm2022/taiga-ui-legacy-directives-value-accessor.mjs +0 -44
  189. package/fesm2022/taiga-ui-legacy-directives-value-accessor.mjs.map +0 -1
  190. package/fesm2022/taiga-ui-legacy-directives-wrapper.mjs +0 -99
  191. package/fesm2022/taiga-ui-legacy-directives-wrapper.mjs.map +0 -1
  192. package/fesm2022/taiga-ui-legacy-directives.mjs +0 -10
  193. package/fesm2022/taiga-ui-legacy-directives.mjs.map +0 -1
  194. package/fesm2022/taiga-ui-legacy-tokens.mjs +0 -384
  195. package/fesm2022/taiga-ui-legacy-tokens.mjs.map +0 -1
  196. package/fesm2022/taiga-ui-legacy-utils.mjs +0 -262
  197. package/fesm2022/taiga-ui-legacy-utils.mjs.map +0 -1
  198. package/styles/mixins/mixins.less +0 -239
  199. package/styles/mixins/mixins.scss +0 -224
  200. package/styles/mixins/textfield.less +0 -324
  201. package/styles/mixins/textfield.scss +0 -308
  202. package/styles/taiga-ui-local.less +0 -3
  203. package/styles/taiga-ui-local.scss +0 -3
  204. package/tokens/countries-masks.d.ts +0 -9
  205. package/tokens/focusable-item-accessor.d.ts +0 -25
  206. package/tokens/fonts-ready.d.ts +0 -6
  207. package/tokens/icons.d.ts +0 -6
  208. package/tokens/index.d.ts +0 -14
  209. package/tokens/is-apple.d.ts +0 -6
  210. package/tokens/is-chromium.d.ts +0 -6
  211. package/tokens/is-firefox.d.ts +0 -6
  212. package/tokens/is-stackblitz.d.ts +0 -5
  213. package/tokens/month-formatter.d.ts +0 -10
  214. package/tokens/sanitizer.d.ts +0 -6
  215. package/tokens/textfield-appearance.d.ts +0 -7
  216. package/tokens/textfield-host.d.ts +0 -23
  217. package/tokens/touch-supported.d.ts +0 -5
  218. package/tokens/value-accessor.d.ts +0 -7
  219. package/utils/capitalize-first-letter.d.ts +0 -4
  220. package/utils/date-mode-maskito-adapter.d.ts +0 -6
  221. package/utils/format-phone.d.ts +0 -30
  222. package/utils/get-border.d.ts +0 -5
  223. package/utils/get-max-allowed-phone-length.d.ts +0 -24
  224. package/utils/get-safe-area-size.d.ts +0 -7
  225. package/utils/icons-path-factory.d.ts +0 -13
  226. package/utils/index.d.ts +0 -13
  227. package/utils/is-presumed-html-string.d.ts +0 -4
  228. package/utils/iso-to-country-code.d.ts +0 -13
  229. package/utils/not-kz-region.d.ts +0 -20
  230. package/utils/process-icon.d.ts +0 -4
  231. package/utils/specific-dropdown-controllers.d.ts +0 -4
  232. package/utils/status.d.ts +0 -4
@@ -1,383 +0,0 @@
1
- import { __decorate } from 'tslib';
2
- import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Input, ContentChildren, ViewChild, ChangeDetectionStrategy, Component, Directive, NgModule } from '@angular/core';
4
- import { maskitoInitialCalibrationPlugin } from '@maskito/core';
5
- import { maskitoParseNumber, maskitoNumberOptionsGenerator, maskitoCaretGuard } from '@maskito/kit';
6
- import { EMPTY_QUERY, CHAR_HYPHEN, CHAR_MINUS } from '@taiga-ui/cdk/constants';
7
- import { TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
8
- import { tuiClamp, tuiIsSafeToRound } from '@taiga-ui/cdk/utils/math';
9
- import { tuiProvideOptions, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
10
- import { TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
11
- import { tuiFormatNumber } from '@taiga-ui/core/utils/format';
12
- import { AbstractTuiNullableControl, tuiAsControl, AbstractTuiTextfieldHost } from '@taiga-ui/legacy/classes';
13
- import * as i4 from '@taiga-ui/legacy/components/primitive-textfield';
14
- import { TuiPrimitiveTextfieldComponent, TuiTextfieldComponent, TuiPrimitiveTextfieldModule } from '@taiga-ui/legacy/components/primitive-textfield';
15
- import * as i5 from '@taiga-ui/legacy/directives';
16
- import { TUI_TEXTFIELD_SIZE, TUI_TEXTFIELD_WATCHED_CONTROLLER, TEXTFIELD_CONTROLLER_PROVIDER, TuiTextfieldControllerModule, TuiValueAccessorModule } from '@taiga-ui/legacy/directives';
17
- import { tuiAsFocusableItemAccessor, tuiAsTextfieldHost } from '@taiga-ui/legacy/tokens';
18
- import * as i2 from '@taiga-ui/polymorpheus';
19
- import { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
20
- import * as i1 from '@maskito/angular';
21
- import { MaskitoDirective } from '@maskito/angular';
22
- import * as i3 from '@taiga-ui/core/components/button';
23
- import { TuiButton } from '@taiga-ui/core/components/button';
24
- import * as i6 from '@angular/common';
25
- import { CommonModule } from '@angular/common';
26
-
27
- /**
28
- * @deprecated use new version of {@link TUI_INPUT_NUMBER_DEFAULT_OPTIONS} (from @taiga-ui/kit) instead
29
- * TODO(v5): delete it
30
- */
31
- const TUI_INPUT_NUMBER_DEFAULT_OPTIONS = {
32
- icons: {
33
- up: '@tui.plus',
34
- down: '@tui.minus',
35
- },
36
- min: Number.MIN_SAFE_INTEGER,
37
- max: Number.MAX_SAFE_INTEGER,
38
- step: 0,
39
- };
40
- /**
41
- * @deprecated use new version of {@link TUI_INPUT_NUMBER_OPTIONS} (from @taiga-ui/kit) instead
42
- * TODO(v5): delete it
43
- */
44
- const TUI_INPUT_NUMBER_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT_NUMBER_OPTIONS' : '', {
45
- factory: () => TUI_INPUT_NUMBER_DEFAULT_OPTIONS,
46
- });
47
- /**
48
- * @deprecated use new version of {@link tuiInputNumberOptionsProvider} (from @taiga-ui/kit) instead
49
- * TODO(v5): delete it
50
- */
51
- function tuiInputNumberOptionsProvider(options) {
52
- return tuiProvideOptions(TUI_INPUT_NUMBER_OPTIONS, options, TUI_INPUT_NUMBER_DEFAULT_OPTIONS);
53
- }
54
-
55
- const DEFAULT_MAX_LENGTH = 18;
56
- /**
57
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number tuiInputNumberOptionsProvider} (from @taiga-ui/kit) (property `valueTransformer`) instead
58
- * TODO(v5): delete it
59
- */
60
- const TUI_NUMBER_VALUE_TRANSFORMER = new InjectionToken(ngDevMode ? 'TUI_NUMBER_VALUE_TRANSFORMER' : '');
61
- /**
62
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead
63
- * TODO(v5): delete it
64
- */
65
- class TuiInputNumberComponent extends AbstractTuiNullableControl {
66
- constructor() {
67
- super(...arguments);
68
- this.isIOS = inject(TUI_IS_IOS);
69
- this.textfieldSize = inject(TUI_TEXTFIELD_SIZE);
70
- this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
71
- this.unfinishedValue = '';
72
- this.polymorpheusValueContent = EMPTY_QUERY;
73
- this.valueTransformer = inject(TUI_NUMBER_VALUE_TRANSFORMER, { optional: true });
74
- this.numberFormat = inject(TUI_NUMBER_FORMAT);
75
- this.controller = inject(TUI_TEXTFIELD_WATCHED_CONTROLLER);
76
- this.min = this.options.min;
77
- this.max = this.options.max;
78
- this.step = this.options.step;
79
- }
80
- get nativeFocusableElement() {
81
- return !this.textfield || this.computedDisabled
82
- ? null
83
- : this.textfield.nativeFocusableElement;
84
- }
85
- get focused() {
86
- return !!this.textfield?.focused;
87
- }
88
- get inputMode() {
89
- if (this.isIOS) {
90
- return this.isNegativeAllowed
91
- ? 'text' // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'
92
- : 'decimal';
93
- }
94
- /**
95
- * Samsung Keyboard does not have minus sign for `inputmode=decimal`
96
- * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792
97
- */
98
- return 'numeric';
99
- }
100
- get calculatedMaxLength() {
101
- const decimalPart = !!this.precision &&
102
- this.nativeValue.includes(this.numberFormat().decimalSeparator);
103
- const precision = decimalPart ? Math.min(this.precision + 1, 20) : 0;
104
- const takeThousand = this.numberFormat().thousandSeparator.repeat(5).length;
105
- return DEFAULT_MAX_LENGTH + precision + takeThousand;
106
- }
107
- get computedValue() {
108
- return this.focused ? this.nativeValue : this.formattedValue;
109
- }
110
- onValueChange(nativeValue) {
111
- const parsedValue = maskitoParseNumber(nativeValue, this.numberFormat());
112
- this.unfinishedValue = null;
113
- if (Number.isNaN(parsedValue)) {
114
- this.value = null;
115
- return;
116
- }
117
- if (this.isNativeValueNotFinished) {
118
- this.unfinishedValue = nativeValue;
119
- this.cdr.markForCheck();
120
- return;
121
- }
122
- if (parsedValue < this.computedMin || parsedValue > this.computedMax) {
123
- return;
124
- }
125
- this.value = parsedValue;
126
- }
127
- writeValue(value) {
128
- super.writeValue(value);
129
- this.nativeValue = this.formattedValue;
130
- }
131
- get size() {
132
- return this.textfieldSize.size;
133
- }
134
- get icons() {
135
- return this.options.icons;
136
- }
137
- get computedMin() {
138
- return this.computeMin(this.min, this.max);
139
- }
140
- get computedMax() {
141
- return this.computeMax(this.min, this.max);
142
- }
143
- get isNegativeAllowed() {
144
- return this.computedMin < 0;
145
- }
146
- get formattedValue() {
147
- return this.value !== null ? this.getFormattedValue(this.value || 0) : '';
148
- }
149
- get canDecrement() {
150
- return this.interactive && (this.value || 0) > this.computedMin;
151
- }
152
- get canIncrement() {
153
- return this.interactive && (this.value || 0) < this.computedMax;
154
- }
155
- get computedPrefix() {
156
- return this.controller.prefix;
157
- }
158
- get computedPostfix() {
159
- const { postfix } = this.controller;
160
- return postfix && ` ${postfix}`;
161
- }
162
- get mask() {
163
- return this.calculateMask(this.precision, this.numberFormat().decimalMode, this.numberFormat().decimalSeparator, this.numberFormat().thousandSeparator, this.computedMin, this.computedMax, this.computedPrefix, this.computedPostfix);
164
- }
165
- get nativeValue() {
166
- return this.nativeFocusableElement?.value || '';
167
- }
168
- set nativeValue(value) {
169
- if (!this.textfield || !this.nativeFocusableElement) {
170
- return;
171
- }
172
- this.textfield.value = value;
173
- this.nativeFocusableElement.value = value;
174
- }
175
- onArrow(step) {
176
- if (!step) {
177
- return;
178
- }
179
- this.value = tuiClamp((this.value || 0) + step, this.computedMin, this.computedMax);
180
- this.nativeValue = this.formattedValue;
181
- }
182
- onFocused(focused) {
183
- this.updateFocused(focused);
184
- const nativeNumberValue = this.unfinishedValue
185
- ? maskitoParseNumber(this.unfinishedValue, this.numberFormat())
186
- : this.nativeNumberValue;
187
- this.unfinishedValue = null;
188
- if (Number.isNaN(nativeNumberValue)) {
189
- this.nativeValue =
190
- focused && !this.readOnly
191
- ? this.computedPrefix + this.computedPostfix
192
- : '';
193
- this.value = null;
194
- return;
195
- }
196
- if (!focused) {
197
- this.value = nativeNumberValue;
198
- this.nativeValue = this.formattedValue;
199
- }
200
- }
201
- getFormattedValue(value) {
202
- return (this.computedPrefix +
203
- tuiFormatNumber(value, {
204
- ...this.numberFormat(),
205
- /**
206
- * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]
207
- * but its rounding can violate it.
208
- * Before BigInt support there is no perfect solution – only trade off.
209
- * No rounding is better than lose precision and incorrect mutation of already valid value.
210
- */
211
- precision: tuiIsSafeToRound(value, this.precision)
212
- ? this.precision
213
- : Infinity,
214
- }).replace(CHAR_HYPHEN, CHAR_MINUS) +
215
- this.computedPostfix);
216
- }
217
- get isNativeValueNotFinished() {
218
- const { nativeNumberValue } = this;
219
- return nativeNumberValue < 0
220
- ? nativeNumberValue > this.computedMax
221
- : nativeNumberValue < this.computedMin;
222
- }
223
- get nativeNumberValue() {
224
- return maskitoParseNumber(this.nativeValue, this.numberFormat());
225
- }
226
- get precision() {
227
- return Number.isNaN(this.numberFormat().precision)
228
- ? 2
229
- : this.numberFormat().precision;
230
- }
231
- computeMin(min, max) {
232
- return Math.min(this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min, this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max);
233
- }
234
- computeMax(min, max) {
235
- return Math.max(this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min, this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max);
236
- }
237
- // eslint-disable-next-line @typescript-eslint/max-params,max-params
238
- calculateMask(precision, decimalMode, decimalSeparator, thousandSeparator, min, max, prefix, postfix) {
239
- const params = {
240
- decimalSeparator,
241
- thousandSeparator,
242
- min,
243
- max,
244
- prefix,
245
- postfix,
246
- maximumFractionDigits: precision,
247
- minimumFractionDigits: decimalMode === 'always' ? precision : 0,
248
- };
249
- const { plugins, ...options } = maskitoNumberOptionsGenerator(params);
250
- const initialCalibrationPlugin = maskitoInitialCalibrationPlugin(maskitoNumberOptionsGenerator({
251
- ...params,
252
- min: Number.MIN_SAFE_INTEGER,
253
- max: Number.MAX_SAFE_INTEGER,
254
- }));
255
- return {
256
- ...options,
257
- plugins: [
258
- ...plugins,
259
- initialCalibrationPlugin,
260
- maskitoCaretGuard((value) => [
261
- prefix.length,
262
- value.length - postfix.length,
263
- ]),
264
- ],
265
- };
266
- }
267
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
268
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiInputNumberComponent, isStandalone: false, selector: "tui-input-number", inputs: { min: "min", max: "max", step: "step" }, host: { listeners: { "keydown.arrowDown": "onArrow(-step)", "keydown.arrowUp": "onArrow(step)" }, properties: { "attr.data-size": "size" } }, providers: [
269
- tuiAsFocusableItemAccessor(TuiInputNumberComponent),
270
- tuiAsControl(TuiInputNumberComponent),
271
- TEXTFIELD_CONTROLLER_PROVIDER,
272
- ], queries: [{ propertyName: "polymorpheusValueContent", predicate: PolymorpheusOutlet, descendants: true }], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-primitive-textfield\n #textfield\n tuiTextfieldPostfix=\"\"\n tuiTextfieldPrefix=\"\"\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"mask\"\n [pseudoActive]=\"pseudoActive\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [value]=\"computedValue\"\n (focusedChange)=\"onFocused($event)\"\n (valueChange)=\"onValueChange($event)\"\n>\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n @if (polymorpheusValueContent.length) {\n <div\n ngProjectAs=\"tuiContent\"\n class=\"t-value-content\"\n >\n <ng-container *polymorpheusOutlet=\"valueContent as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n</tui-primitive-textfield>\n\n@if (step) {\n <section class=\"t-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canIncrement\"\n [iconStart]=\"icons.up\"\n (click.prevent)=\"onArrow(step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canDecrement\"\n [iconStart]=\"icons.down\"\n (click.prevent)=\"onArrow(-step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n -\n </button>\n </section>\n}\n\n@if (polymorpheusValueContent.changes | async) {}\n\n<ng-template #valueContent>\n <ng-content select=\"tuiContent\" />\n</ng-template>\n", styles: [":host{display:flex;border-radius:var(--tui-radius-m);text-align:start}:host :host-context(*:disabled){pointer-events:none}.t-textfield{flex:1;min-inline-size:0;max-inline-size:100%;border-radius:inherit;text-align:inherit}.t-textfield:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.t-value-content{inline-size:100%}.t-buttons{display:flex;flex-direction:column;align-items:stretch;margin-inline-start:.125rem;border-radius:inherit}[data-size=s]+.t-buttons{flex-direction:row-reverse}[data-size=s]+.t-buttons .t-button:first-child{margin:0 0 0 .125rem;border-top-right-radius:inherit;border-bottom-right-radius:inherit}[data-size=s]+.t-buttons .t-button:last-child{border-radius:0}[data-size=m]+.t-buttons .t-button{inline-size:calc(var(--tui-height-m) * .75)}[data-size=l]+.t-buttons .t-button{inline-size:calc(var(--tui-height-l) * .75)}.t-buttons .t-button{display:flex;flex:1;block-size:auto;align-items:center;justify-content:center;border-radius:0}.t-buttons .t-button:first-child{margin-block-end:.125rem;border-top-right-radius:inherit}.t-buttons .t-button:last-child{border-bottom-right-radius:inherit}\n"], dependencies: [{ kind: "directive", type: i1.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"], outputs: ["maskitoChange", "maskitoElementChange"] }, { kind: "directive", type: i2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "iconCleaner", "readOnly", "invalid", "disabled", "value"], outputs: ["valueChange"] }, { kind: "directive", type: i4.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { kind: "directive", type: i5.TuiTextfieldPrefixDirective, selector: "[tuiTextfieldPrefix]", inputs: ["tuiTextfieldPrefix"] }, { kind: "directive", type: i5.TuiTextfieldPostfixDirective, selector: "[tuiTextfieldPostfix]", inputs: ["tuiTextfieldPostfix"] }, { kind: "directive", type: i5.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
273
- }
274
- __decorate([
275
- tuiPure
276
- ], TuiInputNumberComponent.prototype, "computeMin", null);
277
- __decorate([
278
- tuiPure
279
- ], TuiInputNumberComponent.prototype, "computeMax", null);
280
- __decorate([
281
- tuiPure
282
- ], TuiInputNumberComponent.prototype, "calculateMask", null);
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberComponent, decorators: [{
284
- type: Component,
285
- args: [{ standalone: false, selector: 'tui-input-number', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
286
- tuiAsFocusableItemAccessor(TuiInputNumberComponent),
287
- tuiAsControl(TuiInputNumberComponent),
288
- TEXTFIELD_CONTROLLER_PROVIDER,
289
- ], host: {
290
- '[attr.data-size]': 'size',
291
- '(keydown.arrowDown)': 'onArrow(-step)',
292
- '(keydown.arrowUp)': 'onArrow(step)',
293
- }, template: "<tui-primitive-textfield\n #textfield\n tuiTextfieldPostfix=\"\"\n tuiTextfieldPrefix=\"\"\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"mask\"\n [pseudoActive]=\"pseudoActive\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [value]=\"computedValue\"\n (focusedChange)=\"onFocused($event)\"\n (valueChange)=\"onValueChange($event)\"\n>\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n @if (polymorpheusValueContent.length) {\n <div\n ngProjectAs=\"tuiContent\"\n class=\"t-value-content\"\n >\n <ng-container *polymorpheusOutlet=\"valueContent as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n</tui-primitive-textfield>\n\n@if (step) {\n <section class=\"t-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canIncrement\"\n [iconStart]=\"icons.up\"\n (click.prevent)=\"onArrow(step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canDecrement\"\n [iconStart]=\"icons.down\"\n (click.prevent)=\"onArrow(-step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n -\n </button>\n </section>\n}\n\n@if (polymorpheusValueContent.changes | async) {}\n\n<ng-template #valueContent>\n <ng-content select=\"tuiContent\" />\n</ng-template>\n", styles: [":host{display:flex;border-radius:var(--tui-radius-m);text-align:start}:host :host-context(*:disabled){pointer-events:none}.t-textfield{flex:1;min-inline-size:0;max-inline-size:100%;border-radius:inherit;text-align:inherit}.t-textfield:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.t-value-content{inline-size:100%}.t-buttons{display:flex;flex-direction:column;align-items:stretch;margin-inline-start:.125rem;border-radius:inherit}[data-size=s]+.t-buttons{flex-direction:row-reverse}[data-size=s]+.t-buttons .t-button:first-child{margin:0 0 0 .125rem;border-top-right-radius:inherit;border-bottom-right-radius:inherit}[data-size=s]+.t-buttons .t-button:last-child{border-radius:0}[data-size=m]+.t-buttons .t-button{inline-size:calc(var(--tui-height-m) * .75)}[data-size=l]+.t-buttons .t-button{inline-size:calc(var(--tui-height-l) * .75)}.t-buttons .t-button{display:flex;flex:1;block-size:auto;align-items:center;justify-content:center;border-radius:0}.t-buttons .t-button:first-child{margin-block-end:.125rem;border-top-right-radius:inherit}.t-buttons .t-button:last-child{border-bottom-right-radius:inherit}\n"] }]
294
- }], propDecorators: { textfield: [{
295
- type: ViewChild,
296
- args: [TuiPrimitiveTextfieldComponent]
297
- }], polymorpheusValueContent: [{
298
- type: ContentChildren,
299
- args: [PolymorpheusOutlet, { descendants: true }]
300
- }], min: [{
301
- type: Input
302
- }], max: [{
303
- type: Input
304
- }], step: [{
305
- type: Input
306
- }], computeMin: [], computeMax: [], calculateMask: [] } });
307
-
308
- /**
309
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead
310
- * TODO(v5): delete it
311
- */
312
- class TuiInputNumberDirective extends AbstractTuiTextfieldHost {
313
- get value() {
314
- return this.host.computedValue;
315
- }
316
- onValueChange(value) {
317
- this.host.onValueChange(value);
318
- }
319
- ngDoCheck() {
320
- if (!this.host.nativeFocusableElement) {
321
- return;
322
- }
323
- this.host.nativeFocusableElement.inputMode = this.host.inputMode;
324
- this.host.nativeFocusableElement.maxLength =
325
- this.host.nativeFocusableElement.maxLength > 0
326
- ? this.host.nativeFocusableElement.maxLength
327
- : this.host.calculatedMaxLength;
328
- }
329
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
330
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputNumberDirective, isStandalone: false, selector: "tui-input-number", providers: [tuiAsTextfieldHost(TuiInputNumberDirective)], usesInheritance: true, ngImport: i0 }); }
331
- }
332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberDirective, decorators: [{
333
- type: Directive,
334
- args: [{
335
- standalone: false,
336
- selector: 'tui-input-number',
337
- providers: [tuiAsTextfieldHost(TuiInputNumberDirective)],
338
- }]
339
- }] });
340
-
341
- /**
342
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead
343
- * TODO(v5): delete it
344
- */
345
- class TuiInputNumberModule {
346
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
347
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, declarations: [TuiInputNumberComponent, TuiInputNumberDirective], imports: [CommonModule,
348
- MaskitoDirective,
349
- PolymorpheusOutlet,
350
- PolymorpheusTemplate,
351
- TuiButton,
352
- TuiPrimitiveTextfieldModule,
353
- TuiTextfieldControllerModule,
354
- TuiValueAccessorModule], exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent] }); }
355
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, imports: [CommonModule,
356
- TuiPrimitiveTextfieldModule,
357
- TuiTextfieldControllerModule,
358
- TuiValueAccessorModule] }); }
359
- }
360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, decorators: [{
361
- type: NgModule,
362
- args: [{
363
- imports: [
364
- CommonModule,
365
- MaskitoDirective,
366
- PolymorpheusOutlet,
367
- PolymorpheusTemplate,
368
- TuiButton,
369
- TuiPrimitiveTextfieldModule,
370
- TuiTextfieldControllerModule,
371
- TuiValueAccessorModule,
372
- ],
373
- declarations: [TuiInputNumberComponent, TuiInputNumberDirective],
374
- exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent],
375
- }]
376
- }] });
377
-
378
- /**
379
- * Generated bundle index. Do not edit.
380
- */
381
-
382
- export { TUI_INPUT_NUMBER_DEFAULT_OPTIONS, TUI_INPUT_NUMBER_OPTIONS, TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent, TuiInputNumberDirective, TuiInputNumberModule, tuiInputNumberOptionsProvider };
383
- //# sourceMappingURL=taiga-ui-legacy-components-input-number.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taiga-ui-legacy-components-input-number.mjs","sources":["../../../projects/legacy/components/input-number/input-number.options.ts","../../../projects/legacy/components/input-number/input-number.component.ts","../../../projects/legacy/components/input-number/input-number.template.html","../../../projects/legacy/components/input-number/input-number.directive.ts","../../../projects/legacy/components/input-number/input-number.module.ts","../../../projects/legacy/components/input-number/taiga-ui-legacy-components-input-number.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * @deprecated use new version of {@link TuiInputNumberOptions} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport interface TuiInputNumberOptions {\n readonly icons: Readonly<{\n down: string;\n up: string;\n }>;\n readonly max: number;\n readonly min: number;\n readonly step: number;\n}\n\n/**\n * @deprecated use new version of {@link TUI_INPUT_NUMBER_DEFAULT_OPTIONS} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n icons: {\n up: '@tui.plus',\n down: '@tui.minus',\n },\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n step: 0,\n};\n\n/**\n * @deprecated use new version of {@link TUI_INPUT_NUMBER_OPTIONS} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport const TUI_INPUT_NUMBER_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_NUMBER_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n },\n);\n\n/**\n * @deprecated use new version of {@link tuiInputNumberOptionsProvider} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport function tuiInputNumberOptionsProvider(\n options: Partial<TuiInputNumberOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_NUMBER_OPTIONS,\n options,\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n InjectionToken,\n Input,\n type QueryList,\n ViewChild,\n} from '@angular/core';\nimport {maskitoInitialCalibrationPlugin, type MaskitoOptions} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n type MaskitoNumberParams,\n maskitoParseNumber,\n} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {CHAR_HYPHEN, CHAR_MINUS, EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {tuiClamp, tuiIsSafeToRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_NUMBER_FORMAT, type TuiDecimalMode} from '@taiga-ui/core/tokens';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {AbstractTuiNullableControl, tuiAsControl} from '@taiga-ui/legacy/classes';\nimport {TuiPrimitiveTextfieldComponent} from '@taiga-ui/legacy/components/primitive-textfield';\nimport {\n TEXTFIELD_CONTROLLER_PROVIDER,\n TUI_TEXTFIELD_SIZE,\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n} from '@taiga-ui/legacy/directives';\nimport {\n tuiAsFocusableItemAccessor,\n type TuiFocusableElementAccessor,\n} from '@taiga-ui/legacy/tokens';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from './input-number.options';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number tuiInputNumberOptionsProvider} (from @taiga-ui/kit) (property `valueTransformer`) instead\n * TODO(v5): delete it\n */\nexport const TUI_NUMBER_VALUE_TRANSFORMER = new InjectionToken<\n TuiValueTransformer<number | null>\n>(ngDevMode ? 'TUI_NUMBER_VALUE_TRANSFORMER' : '');\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\n@Component({\n standalone: false,\n selector: 'tui-input-number',\n templateUrl: './input-number.template.html',\n styleUrl: './input-number.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsFocusableItemAccessor(TuiInputNumberComponent),\n tuiAsControl(TuiInputNumberComponent),\n TEXTFIELD_CONTROLLER_PROVIDER,\n ],\n host: {\n '[attr.data-size]': 'size',\n '(keydown.arrowDown)': 'onArrow(-step)',\n '(keydown.arrowUp)': 'onArrow(step)',\n },\n})\nexport class TuiInputNumberComponent\n extends AbstractTuiNullableControl<number>\n implements TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private readonly isIOS = inject(TUI_IS_IOS);\n private readonly textfieldSize = inject(TUI_TEXTFIELD_SIZE);\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private unfinishedValue: string | null = '';\n\n @ContentChildren(PolymorpheusOutlet, {descendants: true})\n protected readonly polymorpheusValueContent: QueryList<unknown> = EMPTY_QUERY;\n\n protected override readonly valueTransformer = inject<\n TuiValueTransformer<number | null>\n >(TUI_NUMBER_VALUE_TRANSFORMER, {optional: true});\n\n protected numberFormat = inject(TUI_NUMBER_FORMAT);\n protected readonly controller = inject(TUI_TEXTFIELD_WATCHED_CONTROLLER);\n\n @Input()\n public min: number | null = this.options.min;\n\n @Input()\n public max: number | null = this.options.max;\n\n @Input()\n public step = this.options.step;\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 !!this.textfield?.focused;\n }\n\n public get inputMode(): string {\n if (this.isIOS) {\n return this.isNegativeAllowed\n ? 'text' // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'\n : 'decimal';\n }\n\n /**\n * Samsung Keyboard does not have minus sign for `inputmode=decimal`\n * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792\n */\n return 'numeric';\n }\n\n public get calculatedMaxLength(): number {\n const decimalPart =\n !!this.precision &&\n this.nativeValue.includes(this.numberFormat().decimalSeparator);\n const precision = decimalPart ? Math.min(this.precision + 1, 20) : 0;\n const takeThousand = this.numberFormat().thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n }\n\n public get computedValue(): string {\n return this.focused ? this.nativeValue : this.formattedValue;\n }\n\n public onValueChange(nativeValue: string): void {\n const parsedValue = maskitoParseNumber(nativeValue, this.numberFormat());\n\n this.unfinishedValue = null;\n\n if (Number.isNaN(parsedValue)) {\n this.value = null;\n\n return;\n }\n\n if (this.isNativeValueNotFinished) {\n this.unfinishedValue = nativeValue;\n this.cdr.markForCheck();\n\n return;\n }\n\n if (parsedValue < this.computedMin || parsedValue > this.computedMax) {\n return;\n }\n\n this.value = parsedValue;\n }\n\n public override writeValue(value: number | null): void {\n super.writeValue(value);\n this.nativeValue = this.formattedValue;\n }\n\n protected get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n protected get icons(): TuiInputNumberOptions['icons'] {\n return this.options.icons;\n }\n\n protected get computedMin(): number {\n return this.computeMin(this.min, this.max);\n }\n\n protected get computedMax(): number {\n return this.computeMax(this.min, this.max);\n }\n\n protected get isNegativeAllowed(): boolean {\n return this.computedMin < 0;\n }\n\n protected get formattedValue(): string {\n return this.value !== null ? this.getFormattedValue(this.value || 0) : '';\n }\n\n protected get canDecrement(): boolean {\n return this.interactive && (this.value || 0) > this.computedMin;\n }\n\n protected get canIncrement(): boolean {\n return this.interactive && (this.value || 0) < this.computedMax;\n }\n\n protected get computedPrefix(): string {\n return this.controller.prefix;\n }\n\n protected get computedPostfix(): string {\n const {postfix} = this.controller;\n\n return postfix && ` ${postfix}`;\n }\n\n protected get mask(): MaskitoOptions {\n return this.calculateMask(\n this.precision,\n this.numberFormat().decimalMode,\n this.numberFormat().decimalSeparator,\n this.numberFormat().thousandSeparator,\n this.computedMin,\n this.computedMax,\n this.computedPrefix,\n this.computedPostfix,\n );\n }\n\n protected get nativeValue(): string {\n return this.nativeFocusableElement?.value || '';\n }\n\n protected set nativeValue(value: string) {\n if (!this.textfield || !this.nativeFocusableElement) {\n return;\n }\n\n this.textfield.value = value;\n this.nativeFocusableElement.value = value;\n }\n\n protected onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n this.value = tuiClamp(\n (this.value || 0) + step,\n this.computedMin,\n this.computedMax,\n );\n this.nativeValue = this.formattedValue;\n }\n\n protected onFocused(focused: boolean): void {\n this.updateFocused(focused);\n\n const nativeNumberValue = this.unfinishedValue\n ? maskitoParseNumber(this.unfinishedValue, this.numberFormat())\n : this.nativeNumberValue;\n\n this.unfinishedValue = null;\n\n if (Number.isNaN(nativeNumberValue)) {\n this.nativeValue =\n focused && !this.readOnly\n ? this.computedPrefix + this.computedPostfix\n : '';\n this.value = null;\n\n return;\n }\n\n if (!focused) {\n this.value = nativeNumberValue;\n this.nativeValue = this.formattedValue;\n }\n }\n\n protected getFormattedValue(value: number): string {\n return (\n this.computedPrefix +\n tuiFormatNumber(value, {\n ...this.numberFormat(),\n /**\n * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]\n * but its rounding can violate it.\n * Before BigInt support there is no perfect solution – only trade off.\n * No rounding is better than lose precision and incorrect mutation of already valid value.\n */\n precision: tuiIsSafeToRound(value, this.precision)\n ? this.precision\n : Infinity,\n }).replace(CHAR_HYPHEN, CHAR_MINUS) +\n this.computedPostfix\n );\n }\n\n private get isNativeValueNotFinished(): boolean {\n const {nativeNumberValue} = this;\n\n return nativeNumberValue < 0\n ? nativeNumberValue > this.computedMax\n : nativeNumberValue < this.computedMin;\n }\n\n private get nativeNumberValue(): number {\n return maskitoParseNumber(this.nativeValue, this.numberFormat());\n }\n\n private get precision(): number {\n return Number.isNaN(this.numberFormat().precision)\n ? 2\n : this.numberFormat().precision;\n }\n\n @tuiPure\n private computeMin(min: number | null, max: number | null): number {\n return Math.min(\n this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min,\n this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max,\n );\n }\n\n @tuiPure\n private computeMax(min: number | null, max: number | null): number {\n return Math.max(\n this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min,\n this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/max-params,max-params\n @tuiPure\n private calculateMask(\n precision: number,\n decimalMode: TuiDecimalMode,\n decimalSeparator: string,\n thousandSeparator: string,\n min: number,\n max: number,\n prefix: string,\n postfix: string,\n ): MaskitoOptions {\n const params: MaskitoNumberParams = {\n decimalSeparator,\n thousandSeparator,\n min,\n max,\n prefix,\n postfix,\n maximumFractionDigits: precision,\n minimumFractionDigits: decimalMode === 'always' ? precision : 0,\n };\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n const initialCalibrationPlugin = maskitoInitialCalibrationPlugin(\n maskitoNumberOptionsGenerator({\n ...params,\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n }),\n );\n\n return {\n ...options,\n plugins: [\n ...plugins,\n initialCalibrationPlugin,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n","<tui-primitive-textfield\n #textfield\n tuiTextfieldPostfix=\"\"\n tuiTextfieldPrefix=\"\"\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"mask\"\n [pseudoActive]=\"pseudoActive\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [value]=\"computedValue\"\n (focusedChange)=\"onFocused($event)\"\n (valueChange)=\"onValueChange($event)\"\n>\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n @if (polymorpheusValueContent.length) {\n <div\n ngProjectAs=\"tuiContent\"\n class=\"t-value-content\"\n >\n <ng-container *polymorpheusOutlet=\"valueContent as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n</tui-primitive-textfield>\n\n@if (step) {\n <section class=\"t-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canIncrement\"\n [iconStart]=\"icons.up\"\n (click.prevent)=\"onArrow(step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canDecrement\"\n [iconStart]=\"icons.down\"\n (click.prevent)=\"onArrow(-step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n -\n </button>\n </section>\n}\n\n@if (polymorpheusValueContent.changes | async) {}\n\n<ng-template #valueContent>\n <ng-content select=\"tuiContent\" />\n</ng-template>\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 TuiInputNumberComponent} from './input-number.component';\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\n@Directive({\n standalone: false,\n selector: 'tui-input-number',\n providers: [tuiAsTextfieldHost(TuiInputNumberDirective)],\n})\nexport class TuiInputNumberDirective\n extends AbstractTuiTextfieldHost<TuiInputNumberComponent>\n implements DoCheck\n{\n protected input?: HTMLInputElement;\n\n public override get value(): string {\n return this.host.computedValue;\n }\n\n public onValueChange(value: string): void {\n this.host.onValueChange(value);\n }\n\n public ngDoCheck(): void {\n if (!this.host.nativeFocusableElement) {\n return;\n }\n\n this.host.nativeFocusableElement.inputMode = this.host.inputMode;\n this.host.nativeFocusableElement.maxLength =\n this.host.nativeFocusableElement.maxLength > 0\n ? this.host.nativeFocusableElement.maxLength\n : this.host.calculatedMaxLength;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n} from '@taiga-ui/legacy/components/primitive-textfield';\nimport {\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n} from '@taiga-ui/legacy/directives';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\n\nimport {TuiInputNumberComponent} from './input-number.component';\nimport {TuiInputNumberDirective} from './input-number.directive';\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\n@NgModule({\n imports: [\n CommonModule,\n MaskitoDirective,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n TuiButton,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n ],\n declarations: [TuiInputNumberComponent, TuiInputNumberDirective],\n exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent],\n})\nexport class TuiInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}