@taiga-ui/kit 5.10.0 → 5.11.0-canary.0f9eee3

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/input-color/input-color-content.component.d.ts +11 -0
  2. package/components/input-color/input-color.component.d.ts +4 -7
  3. package/components/input-date/index.d.ts +0 -1
  4. package/components/input-date-multi/input-date-multi.directive.d.ts +1 -1
  5. package/components/input-date-time/index.d.ts +0 -1
  6. package/components/input-month/index.d.ts +0 -1
  7. package/components/input-phone-international/input-phone-international-content.component.d.ts +21 -0
  8. package/components/input-phone-international/input-phone-international.component.d.ts +10 -20
  9. package/components/input-pin/index.d.ts +0 -1
  10. package/components/input-time/index.d.ts +0 -1
  11. package/components/multi-select/multi-select-group/multi-select-group.component.d.ts +1 -0
  12. package/components/segmented/segmented.directive.d.ts +2 -1
  13. package/components/toast/toast.component.d.ts +0 -1
  14. package/components/toast/toast.directive.d.ts +1 -0
  15. package/fesm2022/taiga-ui-kit-components-accordion.mjs +7 -7
  16. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  17. package/fesm2022/taiga-ui-kit-components-action-bar.mjs +3 -3
  18. package/fesm2022/taiga-ui-kit-components-avatar.mjs +23 -23
  19. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs +4 -4
  21. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-kit-components-badge.mjs +7 -7
  23. package/fesm2022/taiga-ui-kit-components-badge.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-kit-components-badged-content.mjs +6 -6
  25. package/fesm2022/taiga-ui-kit-components-block.mjs +7 -7
  26. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +5 -5
  28. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-kit-components-button-loading.mjs +3 -3
  30. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +3 -3
  31. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +3 -3
  32. package/fesm2022/taiga-ui-kit-components-chip.mjs +7 -7
  33. package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-kit-components-combo-box.mjs +3 -3
  35. package/fesm2022/taiga-ui-kit-components-comment.mjs +7 -7
  36. package/fesm2022/taiga-ui-kit-components-comment.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-kit-components-compass.mjs +4 -4
  38. package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-kit-components-confirm.mjs +6 -6
  40. package/fesm2022/taiga-ui-kit-components-copy.mjs +11 -11
  41. package/fesm2022/taiga-ui-kit-components-copy.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-kit-components-counter.mjs +3 -3
  43. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs +6 -6
  44. package/fesm2022/taiga-ui-kit-components-drawer.mjs +3 -3
  45. package/fesm2022/taiga-ui-kit-components-files.mjs +25 -25
  46. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  47. package/fesm2022/taiga-ui-kit-components-filter.mjs +3 -3
  48. package/fesm2022/taiga-ui-kit-components-fullscreen.mjs +3 -3
  49. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +6 -6
  50. package/fesm2022/taiga-ui-kit-components-input-color.mjs +58 -30
  51. package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +6 -8
  53. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +5 -5
  55. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +15 -15
  57. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-kit-components-input-date.mjs +19 -19
  59. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +4 -4
  61. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +3 -3
  63. package/fesm2022/taiga-ui-kit-components-input-month.mjs +13 -13
  64. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  65. package/fesm2022/taiga-ui-kit-components-input-number.mjs +38 -38
  66. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  67. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +98 -68
  68. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  69. package/fesm2022/taiga-ui-kit-components-input-phone.mjs +3 -3
  70. package/fesm2022/taiga-ui-kit-components-input-pin.mjs +15 -11
  71. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-components-input-range.mjs +3 -3
  73. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +7 -7
  74. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  75. package/fesm2022/taiga-ui-kit-components-input-time.mjs +18 -18
  76. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  77. package/fesm2022/taiga-ui-kit-components-input-year.mjs +5 -5
  78. package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
  79. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +12 -12
  80. package/fesm2022/taiga-ui-kit-components-like.mjs +5 -5
  81. package/fesm2022/taiga-ui-kit-components-like.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +9 -9
  83. package/fesm2022/taiga-ui-kit-components-message.mjs +7 -7
  84. package/fesm2022/taiga-ui-kit-components-message.mjs.map +1 -1
  85. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +22 -15
  86. package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
  87. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs +9 -9
  88. package/fesm2022/taiga-ui-kit-components-pager.mjs +3 -3
  89. package/fesm2022/taiga-ui-kit-components-pagination.mjs +3 -3
  90. package/fesm2022/taiga-ui-kit-components-pin.mjs +7 -7
  91. package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-kit-components-pincode.mjs +13 -7
  93. package/fesm2022/taiga-ui-kit-components-pincode.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-kit-components-preview.mjs +26 -26
  95. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-kit-components-progress.mjs +27 -27
  97. package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-kit-components-pulse.mjs +3 -3
  99. package/fesm2022/taiga-ui-kit-components-push.mjs +12 -12
  100. package/fesm2022/taiga-ui-kit-components-radio-list.mjs +4 -4
  101. package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-kit-components-range.mjs +6 -6
  103. package/fesm2022/taiga-ui-kit-components-rating.mjs +3 -3
  104. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs +3 -3
  105. package/fesm2022/taiga-ui-kit-components-segmented.mjs +13 -14
  106. package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
  107. package/fesm2022/taiga-ui-kit-components-select.mjs +9 -9
  108. package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs +7 -7
  109. package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-kit-components-status.mjs +7 -7
  111. package/fesm2022/taiga-ui-kit-components-status.mjs.map +1 -1
  112. package/fesm2022/taiga-ui-kit-components-stepper.mjs +6 -6
  113. package/fesm2022/taiga-ui-kit-components-switch.mjs +4 -4
  114. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  115. package/fesm2022/taiga-ui-kit-components-tabs.mjs +19 -19
  116. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  117. package/fesm2022/taiga-ui-kit-components-textarea.mjs +12 -12
  118. package/fesm2022/taiga-ui-kit-components-tiles.mjs +14 -14
  119. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  120. package/fesm2022/taiga-ui-kit-components-timeline.mjs +6 -6
  121. package/fesm2022/taiga-ui-kit-components-toast.mjs +24 -19
  122. package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -1
  123. package/fesm2022/taiga-ui-kit-components-tree.mjs +24 -24
  124. package/fesm2022/taiga-ui-kit-directives-appearance-proxy.mjs +3 -3
  125. package/fesm2022/taiga-ui-kit-directives-button-group.mjs +7 -7
  126. package/fesm2022/taiga-ui-kit-directives-button-group.mjs.map +1 -1
  127. package/fesm2022/taiga-ui-kit-directives-button-select.mjs +3 -3
  128. package/fesm2022/taiga-ui-kit-directives-chevron.mjs +7 -7
  129. package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
  130. package/fesm2022/taiga-ui-kit-directives-connected.mjs +7 -7
  131. package/fesm2022/taiga-ui-kit-directives-connected.mjs.map +1 -1
  132. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs +3 -3
  133. package/fesm2022/taiga-ui-kit-directives-fade.mjs +7 -7
  134. package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
  135. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +3 -3
  136. package/fesm2022/taiga-ui-kit-directives-highlight.mjs +3 -3
  137. package/fesm2022/taiga-ui-kit-directives-password.mjs +3 -3
  138. package/fesm2022/taiga-ui-kit-directives-present.mjs +3 -3
  139. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs +7 -7
  140. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
  141. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs +7 -7
  142. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs.map +1 -1
  143. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs +7 -7
  144. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
  145. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +7 -7
  146. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
  147. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs +3 -3
  148. package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs +3 -3
  149. package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs +3 -3
  150. package/fesm2022/taiga-ui-kit-pipes-emails.mjs +3 -3
  151. package/fesm2022/taiga-ui-kit-pipes-flag.mjs +3 -3
  152. package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs +3 -3
  153. package/fesm2022/taiga-ui-kit-pipes-initials.mjs +3 -3
  154. package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs +3 -3
  155. package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs +3 -3
  156. package/fesm2022/taiga-ui-kit-pipes-stringify.mjs +3 -3
  157. package/fesm2022/taiga-ui-kit-utils.mjs +10 -4
  158. package/fesm2022/taiga-ui-kit-utils.mjs.map +1 -1
  159. package/package.json +29 -29
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/number-mask.directive.ts","../../../projects/kit/components/input-number/quantum.directive.ts","../../../projects/kit/components/input-number/transformers/number.value-transformer.ts","../../../projects/kit/components/input-number/input-number.directive.ts","../../../projects/kit/components/input-number/step/input-number-step.service.ts","../../../projects/kit/components/input-number/step/input-number-step.component.ts","../../../projects/kit/components/input-number/step/input-number-step.template.html","../../../projects/kit/components/input-number/step/input-number-step.directive.ts","../../../projects/kit/components/input-number/transformers/bigint.value-transformer.ts","../../../projects/kit/components/input-number/input-number.ts","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {type MaskitoNumberParams} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {CHAR_MINUS} from '@taiga-ui/cdk/constants';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions extends Pick<\n Required<MaskitoNumberParams>,\n 'max' | 'min' | 'minusSign' | 'postfix' | 'prefix'\n> {\n readonly step: bigint | number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer:\n | TuiValueTransformer<bigint | null, any>\n | TuiValueTransformer<number | null, any>\n | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n minusSign: CHAR_MINUS,\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, effect, inject, input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions, maskitoTransform} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n type MaskitoNumberParams,\n maskitoStringifyNumber,\n} from '@maskito/kit';\nimport {tuiIsSafeToRound, tuiRoundWith} from '@taiga-ui/cdk/utils/math';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiInputDirective} from '@taiga-ui/core/components/input';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from './input-number.options';\n\n@Directive({hostDirectives: [MaskitoDirective]})\nexport class TuiNumberMask {\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly numberFormat = inject(TUI_NUMBER_FORMAT);\n private readonly input = inject(TuiInputDirective);\n\n public readonly prefix = input(this.options.prefix);\n public readonly postfix = input(this.options.postfix);\n\n public readonly maximumFractionDigits = computed(\n (precision = this.numberFormat().precision) =>\n Number.isNaN(precision) ? 2 : precision,\n );\n\n public readonly min = input<\n TuiInputNumberOptions['min'],\n TuiInputNumberOptions['min'] | null\n >(this.options.min, {transform: (x) => x ?? this.options.min});\n\n public readonly max = input<\n TuiInputNumberOptions['max'],\n TuiInputNumberOptions['max'] | null\n >(this.options.max, {transform: (x) => x ?? this.options.max});\n\n public readonly params = computed(() => {\n const {decimalMode, ...numberFormat} = this.numberFormat();\n const maximumFractionDigits = this.maximumFractionDigits();\n\n return {\n ...numberFormat,\n ...this.options,\n maximumFractionDigits,\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n minimumFractionDigits: decimalMode === 'always' ? maximumFractionDigits : 0,\n } as const satisfies MaskitoNumberParams;\n });\n\n protected readonly mask = tuiMaskito(computed(() => this.computeMask(this.params())));\n\n protected readonly maskInitialCalibration = effect(() => {\n const options = maskitoNumberOptionsGenerator({\n ...this.params(),\n min: -Infinity,\n max: Infinity,\n });\n\n this.input.value.update((x) => maskitoTransform(x, options));\n });\n\n public stringify(value: bigint | number | null | undefined): string {\n const params = this.params();\n const precision = params.maximumFractionDigits;\n const {decimalMode} = this.numberFormat();\n\n const rounded =\n typeof value === 'number' &&\n Number.isFinite(precision) &&\n tuiIsSafeToRound(value, precision)\n ? tuiRoundWith({\n value,\n precision,\n method: this.numberFormat().rounding,\n })\n : value;\n\n const zeroPadding =\n (tuiIsNumber(rounded) &&\n !Number.isInteger(rounded) &&\n decimalMode === 'pad') ||\n decimalMode === 'always';\n\n return maskitoStringifyNumber(rounded ?? null, {\n ...params,\n minimumFractionDigits: zeroPadding ? params.maximumFractionDigits : 0,\n });\n }\n\n private computeMask(params: MaskitoNumberParams): MaskitoOptions {\n const {prefix = '', postfix = '', negativePattern, minusSign} = params;\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n\n return {\n ...options,\n plugins: [\n ...plugins,\n maskitoCaretGuard((value) => [\n minusSign &&\n value.includes(minusSign) &&\n negativePattern === 'minusFirst'\n ? 0\n : prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n\n@Directive({\n hostDirectives: [\n {\n directive: TuiNumberMask,\n inputs: ['min', 'max', 'prefix', 'postfix'],\n },\n ],\n})\nexport class TuiWithNumberMask {}\n","import {Directive, input} from '@angular/core';\nimport {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiIsSafeToRound, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/core/components/slider';\nimport {tuiGetFractionPartPadded} from '@taiga-ui/core/utils/format';\nimport {identity} from 'rxjs';\n\n@Directive()\nexport class TuiQuantumValueTransformerBase extends TuiValueTransformer<\n number | null,\n number | null\n> {\n public override fromControlValue = identity;\n\n // eslint-disable-next-line @typescript-eslint/parameter-properties,@angular-eslint/prefer-inject\n constructor(public quantum = 0) {\n super();\n }\n\n public toControlValue(value: number | null): number | null {\n return value != null &&\n this.quantum > 0 &&\n tuiIsSafeToRound(value, tuiGetFractionPartPadded(this.quantum).length)\n ? tuiRound(\n Math.round(value / this.quantum) * this.quantum,\n TUI_FLOATING_PRECISION,\n )\n : value;\n }\n}\n\n@Directive({\n selector: '[tuiInputNumber][quantum]:not([bigint])',\n inputs: ['quantum'],\n})\nexport class TuiQuantumValueTransformer extends TuiQuantumValueTransformerBase {\n constructor() {\n super(0);\n }\n}\n\n@Directive({selector: '[tuiInputNumber][bigint][quantum]'})\nexport class TuiBigIntQuantumValueTransformer extends TuiValueTransformer<\n bigint | null,\n bigint | null\n> {\n public readonly quantum = input(BigInt(0));\n public override fromControlValue = identity;\n\n public toControlValue(value: bigint | null): bigint | null {\n if (!this.quantum() || !value) {\n return value;\n }\n\n const floor = (value / this.quantum()) * this.quantum();\n const remainder = value % this.quantum();\n\n return (\n floor + (BigInt(2) * remainder >= this.quantum() ? this.quantum() : BigInt(0))\n );\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({providers: [tuiProvide(TuiValueTransformer, TuiNumberValueTransformer)]})\nexport class TuiNumberValueTransformer extends TuiValueTransformer<\n string,\n number | null\n> {\n private readonly mask = inject(TuiNumberMask);\n\n private readonly quantumTransformer: TuiValueTransformer<\n number | null,\n number | null\n > =\n inject(TuiQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<number | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n public toControlValue(textfieldValue: string | null): number | null {\n const parsed = maskitoParseNumber(textfieldValue ?? '', this.mask.params());\n\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(Number.isNaN(parsed) ? null : parsed),\n );\n }\n\n public fromControlValue(controlValue: number | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {computed, Directive, effect, inject, untracked} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\n\nimport {TuiNumberMask, TuiWithNumberMask} from './number-mask.directive';\nimport {TuiNumberValueTransformer} from './transformers/number.value-transformer';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Directive({\n selector: 'input[tuiInputNumber]',\n providers: [tuiAsControl(TuiInputNumberDirective)],\n hostDirectives: [TuiWithInput, TuiWithNumberMask, TuiNumberValueTransformer],\n host: {\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]':\n 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',\n '[disabled]': 'disabled()',\n '(blur)': 'onBlur()',\n '(focus)': 'onFocus()',\n },\n})\nexport class TuiInputNumberDirective extends TuiControl<string> {\n private readonly mask = inject(TuiNumberMask);\n private readonly input = inject(TuiInputDirective);\n private readonly isIOS = inject(WA_IS_IOS);\n\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS) {\n return this.mask.min() < 0\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 protected readonly defaultMaxLength = computed(() => {\n const {\n decimalSeparator,\n thousandSeparator,\n maximumFractionDigits,\n prefix,\n postfix,\n min,\n max,\n } = this.mask.params();\n\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return -1;\n }\n\n const decimalPart =\n !!maximumFractionDigits && this.input.value().includes(decimalSeparator);\n\n const precision = decimalPart ? Math.min(maximumFractionDigits + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n const affixes = prefix.length + postfix.length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand + affixes;\n });\n\n public readonly parsed = computed(() => this.parse(this.input.value()));\n\n protected readonly onChangeEffect = effect(() => {\n const decorations = untracked(\n ({decimalSeparator, minusSign} = this.mask.params()) =>\n new RegExp(`[^\\\\d\\\\${minusSign}\\\\${decimalSeparator}]`, 'g'),\n );\n\n const changed = !Object.is(\n this.input.value().replaceAll(decorations, ''),\n untracked(() => this.value()?.replaceAll(decorations, '')) ?? '',\n );\n\n const value = this.parsed();\n\n const valid =\n Number.isNaN(value) || (value >= this.mask.min() && value <= this.mask.max());\n\n if (changed && valid) {\n this.onChange(this.input.value());\n }\n });\n\n public override writeValue(value: any): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n\n const changed = untracked(\n () => value !== this.transformer.toControlValue(this.value()),\n );\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.input.value.set(this.value()));\n }\n }\n\n public setValue(value: bigint | number | string | null): void {\n this.input.value.set(\n typeof value === 'string' ? value : this.mask.stringify(value),\n );\n }\n\n protected onFocus(): void {\n if (!this.input.value() && !this.readOnly()) {\n this.input.value.set(`${this.mask.prefix()}${this.mask.postfix()}`);\n }\n }\n\n protected onBlur(): void {\n setTimeout(() =>\n this.setValue(this.transformer.fromControlValue(this.control.value)),\n );\n }\n\n private parse(value: string): bigint | number {\n const params = this.mask.params();\n\n const possibleTooBig =\n !Number.isFinite(this.mask.min()) || !Number.isFinite(this.mask.max());\n\n return (\n maskitoParseNumber(value, {\n ...params,\n bigint: !value.includes(params.decimalSeparator) && possibleTooBig,\n }) ?? Number.NaN\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {\n expand,\n fromEvent,\n map,\n merge,\n type Observable,\n Subject,\n switchMap,\n takeUntil,\n timer,\n} from 'rxjs';\n\nconst INITIAL_DELAY = 300;\nconst DELAY_DECREMENT = 15;\nconst MIN_DELAY = 100;\n\nfunction getDelay(index: number): number {\n return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);\n}\n\n@Injectable()\nexport class TuiInputNumberStepService<T> {\n private readonly doc = inject(DOCUMENT);\n private readonly start$ = new Subject<T>();\n\n private readonly stop$ = merge(\n fromEvent(this.doc, 'pointerup'),\n fromEvent(this.doc, 'pointerleave'),\n fromEvent(this.doc, 'pointercancel'),\n );\n\n public readonly steps$: Observable<T> = this.start$.pipe(\n switchMap((value) =>\n timer(INITIAL_DELAY).pipe(\n expand((_, index) => timer(getDelay(index))),\n map(() => value),\n takeUntil(this.stop$),\n ),\n ),\n );\n\n public next(value: T): void {\n this.start$.next(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiInputNumberStep} from './input-number-step.directive';\nimport {TuiInputNumberStepService} from './input-number-step.service';\n\n@Component({\n imports: [TuiButton],\n templateUrl: './input-number-step.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-number-step.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiInputNumberStepService],\n host: {\n 'data-tui-version': TUI_VERSION,\n '[style.border-radius]': '\"inherit\"',\n '[style.display]': '\"contents\"',\n },\n})\nexport class TuiInputNumberStepButtons {\n protected readonly mask = inject(TuiNumberMask);\n protected readonly input = inject(TuiInputNumberDirective);\n protected readonly options: TuiInputNumberOptions = inject(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly directive = inject(TuiInputNumberStep);\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly hold = inject(TuiInputNumberStepService<bigint | number>);\n\n protected readonly $ = this.hold.steps$\n .pipe(takeUntilDestroyed())\n .subscribe((value) => this.directive.onStep(value));\n}\n","@if (directive.step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"directive.onStep(directive.step())\"\n (pointerdown.prevent)=\"hold.next(directive.step())\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() <= mask.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"directive.onStep(-directive.step())\"\n (pointerdown.prevent)=\"hold.next(-directive.step())\"\n >\n -\n </button>\n </section>\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {\n tuiAsTextfieldContent,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiInputNumberStepButtons} from './input-number-step.component';\n\n@Directive({\n selector: 'input[tuiInputNumber][step]',\n providers: [tuiAsTextfieldContent(TuiInputNumberStepButtons)],\n hostDirectives: [TuiAppearanceProxy, TuiTextfieldContent],\n host: {\n 'data-tui-version': TUI_VERSION,\n '[class._with-buttons]': 'step()',\n '(keydown.arrowDown.prevent)': 'onStep(-step())',\n '(keydown.arrowUp.prevent)': 'onStep(step())',\n },\n})\nexport class TuiInputNumberStep {\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly input = inject(TuiInputNumberDirective, {self: true});\n private readonly mask = inject(TuiNumberMask, {self: true});\n\n public readonly step = input(inject(TUI_INPUT_NUMBER_OPTIONS).step);\n\n public onStep(step: bigint | number): void {\n const current = this.input.parsed() || 0;\n\n const updated = tuiSum(\n current,\n typeof current === 'bigint' ? BigInt(step) : Number(step),\n );\n\n this.input.setValue(tuiClamp(updated, this.mask.min(), this.mask.max()));\n\n setTimeout((end = Number.MAX_SAFE_INTEGER) => {\n this.el.setSelectionRange(end, end);\n });\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiBigIntQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({\n selector: '[tuiInputNumber][bigint]',\n providers: [tuiProvide(TuiValueTransformer, TuiBigIntValueTransformer)],\n})\nexport class TuiBigIntValueTransformer extends TuiValueTransformer<\n string,\n bigint | null\n> {\n private readonly quantumTransformer: TuiValueTransformer<\n bigint | null,\n bigint | null\n > =\n inject(TuiBigIntQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<bigint | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly mask = inject(TuiNumberMask);\n\n public toControlValue(textfieldValue: string | null): bigint | null {\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(\n maskitoParseNumber(textfieldValue ?? '', {\n ...this.mask.params(),\n bigint: true,\n }),\n ),\n );\n }\n\n public fromControlValue(controlValue: bigint | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputNumberDirective} from './input-number.directive';\nimport {TuiNumberMask} from './number-mask.directive';\nimport {\n TuiBigIntQuantumValueTransformer,\n TuiQuantumValueTransformer,\n} from './quantum.directive';\nimport {TuiInputNumberStep} from './step/input-number-step.directive';\nimport {TuiBigIntValueTransformer} from './transformers/bigint.value-transformer';\n\nexport const TuiInputNumber = [\n TuiInputNumberDirective,\n TuiNumberMask,\n TuiInputNumberStep,\n TuiBigIntValueTransformer,\n TuiQuantumValueTransformer,\n TuiBigIntQuantumValueTransformer,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.TuiWithNumberMask","i3.TuiNumberValueTransformer"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/number-mask.directive.ts","../../../projects/kit/components/input-number/quantum.directive.ts","../../../projects/kit/components/input-number/transformers/number.value-transformer.ts","../../../projects/kit/components/input-number/input-number.directive.ts","../../../projects/kit/components/input-number/step/input-number-step.service.ts","../../../projects/kit/components/input-number/step/input-number-step.component.ts","../../../projects/kit/components/input-number/step/input-number-step.template.html","../../../projects/kit/components/input-number/step/input-number-step.directive.ts","../../../projects/kit/components/input-number/transformers/bigint.value-transformer.ts","../../../projects/kit/components/input-number/input-number.ts","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {type MaskitoNumberParams} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {CHAR_MINUS} from '@taiga-ui/cdk/constants';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions extends Pick<\n Required<MaskitoNumberParams>,\n 'max' | 'min' | 'minusSign' | 'postfix' | 'prefix'\n> {\n readonly step: bigint | number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer:\n | TuiValueTransformer<bigint | null, any>\n | TuiValueTransformer<number | null, any>\n | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n minusSign: CHAR_MINUS,\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, effect, inject, input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions, maskitoTransform} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumber,\n type MaskitoNumberParams,\n maskitoStringifyNumber,\n} from '@maskito/kit';\nimport {tuiIsSafeToRound, tuiRoundWith} from '@taiga-ui/cdk/utils/math';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiInputDirective} from '@taiga-ui/core/components/input';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from './input-number.options';\n\n@Directive({hostDirectives: [MaskitoDirective]})\nexport class TuiNumberMask {\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly numberFormat = inject(TUI_NUMBER_FORMAT);\n private readonly input = inject(TuiInputDirective);\n\n public readonly prefix = input(this.options.prefix);\n public readonly postfix = input(this.options.postfix);\n\n public readonly maximumFractionDigits = computed(\n (precision = this.numberFormat().precision) =>\n Number.isNaN(precision) ? 2 : precision,\n );\n\n public readonly min = input<\n TuiInputNumberOptions['min'],\n TuiInputNumberOptions['min'] | null\n >(this.options.min, {transform: (x) => x ?? this.options.min});\n\n public readonly max = input<\n TuiInputNumberOptions['max'],\n TuiInputNumberOptions['max'] | null\n >(this.options.max, {transform: (x) => x ?? this.options.max});\n\n public readonly params = computed(() => {\n const {decimalMode, ...numberFormat} = this.numberFormat();\n const maximumFractionDigits = this.maximumFractionDigits();\n\n return {\n ...numberFormat,\n ...this.options,\n maximumFractionDigits,\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n minimumFractionDigits: decimalMode === 'always' ? maximumFractionDigits : 0,\n } as const satisfies MaskitoNumberParams;\n });\n\n protected readonly mask = tuiMaskito(computed(() => this.computeMask(this.params())));\n\n protected readonly maskInitialCalibration = effect(() => {\n const options = maskitoNumber({\n ...this.params(),\n min: -Infinity,\n max: Infinity,\n });\n\n this.input.value.update((x) => maskitoTransform(x, options));\n });\n\n public stringify(value: bigint | number | null | undefined): string {\n const params = this.params();\n const precision = params.maximumFractionDigits;\n const {decimalMode} = this.numberFormat();\n\n const rounded =\n typeof value === 'number' &&\n Number.isFinite(precision) &&\n tuiIsSafeToRound(value, precision)\n ? tuiRoundWith({\n value,\n precision,\n method: this.numberFormat().rounding,\n })\n : value;\n\n const zeroPadding =\n (tuiIsNumber(rounded) &&\n !Number.isInteger(rounded) &&\n decimalMode === 'pad') ||\n decimalMode === 'always';\n\n return maskitoStringifyNumber(rounded ?? null, {\n ...params,\n minimumFractionDigits: zeroPadding ? params.maximumFractionDigits : 0,\n });\n }\n\n private computeMask(params: MaskitoNumberParams): MaskitoOptions {\n const {prefix = '', postfix = '', negativePattern, minusSign} = params;\n const {plugins, ...options} = maskitoNumber(params);\n\n return {\n ...options,\n plugins: [\n ...plugins,\n maskitoCaretGuard((value) => [\n minusSign &&\n value.includes(minusSign) &&\n negativePattern === 'minusFirst'\n ? 0\n : prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n\n@Directive({\n hostDirectives: [\n {\n directive: TuiNumberMask,\n inputs: ['min', 'max', 'prefix', 'postfix'],\n },\n ],\n})\nexport class TuiWithNumberMask {}\n","import {Directive, input} from '@angular/core';\nimport {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiIsSafeToRound, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/core/components/slider';\nimport {tuiGetFractionPartPadded} from '@taiga-ui/core/utils/format';\nimport {identity} from 'rxjs';\n\n@Directive()\nexport class TuiQuantumValueTransformerBase extends TuiValueTransformer<\n number | null,\n number | null\n> {\n public override fromControlValue = identity;\n\n // eslint-disable-next-line @typescript-eslint/parameter-properties,@angular-eslint/prefer-inject\n constructor(public quantum = 0) {\n super();\n }\n\n public toControlValue(value: number | null): number | null {\n return value != null &&\n this.quantum > 0 &&\n tuiIsSafeToRound(value, tuiGetFractionPartPadded(this.quantum).length)\n ? tuiRound(\n Math.round(value / this.quantum) * this.quantum,\n TUI_FLOATING_PRECISION,\n )\n : value;\n }\n}\n\n@Directive({\n selector: '[tuiInputNumber][quantum]:not([bigint])',\n inputs: ['quantum'],\n})\nexport class TuiQuantumValueTransformer extends TuiQuantumValueTransformerBase {\n constructor() {\n super(0);\n }\n}\n\n@Directive({selector: '[tuiInputNumber][bigint][quantum]'})\nexport class TuiBigIntQuantumValueTransformer extends TuiValueTransformer<\n bigint | null,\n bigint | null\n> {\n public readonly quantum = input(BigInt(0));\n public override fromControlValue = identity;\n\n public toControlValue(value: bigint | null): bigint | null {\n if (!this.quantum() || !value) {\n return value;\n }\n\n const floor = (value / this.quantum()) * this.quantum();\n const remainder = value % this.quantum();\n\n return (\n floor + (BigInt(2) * remainder >= this.quantum() ? this.quantum() : BigInt(0))\n );\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({providers: [tuiProvide(TuiValueTransformer, TuiNumberValueTransformer)]})\nexport class TuiNumberValueTransformer extends TuiValueTransformer<\n string,\n number | null\n> {\n private readonly mask = inject(TuiNumberMask);\n\n private readonly quantumTransformer: TuiValueTransformer<\n number | null,\n number | null\n > =\n inject(TuiQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<number | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n public toControlValue(textfieldValue: string | null): number | null {\n const parsed = maskitoParseNumber(textfieldValue ?? '', this.mask.params());\n\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(Number.isNaN(parsed) ? null : parsed),\n );\n }\n\n public fromControlValue(controlValue: number | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {computed, Directive, effect, inject, untracked} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\n\nimport {TuiNumberMask, TuiWithNumberMask} from './number-mask.directive';\nimport {TuiNumberValueTransformer} from './transformers/number.value-transformer';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Directive({\n selector: 'input[tuiInputNumber]',\n providers: [tuiAsControl(TuiInputNumberDirective)],\n hostDirectives: [TuiWithInput, TuiWithNumberMask, TuiNumberValueTransformer],\n host: {\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]':\n 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',\n '[disabled]': 'disabled()',\n '(blur)': 'onBlur()',\n '(focus)': 'onFocus()',\n },\n})\nexport class TuiInputNumberDirective extends TuiControl<string> {\n private readonly mask = inject(TuiNumberMask);\n private readonly input = inject(TuiInputDirective);\n private readonly isIOS = inject(WA_IS_IOS);\n\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS) {\n return this.mask.min() < 0\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 protected readonly defaultMaxLength = computed(() => {\n const {\n decimalSeparator,\n thousandSeparator,\n maximumFractionDigits,\n prefix,\n postfix,\n min,\n max,\n } = this.mask.params();\n\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return -1;\n }\n\n const decimalPart =\n !!maximumFractionDigits && this.input.value().includes(decimalSeparator);\n\n const precision = decimalPart ? Math.min(maximumFractionDigits + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n const affixes = prefix.length + postfix.length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand + affixes;\n });\n\n public readonly parsed = computed(() => this.parse(this.input.value()));\n\n protected readonly onChangeEffect = effect(() => {\n const decorations = untracked(\n ({decimalSeparator, minusSign} = this.mask.params()) =>\n new RegExp(`[^\\\\d\\\\${minusSign}\\\\${decimalSeparator}]`, 'g'),\n );\n\n const changed = !Object.is(\n this.input.value().replaceAll(decorations, ''),\n untracked(() => this.value()?.replaceAll(decorations, '')) ?? '',\n );\n\n const value = this.parsed();\n\n const valid =\n Number.isNaN(value) || (value >= this.mask.min() && value <= this.mask.max());\n\n if (changed && valid) {\n this.onChange(this.input.value());\n }\n });\n\n public override writeValue(value: any): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n\n const changed = untracked(\n () => value !== this.transformer.toControlValue(this.value()),\n );\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.input.value.set(this.value()));\n }\n }\n\n public setValue(value: bigint | number | string | null): void {\n this.input.value.set(\n typeof value === 'string' ? value : this.mask.stringify(value),\n );\n }\n\n protected onFocus(): void {\n if (!this.input.value() && !this.readOnly()) {\n this.input.value.set(`${this.mask.prefix()}${this.mask.postfix()}`);\n }\n }\n\n protected onBlur(): void {\n setTimeout(() =>\n this.setValue(this.transformer.fromControlValue(this.control.value)),\n );\n }\n\n private parse(value: string): bigint | number {\n const params = this.mask.params();\n\n const possibleTooBig =\n !Number.isFinite(this.mask.min()) || !Number.isFinite(this.mask.max());\n\n return (\n maskitoParseNumber(value, {\n ...params,\n bigint: !value.includes(params.decimalSeparator) && possibleTooBig,\n }) ?? Number.NaN\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {\n expand,\n fromEvent,\n map,\n merge,\n type Observable,\n Subject,\n switchMap,\n takeUntil,\n timer,\n} from 'rxjs';\n\nconst INITIAL_DELAY = 300;\nconst DELAY_DECREMENT = 15;\nconst MIN_DELAY = 100;\n\nfunction getDelay(index: number): number {\n return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);\n}\n\n@Injectable()\nexport class TuiInputNumberStepService<T> {\n private readonly doc = inject(DOCUMENT);\n private readonly start$ = new Subject<T>();\n\n private readonly stop$ = merge(\n fromEvent(this.doc, 'pointerup'),\n fromEvent(this.doc, 'pointerleave'),\n fromEvent(this.doc, 'pointercancel'),\n );\n\n public readonly steps$: Observable<T> = this.start$.pipe(\n switchMap((value) =>\n timer(INITIAL_DELAY).pipe(\n expand((_, index) => timer(getDelay(index))),\n map(() => value),\n takeUntil(this.stop$),\n ),\n ),\n );\n\n public next(value: T): void {\n this.start$.next(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiInputNumberStep} from './input-number-step.directive';\nimport {TuiInputNumberStepService} from './input-number-step.service';\n\n@Component({\n imports: [TuiButton],\n templateUrl: './input-number-step.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-number-step.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiInputNumberStepService],\n host: {\n 'data-tui-version': TUI_VERSION,\n '[style.border-radius]': '\"inherit\"',\n '[style.display]': '\"contents\"',\n },\n})\nexport class TuiInputNumberStepButtons {\n protected readonly mask = inject(TuiNumberMask);\n protected readonly input = inject(TuiInputNumberDirective);\n protected readonly options: TuiInputNumberOptions = inject(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly directive = inject(TuiInputNumberStep);\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly hold = inject(TuiInputNumberStepService<bigint | number>);\n\n protected readonly $ = this.hold.steps$\n .pipe(takeUntilDestroyed())\n .subscribe((value) => this.directive.onStep(value));\n}\n","@if (directive.step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"directive.onStep(directive.step())\"\n (pointerdown.prevent)=\"hold.next(directive.step())\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() <= mask.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"directive.onStep(-directive.step())\"\n (pointerdown.prevent)=\"hold.next(-directive.step())\"\n >\n -\n </button>\n </section>\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {\n tuiAsTextfieldContent,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiInputNumberStepButtons} from './input-number-step.component';\n\n@Directive({\n selector: 'input[tuiInputNumber][step]',\n providers: [tuiAsTextfieldContent(() => TuiInputNumberStepButtons)],\n hostDirectives: [TuiAppearanceProxy, TuiTextfieldContent],\n host: {\n 'data-tui-version': TUI_VERSION,\n '[class._with-buttons]': 'step()',\n '(keydown.arrowDown.prevent)': 'onStep(-step())',\n '(keydown.arrowUp.prevent)': 'onStep(step())',\n },\n})\nexport class TuiInputNumberStep {\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly input = inject(TuiInputNumberDirective, {self: true});\n private readonly mask = inject(TuiNumberMask, {self: true});\n\n public readonly step = input(inject(TUI_INPUT_NUMBER_OPTIONS).step);\n\n public onStep(step: bigint | number): void {\n const current = this.input.parsed() || 0;\n\n const updated = tuiSum(\n current,\n typeof current === 'bigint' ? BigInt(step) : Number(step),\n );\n\n this.input.setValue(tuiClamp(updated, this.mask.min(), this.mask.max()));\n\n setTimeout((end = Number.MAX_SAFE_INTEGER) => {\n this.el.setSelectionRange(end, end);\n });\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiBigIntQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({\n selector: '[tuiInputNumber][bigint]',\n providers: [tuiProvide(TuiValueTransformer, TuiBigIntValueTransformer)],\n})\nexport class TuiBigIntValueTransformer extends TuiValueTransformer<\n string,\n bigint | null\n> {\n private readonly quantumTransformer: TuiValueTransformer<\n bigint | null,\n bigint | null\n > =\n inject(TuiBigIntQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<bigint | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly mask = inject(TuiNumberMask);\n\n public toControlValue(textfieldValue: string | null): bigint | null {\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(\n maskitoParseNumber(textfieldValue ?? '', {\n ...this.mask.params(),\n bigint: true,\n }),\n ),\n );\n }\n\n public fromControlValue(controlValue: bigint | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputNumberDirective} from './input-number.directive';\nimport {TuiNumberMask} from './number-mask.directive';\nimport {\n TuiBigIntQuantumValueTransformer,\n TuiQuantumValueTransformer,\n} from './quantum.directive';\nimport {TuiInputNumberStep} from './step/input-number-step.directive';\nimport {TuiBigIntValueTransformer} from './transformers/bigint.value-transformer';\n\nexport const TuiInputNumber = [\n TuiInputNumberDirective,\n TuiNumberMask,\n TuiInputNumberStep,\n TuiBigIntValueTransformer,\n TuiQuantumValueTransformer,\n TuiBigIntQuantumValueTransformer,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.TuiWithNumberMask","i3.TuiNumberValueTransformer"],"mappings":"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"}
@@ -1,41 +1,40 @@
1
1
  import { TuiLabel } from '@taiga-ui/core/components/label';
2
- import * as i6 from '@taiga-ui/core/components/textfield';
3
- import { TUI_TEXTFIELD_OPTIONS, TuiTextfieldContent, TuiTextfieldComponent, TuiTextfieldOptionsDirective } from '@taiga-ui/core/components/textfield';
4
- import * as i7 from '@taiga-ui/core/portals/dropdown';
5
- import { TuiDropdownOpen, tuiDropdownEnabled, TuiDropdownContent } from '@taiga-ui/core/portals/dropdown';
6
- import { NgTemplateOutlet } from '@angular/common';
2
+ import * as i3 from '@taiga-ui/core/components/textfield';
3
+ import { TUI_TEXTFIELD_OPTIONS, TuiTextfield, tuiAsTextfieldContent, TuiTextfieldContent, TuiTextfieldComponent, TuiTextfieldOptionsDirective } from '@taiga-ui/core/components/textfield';
4
+ import { TuiDropdownContent, tuiDropdownEnabled, TuiDropdownOpen } from '@taiga-ui/core/portals/dropdown';
7
5
  import * as i0 from '@angular/core';
8
- import { viewChildren, ElementRef, inject, effect, signal, computed, input, model, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
9
- import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
- import * as i4 from '@angular/forms';
11
- import { FormsModule } from '@angular/forms';
12
- import * as i1 from '@maskito/angular';
6
+ import { inject, viewChildren, ElementRef, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, effect, signal, input, model, Directive } from '@angular/core';
7
+ import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
8
+ import * as i1$1 from '@maskito/angular';
13
9
  import { MaskitoDirective } from '@maskito/angular';
14
10
  import { maskitoTransform, MASKITO_DEFAULT_OPTIONS, maskitoInitialCalibrationPlugin } from '@maskito/core';
15
11
  import { maskitoPhoneOptionsGenerator, maskitoGetCountryFromNumber } from '@maskito/phone';
16
12
  import { WA_IS_IOS } from '@ng-web-apis/platform';
17
13
  import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
18
- import { TUI_DEFAULT_MATCHER, CHAR_PLUS } from '@taiga-ui/cdk/constants';
14
+ import { TUI_DEFAULT_MATCHER, TUI_VERSION, CHAR_PLUS } from '@taiga-ui/cdk/constants';
19
15
  import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
20
16
  import { TuiAutoFocus, tuiAutoFocusOptionsProvider } from '@taiga-ui/cdk/directives/auto-focus';
21
17
  import { tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
22
18
  import { tuiInjectElement, tuiValue, tuiIsInputEvent } from '@taiga-ui/cdk/utils/dom';
19
+ import * as i4 from '@taiga-ui/core/components/input';
20
+ import { TuiInput, TuiWithInput } from '@taiga-ui/core/components/input';
21
+ import * as i3$1 from '@taiga-ui/kit/directives/appearance-proxy';
22
+ import { TuiAppearanceProxy } from '@taiga-ui/kit/directives/appearance-proxy';
23
+ import { tuiMaskito } from '@taiga-ui/kit/utils';
24
+ import { validatePhoneNumberLength, getCountryCallingCode } from 'libphonenumber-js/core';
25
+ import { of, filter, from } from 'rxjs';
26
+ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
27
+ import { NgTemplateOutlet } from '@angular/common';
28
+ import * as i1 from '@angular/forms';
29
+ import { FormsModule } from '@angular/forms';
23
30
  import { TuiButton } from '@taiga-ui/core/components/button';
24
- import * as i5 from '@taiga-ui/core/components/data-list';
31
+ import * as i2 from '@taiga-ui/core/components/data-list';
25
32
  import { TuiOption, TuiDataList } from '@taiga-ui/core/components/data-list';
26
- import * as i2 from '@taiga-ui/core/components/input';
27
- import { TuiWithInput, TuiInput } from '@taiga-ui/core/components/input';
28
33
  import { TuiTitle } from '@taiga-ui/core/components/title';
29
34
  import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
30
- import * as i3 from '@taiga-ui/kit/directives/appearance-proxy';
31
- import { TuiAppearanceProxy } from '@taiga-ui/kit/directives/appearance-proxy';
32
35
  import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
33
36
  import { TuiFlagPipe } from '@taiga-ui/kit/pipes/flag';
34
37
  import { TUI_INTERNATIONAL_SEARCH, TUI_COUNTRIES } from '@taiga-ui/kit/tokens';
35
- import { tuiMaskito } from '@taiga-ui/kit/utils';
36
- import { validatePhoneNumberLength, getCountryCallingCode } from 'libphonenumber-js/core';
37
- import { of, from, filter } from 'rxjs';
38
- import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
39
38
 
40
39
  const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS = {
41
40
  countries: [],
@@ -54,42 +53,80 @@ const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS = {
54
53
  */
55
54
  const [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS, tuiInputPhoneInternationalOptionsProvider,] = tuiCreateOptions(TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS);
56
55
 
57
- const NOT_FORM_CONTROL_SYMBOLS = /[^+\d]/g;
58
- class TuiInputPhoneInternationalComponent extends TuiControl {
56
+ class TuiInputPhoneInternationalContent {
59
57
  constructor() {
60
- super(...arguments);
58
+ this.host = inject(TuiInputPhoneInternationalComponent);
61
59
  this.list = viewChildren(TuiOption, { read: ElementRef });
62
- this.el = tuiInjectElement();
63
60
  this.ios = inject(WA_IS_IOS);
64
61
  this.icons = inject(TUI_COMMON_ICONS);
65
- this.options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);
66
62
  this.label = inject(TUI_INTERNATIONAL_SEARCH);
67
- this.metadata = toSignal(from(this.options.metadata));
68
63
  this.names = inject(TUI_COUNTRIES);
69
- this.open = inject(TuiDropdownOpen).open;
70
- this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
71
- this.change = effect(() => this.onChange(this.unmask(this.masked())));
72
- this.search = signal('');
73
64
  this.size = inject(TUI_TEXTFIELD_OPTIONS).size;
65
+ this.filtered = computed(() => {
66
+ const metadata = this.host.metadata();
67
+ return this.host
68
+ .countries()
69
+ .map((iso) => ({
70
+ iso,
71
+ name: this.names()[iso] || '',
72
+ code: tuiGetCallingCode(iso, metadata),
73
+ }))
74
+ .filter(({ name, code }) => TUI_DEFAULT_MATCHER(`${name}${code}`, this.host.search()));
75
+ });
76
+ }
77
+ onItemClick(code) {
78
+ this.host.el.focus();
79
+ this.host.open.set(false);
80
+ this.host.countryIsoCode.set(code);
81
+ this.host.search.set('');
82
+ this.host.masked.set(maskitoTransform(this.host.value() || tuiGetCallingCode(code, this.host.metadata()), this.host.mask() || MASKITO_DEFAULT_OPTIONS));
83
+ }
84
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.24", ngImport: i0, type: TuiInputPhoneInternationalContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.24", type: TuiInputPhoneInternationalContent, isStandalone: true, selector: "tui-input-phone-international-content", host: { attributes: { "data-tui-version": "5.11.0-canary.0f9eee3" } }, viewQueries: [{ propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i2.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i3.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiInputDirective, selector: "input[tuiInput]", inputs: ["readOnly", "invalid", "focused", "state"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.24", ngImport: i0, type: TuiInputPhoneInternationalContent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'tui-input-phone-international-content', imports: [
90
+ FormsModule,
91
+ NgTemplateOutlet,
92
+ TuiAutoFocus,
93
+ TuiButton,
94
+ TuiChevron,
95
+ TuiDataList,
96
+ TuiDropdownContent,
97
+ TuiFlagPipe,
98
+ TuiInput,
99
+ TuiOption,
100
+ TuiTextfield,
101
+ TuiTitle,
102
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'data-tui-version': TUI_VERSION }, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.11.0-canary.0f9eee3\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.11.0-canary.0f9eee3\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.11.0-canary.0f9eee3\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"] }]
103
+ }] });
104
+
105
+ const NOT_FORM_CONTROL_SYMBOLS = /[^+\d]/g;
106
+ // TODO(v6): rename to TuiInputPhoneInternationalDirective
107
+ class TuiInputPhoneInternationalComponent extends TuiControl {
108
+ constructor() {
109
+ super(...arguments);
110
+ this.options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);
111
+ this.el = tuiInjectElement();
112
+ this.ios = inject(WA_IS_IOS);
113
+ this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
74
114
  this.masked = tuiValue(this.el);
75
115
  this.mask = tuiMaskito(computed(() => this.computeMask(this.countryIsoCode(), this.metadata())));
76
- this.filtered = computed(() => this.countries()
77
- .map((iso) => ({
78
- iso,
79
- name: this.names()?.[iso] || '',
80
- code: getCallingCode(iso, this.metadata()),
81
- }))
82
- .filter(({ name, code }) => TUI_DEFAULT_MATCHER(`${name}${code}`, this.search())));
116
+ this.change = effect(() => this.onChange(this.unmask(this.masked())));
83
117
  this.$ = inject(TuiActiveZone)
84
118
  .tuiActiveZoneChange.pipe(filter(() => !this.readOnly()), takeUntilDestroyed())
85
119
  .subscribe((active) => {
86
- const prefix = `${getCallingCode(this.countryIsoCode(), this.metadata())} `;
120
+ const prefix = `${tuiGetCallingCode(this.countryIsoCode(), this.metadata())} `;
87
121
  this.search.set('');
88
122
  this.masked.update((value) => {
89
123
  const fallback = active ? value || prefix : value;
90
124
  return value === prefix ? '' : fallback;
91
125
  });
92
126
  });
127
+ this.metadata = toSignal(from(this.options.metadata));
128
+ this.open = inject(TuiDropdownOpen).open;
129
+ this.search = signal('');
93
130
  this.countrySearch = input(this.options.countrySearch);
94
131
  this.countryIsoCode = model(this.options.countryIsoCode);
95
132
  this.countries = input(this.options.countries);
@@ -113,13 +150,6 @@ class TuiInputPhoneInternationalComponent extends TuiControl {
113
150
  this.countryIsoCode.set(code);
114
151
  }
115
152
  }
116
- onItemClick(code) {
117
- this.el.focus();
118
- this.open.set(false);
119
- this.countryIsoCode.set(code);
120
- this.search.set('');
121
- this.masked.set(maskitoTransform(this.value() || getCallingCode(code, this.metadata()), this.mask() || MASKITO_DEFAULT_OPTIONS));
122
- }
123
153
  computeMask(countryIsoCode, metadata) {
124
154
  if (!metadata) {
125
155
  return MASKITO_DEFAULT_OPTIONS;
@@ -136,7 +166,7 @@ class TuiInputPhoneInternationalComponent extends TuiControl {
136
166
  }
137
167
  unmask(maskedValue) {
138
168
  const value = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');
139
- const code = getCallingCode(this.countryIsoCode(), this.metadata());
169
+ const code = tuiGetCallingCode(this.countryIsoCode(), this.metadata());
140
170
  return value === code ? '' : value;
141
171
  }
142
172
  getCountryCode(value) {
@@ -146,41 +176,41 @@ class TuiInputPhoneInternationalComponent extends TuiControl {
146
176
  ? (maskitoGetCountryFromNumber(phone, metadata) ?? null)
147
177
  : null;
148
178
  }
149
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TuiInputPhoneInternationalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
150
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: TuiInputPhoneInternationalComponent, isStandalone: true, selector: "input[tuiInputPhoneInternational]", inputs: { countrySearch: { classPropertyName: "countrySearch", publicName: "countrySearch", isSignal: true, isRequired: false, transformFunction: null }, countryIsoCode: { classPropertyName: "countryIsoCode", publicName: "countryIsoCode", isSignal: true, isRequired: false, transformFunction: null }, countries: { classPropertyName: "countries", publicName: "countries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { countryIsoCode: "countryIsoCodeChange" }, host: { attributes: { "ngSkipHydration": "true", "type": "tel" }, listeners: { "beforeinput.capture": "onPaste($event)", "click": "open.set(false)", "input": "masked.set($event.target.value)" }, properties: { "attr.inputmode": "!ios && open() ? \"none\" : null", "disabled": "disabled()" } }, providers: [
179
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.24", ngImport: i0, type: TuiInputPhoneInternationalComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
180
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.24", type: TuiInputPhoneInternationalComponent, isStandalone: true, selector: "input[tuiInputPhoneInternational]", inputs: { countrySearch: { classPropertyName: "countrySearch", publicName: "countrySearch", isSignal: true, isRequired: false, transformFunction: null }, countryIsoCode: { classPropertyName: "countryIsoCode", publicName: "countryIsoCode", isSignal: true, isRequired: false, transformFunction: null }, countries: { classPropertyName: "countries", publicName: "countries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { countryIsoCode: "countryIsoCodeChange" }, host: { attributes: { "type": "tel" }, listeners: { "beforeinput.capture": "onPaste($event)", "click": "open.set(false)", "input": "masked.set($event.target.value)" }, properties: { "attr.inputmode": "!ios && open() ? \"none\" : null", "disabled": "disabled()" } }, providers: [
151
181
  tuiAsControl(TuiInputPhoneInternationalComponent),
152
182
  tuiFallbackValueProvider(''),
153
183
  tuiAutoFocusOptionsProvider({ preventScroll: true }),
154
- ], viewQueries: [{ propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithInput }, { directive: i3.TuiAppearanceProxy }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (click.prevent)=\"interactive() && open.set(!open())\"\n (pointerdown.stop)=\"(0)\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n <!-- To keep it under local injector -->\n @if (countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track $index) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.10.0\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.10.0\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.10.0\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.10.0\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.10.0\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.10.0\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.10.0\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.10.0\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.10.0\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.10.0\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.10.0\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.10.0\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i5.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i6.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i6.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i7.TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "directive", type: i2.TuiInputDirective, selector: "input[tuiInput]", inputs: ["readOnly", "invalid", "focused", "state"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
184
+ tuiAsTextfieldContent(() => TuiInputPhoneInternationalContent),
185
+ ], usesInheritance: true, hostDirectives: [{ directive: i1$1.MaskitoDirective }, { directive: i4.TuiWithInput }, { directive: i3$1.TuiAppearanceProxy }, { directive: i3.TuiTextfieldContent }], ngImport: i0 }); }
155
186
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TuiInputPhoneInternationalComponent, decorators: [{
157
- type: Component,
158
- args: [{ selector: 'input[tuiInputPhoneInternational]', imports: [
159
- FormsModule,
160
- NgTemplateOutlet,
161
- TuiAutoFocus,
162
- TuiButton,
163
- TuiChevron,
164
- TuiDataList,
165
- TuiFlagPipe,
166
- TuiInput,
167
- TuiTextfieldContent,
168
- TuiTitle,
169
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.24", ngImport: i0, type: TuiInputPhoneInternationalComponent, decorators: [{
188
+ type: Directive,
189
+ args: [{
190
+ selector: 'input[tuiInputPhoneInternational]',
191
+ providers: [
170
192
  tuiAsControl(TuiInputPhoneInternationalComponent),
171
193
  tuiFallbackValueProvider(''),
172
194
  tuiAutoFocusOptionsProvider({ preventScroll: true }),
173
- ], hostDirectives: [MaskitoDirective, TuiWithInput, TuiAppearanceProxy], host: {
174
- ngSkipHydration: 'true',
195
+ tuiAsTextfieldContent(() => TuiInputPhoneInternationalContent),
196
+ ],
197
+ hostDirectives: [
198
+ MaskitoDirective,
199
+ TuiWithInput,
200
+ TuiAppearanceProxy,
201
+ TuiTextfieldContent,
202
+ ],
203
+ host: {
175
204
  type: 'tel',
176
205
  '[attr.inputmode]': '!ios && open() ? "none" : null',
177
206
  '[disabled]': 'disabled()',
178
207
  '(beforeinput.capture)': 'onPaste($event)',
179
208
  '(click)': 'open.set(false)',
180
209
  '(input)': 'masked.set($event.target.value)',
181
- }, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (click.prevent)=\"interactive() && open.set(!open())\"\n (pointerdown.stop)=\"(0)\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n <!-- To keep it under local injector -->\n @if (countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track $index) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.10.0\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.10.0\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.10.0\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.10.0\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.10.0\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.10.0\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.10.0\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.10.0\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.10.0\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.10.0\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.10.0\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.10.0\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.10.0\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.10.0\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.10.0\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.10.0\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"] }]
210
+ },
211
+ }]
182
212
  }] });
183
- function getCallingCode(iso, metadata) {
213
+ function tuiGetCallingCode(iso, metadata) {
184
214
  return metadata ? CHAR_PLUS + getCountryCallingCode(iso, metadata) : '';
185
215
  }
186
216
 
@@ -196,5 +226,5 @@ const TuiInputPhoneInternational = [
196
226
  * Generated bundle index. Do not edit.
197
227
  */
198
228
 
199
- export { TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS, TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS, TuiInputPhoneInternational, TuiInputPhoneInternationalComponent, tuiInputPhoneInternationalOptionsProvider };
229
+ export { TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS, TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS, TuiInputPhoneInternational, TuiInputPhoneInternationalComponent, tuiGetCallingCode, tuiInputPhoneInternationalOptionsProvider };
200
230
  //# sourceMappingURL=taiga-ui-kit-components-input-phone-international.mjs.map