@taiga-ui/kit 4.52.0-canary.6c67ccf → 4.52.0-canary.6de148b

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 (446) hide show
  1. package/README.md +1 -1
  2. package/components/accordion/accordion.component.d.ts +13 -0
  3. package/components/accordion/accordion.d.ts +4 -4
  4. package/components/accordion/accordion.directive.d.ts +11 -10
  5. package/components/accordion/index.d.ts +1 -3
  6. package/components/action-bar/action-bar.component.d.ts +5 -7
  7. package/components/action-bar/index.d.ts +0 -2
  8. package/components/avatar/avatar-outline.directive.d.ts +3 -3
  9. package/components/avatar/avatar.directive.d.ts +15 -0
  10. package/components/avatar/avatar.options.d.ts +1 -4
  11. package/components/avatar/index.d.ts +1 -1
  12. package/components/badge/badge.directive.d.ts +2 -2
  13. package/components/badge/badge.options.d.ts +1 -3
  14. package/components/badge-notification/badge-notification.options.d.ts +1 -3
  15. package/components/block/block.directive.d.ts +4 -4
  16. package/components/block/block.options.d.ts +2 -4
  17. package/components/breadcrumbs/breadcrumbs.options.d.ts +1 -3
  18. package/components/calendar-month/calendar-month.component.d.ts +1 -1
  19. package/components/calendar-month/calendar-month.options.d.ts +1 -1
  20. package/components/calendar-range/calendar-range.component.d.ts +1 -2
  21. package/components/checkbox/checkbox.component.d.ts +7 -18
  22. package/components/checkbox/checkbox.options.d.ts +5 -9
  23. package/components/chip/chip.directive.d.ts +2 -4
  24. package/components/chip/chip.options.d.ts +1 -3
  25. package/components/combo-box/combo-box.d.ts +2 -0
  26. package/components/combo-box/combo-box.directive.d.ts +5 -5
  27. package/components/combo-box/index.d.ts +1 -0
  28. package/components/comment/comment.directive.d.ts +2 -2
  29. package/components/confirm/confirm.component.d.ts +5 -3
  30. package/components/confirm/confirm.service.d.ts +3 -2
  31. package/{directives → components}/copy/copy.component.d.ts +2 -2
  32. package/{directives → components}/copy/copy.directive.d.ts +4 -6
  33. package/{directives → components}/copy/copy.options.d.ts +2 -2
  34. package/components/data-list-wrapper/data-list-group-wrapper.component.d.ts +4 -2
  35. package/components/data-list-wrapper/data-list-wrapper.component.d.ts +14 -22
  36. package/components/data-list-wrapper/{data-list-wrapper.module.d.ts → data-list-wrapper.d.ts} +1 -2
  37. package/components/data-list-wrapper/index.d.ts +1 -1
  38. package/components/files/file/file.options.d.ts +2 -2
  39. package/components/files/files/files.component.d.ts +2 -2
  40. package/components/files/input-files/input-files.options.d.ts +1 -3
  41. package/components/floating-container/floating-container.directive.d.ts +2 -2
  42. package/components/fullscreen/fullscreen.component.d.ts +14 -0
  43. package/components/fullscreen/index.d.ts +1 -0
  44. package/components/index.d.ts +3 -2
  45. package/components/input-chip/input-chip.component.d.ts +9 -8
  46. package/components/input-chip/input-chip.d.ts +1 -1
  47. package/components/input-chip/input-chip.directive.d.ts +7 -12
  48. package/components/input-chip/input-chip.options.d.ts +1 -1
  49. package/components/input-color/index.d.ts +1 -0
  50. package/components/input-color/input-color.component.d.ts +6 -6
  51. package/components/input-color/input-color.d.ts +2 -0
  52. package/components/input-color/input-color.options.d.ts +1 -1
  53. package/components/input-date/input-date.d.ts +1 -1
  54. package/components/input-date/input-date.directive.d.ts +9 -11
  55. package/components/input-date/input-date.options.d.ts +1 -1
  56. package/components/input-date-multi/input-date-multi.d.ts +1 -2
  57. package/components/input-date-multi/input-date-multi.directive.d.ts +9 -13
  58. package/components/input-date-range/input-date-range.d.ts +1 -1
  59. package/components/input-date-range/input-date-range.directive.d.ts +3 -3
  60. package/components/input-date-time/input-date-time.d.ts +1 -1
  61. package/components/input-date-time/input-date-time.directive.d.ts +3 -3
  62. package/components/input-month/input-month.d.ts +1 -1
  63. package/components/input-month/input-month.directive.d.ts +5 -4
  64. package/components/input-month-range/input-month-range.d.ts +1 -1
  65. package/components/input-month-range/input-month-range.directive.d.ts +5 -4
  66. package/components/input-number/input-number.d.ts +1 -1
  67. package/components/input-number/input-number.directive.d.ts +7 -11
  68. package/components/input-number/input-number.options.d.ts +1 -1
  69. package/components/input-number/quantum.directive.d.ts +1 -1
  70. package/components/input-number/step/input-number-step.component.d.ts +1 -1
  71. package/components/input-phone/index.d.ts +1 -0
  72. package/components/input-phone/input-phone.d.ts +2 -0
  73. package/components/input-phone/input-phone.directive.d.ts +7 -7
  74. package/components/input-phone/input-phone.options.d.ts +1 -1
  75. package/components/input-phone-international/index.d.ts +1 -0
  76. package/components/input-phone-international/input-phone-international.component.d.ts +22 -33
  77. package/components/input-phone-international/input-phone-international.d.ts +2 -0
  78. package/components/input-phone-international/input-phone-international.options.d.ts +1 -3
  79. package/components/input-pin/index.d.ts +1 -0
  80. package/components/input-pin/input-pin.component.d.ts +4 -4
  81. package/components/input-pin/input-pin.d.ts +2 -0
  82. package/components/input-range/input-range.component.d.ts +15 -50
  83. package/components/input-slider/input-slider.d.ts +1 -1
  84. package/components/input-slider/input-slider.directive.d.ts +3 -5
  85. package/components/input-time/input-time.component.d.ts +1 -3
  86. package/components/input-time/input-time.d.ts +1 -1
  87. package/components/input-time/input-time.directive.d.ts +8 -10
  88. package/components/input-time/input-time.options.d.ts +1 -1
  89. package/components/input-year/input-year.d.ts +1 -1
  90. package/components/input-year/input-year.directive.d.ts +5 -5
  91. package/components/like/like.component.d.ts +4 -11
  92. package/components/like/like.options.d.ts +4 -5
  93. package/components/line-clamp/line-clamp-box.component.d.ts +3 -4
  94. package/components/line-clamp/line-clamp.component.d.ts +8 -10
  95. package/components/line-clamp/line-clamp.options.d.ts +1 -3
  96. package/components/multi-select/multi-select-group/multi-select-group.component.d.ts +6 -8
  97. package/components/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -1
  98. package/components/notification-middle/notification-middle.component.d.ts +2 -2
  99. package/components/notification-middle/notification-middle.directive.d.ts +4 -3
  100. package/components/notification-middle/notification-middle.service.d.ts +7 -3
  101. package/components/pager/pager.component.d.ts +1 -1
  102. package/components/pagination/index.d.ts +1 -0
  103. package/components/pagination/pagination.component.d.ts +3 -2
  104. package/components/pagination/pagination.options.d.ts +10 -0
  105. package/components/pin/pin.directive.d.ts +2 -2
  106. package/components/preview/dialog/preview-dialog.component.d.ts +2 -2
  107. package/components/preview/dialog/preview-dialog.directive.d.ts +3 -3
  108. package/components/preview/dialog/preview-dialog.service.d.ts +5 -2
  109. package/components/preview/pagination/preview-pagination.component.d.ts +1 -1
  110. package/components/preview/preview.component.d.ts +1 -1
  111. package/components/preview/preview.d.ts +2 -1
  112. package/components/preview/zoom/preview-zoom.component.d.ts +1 -1
  113. package/components/progress/progress-bar/fixed-gradient/progress-fixed-gradient.directive.d.ts +1 -2
  114. package/components/progress/progress-bar/progress-color-segments.directive.d.ts +4 -4
  115. package/components/progress/progress-segmented/progress-segmented.directive.d.ts +2 -2
  116. package/components/progress/progress.options.d.ts +1 -3
  117. package/components/push/push-alert.component.d.ts +4 -3
  118. package/components/push/push.component.d.ts +2 -2
  119. package/components/push/push.directive.d.ts +4 -6
  120. package/components/push/push.options.d.ts +5 -8
  121. package/components/push/push.service.d.ts +6 -2
  122. package/components/radio/radio.component.d.ts +7 -8
  123. package/components/radio/radio.directive.d.ts +2 -2
  124. package/components/radio/radio.options.d.ts +2 -5
  125. package/components/radio-list/radio-list.component.d.ts +5 -3
  126. package/components/range/range-change.directive.d.ts +1 -2
  127. package/components/range/range.component.d.ts +16 -24
  128. package/components/rating/rating.component.d.ts +5 -5
  129. package/components/rating/rating.options.d.ts +6 -6
  130. package/components/routable-dialog/generate-dialogable-route.d.ts +1 -1
  131. package/components/segmented/segmented.component.d.ts +5 -9
  132. package/components/segmented/segmented.directive.d.ts +6 -7
  133. package/components/select/native-select/native-select.component.d.ts +7 -8
  134. package/components/select/select.d.ts +1 -1
  135. package/components/select/select.directive.d.ts +4 -3
  136. package/components/slider/helpers/key-steps.d.ts +1 -2
  137. package/components/slider/helpers/slider-key-steps.directive.d.ts +12 -21
  138. package/components/slider/slider.options.d.ts +1 -6
  139. package/components/slides/slides.directive.d.ts +4 -4
  140. package/components/status/status.directive.d.ts +2 -2
  141. package/components/stepper/step.component.d.ts +6 -8
  142. package/components/stepper/stepper.component.d.ts +6 -11
  143. package/components/switch/switch.component.d.ts +7 -19
  144. package/components/switch/switch.options.d.ts +4 -8
  145. package/components/tabs/tabs-with-more.component.d.ts +1 -1
  146. package/components/tabs/tabs.options.d.ts +1 -6
  147. package/components/textarea/index.d.ts +2 -1
  148. package/components/textarea/textarea.component.d.ts +4 -4
  149. package/components/textarea/textarea.d.ts +3 -0
  150. package/components/textarea/textarea.directive.d.ts +13 -0
  151. package/components/textarea/textarea.options.d.ts +1 -1
  152. package/components/toast/index.d.ts +5 -0
  153. package/components/toast/toast.component.d.ts +18 -0
  154. package/components/toast/toast.d.ts +3 -0
  155. package/components/toast/toast.directive.d.ts +7 -0
  156. package/components/toast/toast.options.d.ts +10 -0
  157. package/components/toast/toast.service.d.ts +17 -0
  158. package/components/tree/components/tree-item-content/tree-item-content.component.d.ts +8 -1
  159. package/components/tree/misc/tree.constants.d.ts +0 -3
  160. package/components/tree/misc/tree.tokens.d.ts +1 -6
  161. package/directives/button-close/button-close.directive.d.ts +2 -1
  162. package/directives/button-select/button-select.directive.d.ts +4 -4
  163. package/directives/chevron/chevron.directive.d.ts +2 -3
  164. package/directives/data-list-dropdown-manager/data-list-dropdown-manager.directive.d.ts +5 -5
  165. package/directives/fade/fade.directive.d.ts +2 -2
  166. package/directives/fluid-typography/fluid-typography.directive.d.ts +3 -6
  167. package/directives/fluid-typography/fluid-typography.options.d.ts +1 -3
  168. package/directives/highlight/highlight.directive.d.ts +1 -3
  169. package/directives/index.d.ts +0 -2
  170. package/directives/password/password.directive.d.ts +1 -1
  171. package/directives/password/password.options.d.ts +1 -1
  172. package/directives/sensitive/sensitive.directive.d.ts +2 -2
  173. package/directives/shimmer/shimmer.directive.d.ts +3 -3
  174. package/directives/skeleton/skeleton.directive.d.ts +3 -3
  175. package/directives/tooltip/tooltip.directive.d.ts +3 -3
  176. package/directives/tooltip/tooltip.options.d.ts +1 -4
  177. package/fesm2022/taiga-ui-kit-components-accordion.mjs +69 -145
  178. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  179. package/fesm2022/taiga-ui-kit-components-action-bar.mjs +22 -38
  180. package/fesm2022/taiga-ui-kit-components-action-bar.mjs.map +1 -1
  181. package/fesm2022/taiga-ui-kit-components-avatar.mjs +53 -71
  182. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  183. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs +4 -9
  184. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs.map +1 -1
  185. package/fesm2022/taiga-ui-kit-components-badge.mjs +14 -25
  186. package/fesm2022/taiga-ui-kit-components-badge.mjs.map +1 -1
  187. package/fesm2022/taiga-ui-kit-components-badged-content.mjs +0 -1
  188. package/fesm2022/taiga-ui-kit-components-badged-content.mjs.map +1 -1
  189. package/fesm2022/taiga-ui-kit-components-block.mjs +18 -29
  190. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  191. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +9 -15
  192. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  193. package/fesm2022/taiga-ui-kit-components-button-loading.mjs +3 -3
  194. package/fesm2022/taiga-ui-kit-components-button-loading.mjs.map +1 -1
  195. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +4 -15
  196. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
  197. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +4 -5
  198. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
  199. package/fesm2022/taiga-ui-kit-components-carousel.mjs +3 -9
  200. package/fesm2022/taiga-ui-kit-components-carousel.mjs.map +1 -1
  201. package/fesm2022/taiga-ui-kit-components-checkbox.mjs +17 -75
  202. package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +1 -1
  203. package/fesm2022/taiga-ui-kit-components-chip.mjs +23 -32
  204. package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
  205. package/fesm2022/taiga-ui-kit-components-combo-box.mjs +34 -32
  206. package/fesm2022/taiga-ui-kit-components-combo-box.mjs.map +1 -1
  207. package/fesm2022/taiga-ui-kit-components-comment.mjs +11 -18
  208. package/fesm2022/taiga-ui-kit-components-comment.mjs.map +1 -1
  209. package/fesm2022/taiga-ui-kit-components-compass.mjs +3 -3
  210. package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
  211. package/fesm2022/taiga-ui-kit-components-confirm.mjs +9 -12
  212. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  213. package/fesm2022/taiga-ui-kit-components-copy.mjs +113 -0
  214. package/fesm2022/taiga-ui-kit-components-copy.mjs.map +1 -0
  215. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs +21 -74
  216. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs.map +1 -1
  217. package/fesm2022/taiga-ui-kit-components-drawer.mjs +2 -2
  218. package/fesm2022/taiga-ui-kit-components-drawer.mjs.map +1 -1
  219. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs +0 -1
  220. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs.map +1 -1
  221. package/fesm2022/taiga-ui-kit-components-files.mjs +22 -29
  222. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  223. package/fesm2022/taiga-ui-kit-components-filter.mjs +2 -2
  224. package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
  225. package/fesm2022/taiga-ui-kit-components-floating-container.mjs +11 -17
  226. package/fesm2022/taiga-ui-kit-components-floating-container.mjs.map +1 -1
  227. package/fesm2022/taiga-ui-kit-components-fullscreen.mjs +63 -0
  228. package/fesm2022/taiga-ui-kit-components-fullscreen.mjs.map +1 -0
  229. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +68 -75
  230. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  231. package/fesm2022/taiga-ui-kit-components-input-color.mjs +19 -18
  232. package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
  233. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +31 -49
  234. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
  235. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +15 -11
  236. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
  237. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +18 -17
  238. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -1
  239. package/fesm2022/taiga-ui-kit-components-input-date.mjs +30 -38
  240. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  241. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +2 -3
  242. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  243. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +17 -16
  244. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  245. package/fesm2022/taiga-ui-kit-components-input-month.mjs +18 -17
  246. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  247. package/fesm2022/taiga-ui-kit-components-input-number.mjs +42 -64
  248. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  249. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +141 -163
  250. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  251. package/fesm2022/taiga-ui-kit-components-input-phone.mjs +24 -23
  252. package/fesm2022/taiga-ui-kit-components-input-phone.mjs.map +1 -1
  253. package/fesm2022/taiga-ui-kit-components-input-pin.mjs +12 -11
  254. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  255. package/fesm2022/taiga-ui-kit-components-input-range.mjs +77 -70
  256. package/fesm2022/taiga-ui-kit-components-input-range.mjs.map +1 -1
  257. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +28 -42
  258. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  259. package/fesm2022/taiga-ui-kit-components-input-time.mjs +54 -65
  260. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  261. package/fesm2022/taiga-ui-kit-components-input-year.mjs +19 -16
  262. package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
  263. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +2 -4
  264. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs.map +1 -1
  265. package/fesm2022/taiga-ui-kit-components-like.mjs +38 -31
  266. package/fesm2022/taiga-ui-kit-components-like.mjs.map +1 -1
  267. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +30 -74
  268. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  269. package/fesm2022/taiga-ui-kit-components-message.mjs +6 -9
  270. package/fesm2022/taiga-ui-kit-components-message.mjs.map +1 -1
  271. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +27 -38
  272. package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
  273. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs +32 -28
  274. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs.map +1 -1
  275. package/fesm2022/taiga-ui-kit-components-pager.mjs +5 -7
  276. package/fesm2022/taiga-ui-kit-components-pager.mjs.map +1 -1
  277. package/fesm2022/taiga-ui-kit-components-pagination.mjs +22 -13
  278. package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
  279. package/fesm2022/taiga-ui-kit-components-pin.mjs +13 -17
  280. package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
  281. package/fesm2022/taiga-ui-kit-components-preview.mjs +39 -31
  282. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  283. package/fesm2022/taiga-ui-kit-components-progress.mjs +61 -66
  284. package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
  285. package/fesm2022/taiga-ui-kit-components-pulse.mjs +1 -1
  286. package/fesm2022/taiga-ui-kit-components-pulse.mjs.map +1 -1
  287. package/fesm2022/taiga-ui-kit-components-push.mjs +42 -50
  288. package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
  289. package/fesm2022/taiga-ui-kit-components-radio-list.mjs +6 -6
  290. package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
  291. package/fesm2022/taiga-ui-kit-components-radio.mjs +31 -37
  292. package/fesm2022/taiga-ui-kit-components-radio.mjs.map +1 -1
  293. package/fesm2022/taiga-ui-kit-components-range.mjs +36 -80
  294. package/fesm2022/taiga-ui-kit-components-range.mjs.map +1 -1
  295. package/fesm2022/taiga-ui-kit-components-rating.mjs +17 -26
  296. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  297. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs +8 -4
  298. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs.map +1 -1
  299. package/fesm2022/taiga-ui-kit-components-segmented.mjs +28 -55
  300. package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
  301. package/fesm2022/taiga-ui-kit-components-select.mjs +66 -55
  302. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  303. package/fesm2022/taiga-ui-kit-components-slider.mjs +63 -71
  304. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  305. package/fesm2022/taiga-ui-kit-components-slides.mjs +12 -20
  306. package/fesm2022/taiga-ui-kit-components-slides.mjs.map +1 -1
  307. package/fesm2022/taiga-ui-kit-components-status.mjs +10 -14
  308. package/fesm2022/taiga-ui-kit-components-status.mjs.map +1 -1
  309. package/fesm2022/taiga-ui-kit-components-stepper.mjs +41 -75
  310. package/fesm2022/taiga-ui-kit-components-stepper.mjs.map +1 -1
  311. package/fesm2022/taiga-ui-kit-components-switch.mjs +17 -64
  312. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  313. package/fesm2022/taiga-ui-kit-components-tabs.mjs +22 -33
  314. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  315. package/fesm2022/taiga-ui-kit-components-textarea.mjs +48 -60
  316. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  317. package/fesm2022/taiga-ui-kit-components-tiles.mjs +2 -3
  318. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  319. package/fesm2022/taiga-ui-kit-components-toast.mjs +164 -0
  320. package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -0
  321. package/fesm2022/taiga-ui-kit-components-tree.mjs +39 -43
  322. package/fesm2022/taiga-ui-kit-components-tree.mjs.map +1 -1
  323. package/fesm2022/taiga-ui-kit-components.mjs +3 -2
  324. package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
  325. package/fesm2022/taiga-ui-kit-directives-button-close.mjs +13 -5
  326. package/fesm2022/taiga-ui-kit-directives-button-close.mjs.map +1 -1
  327. package/fesm2022/taiga-ui-kit-directives-button-group.mjs +6 -9
  328. package/fesm2022/taiga-ui-kit-directives-button-group.mjs.map +1 -1
  329. package/fesm2022/taiga-ui-kit-directives-button-select.mjs +17 -16
  330. package/fesm2022/taiga-ui-kit-directives-button-select.mjs.map +1 -1
  331. package/fesm2022/taiga-ui-kit-directives-chevron.mjs +14 -20
  332. package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
  333. package/fesm2022/taiga-ui-kit-directives-connected.mjs +7 -13
  334. package/fesm2022/taiga-ui-kit-directives-connected.mjs.map +1 -1
  335. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs +23 -51
  336. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs.map +1 -1
  337. package/fesm2022/taiga-ui-kit-directives-fade.mjs +13 -15
  338. package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
  339. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +12 -25
  340. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs.map +1 -1
  341. package/fesm2022/taiga-ui-kit-directives-highlight.mjs +0 -1
  342. package/fesm2022/taiga-ui-kit-directives-highlight.mjs.map +1 -1
  343. package/fesm2022/taiga-ui-kit-directives-password.mjs +11 -13
  344. package/fesm2022/taiga-ui-kit-directives-password.mjs.map +1 -1
  345. package/fesm2022/taiga-ui-kit-directives-present.mjs +0 -1
  346. package/fesm2022/taiga-ui-kit-directives-present.mjs.map +1 -1
  347. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs +11 -16
  348. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
  349. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs +22 -32
  350. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs.map +1 -1
  351. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs +25 -36
  352. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
  353. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +15 -20
  354. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
  355. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs +3 -5
  356. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs.map +1 -1
  357. package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs +1 -2
  358. package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs.map +1 -1
  359. package/fesm2022/taiga-ui-kit-directives.mjs +0 -2
  360. package/fesm2022/taiga-ui-kit-directives.mjs.map +1 -1
  361. package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs +43 -0
  362. package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs.map +1 -0
  363. package/fesm2022/taiga-ui-kit-pipes-emails.mjs +0 -1
  364. package/fesm2022/taiga-ui-kit-pipes-emails.mjs.map +1 -1
  365. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs +9 -22
  366. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs.map +1 -1
  367. package/fesm2022/taiga-ui-kit-pipes-flag.mjs +31 -0
  368. package/fesm2022/taiga-ui-kit-pipes-flag.mjs.map +1 -0
  369. package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs +1 -2
  370. package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs.map +1 -1
  371. package/fesm2022/taiga-ui-kit-pipes-initials.mjs +28 -0
  372. package/fesm2022/taiga-ui-kit-pipes-initials.mjs.map +1 -0
  373. package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs +2 -2
  374. package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs.map +1 -1
  375. package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs +0 -1
  376. package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs.map +1 -1
  377. package/fesm2022/taiga-ui-kit-pipes-stringify.mjs +0 -1
  378. package/fesm2022/taiga-ui-kit-pipes-stringify.mjs.map +1 -1
  379. package/fesm2022/taiga-ui-kit-pipes.mjs +3 -1
  380. package/fesm2022/taiga-ui-kit-pipes.mjs.map +1 -1
  381. package/fesm2022/taiga-ui-kit-tokens.mjs +7 -25
  382. package/fesm2022/taiga-ui-kit-tokens.mjs.map +1 -1
  383. package/fesm2022/taiga-ui-kit-utils.mjs +2 -8
  384. package/fesm2022/taiga-ui-kit-utils.mjs.map +1 -1
  385. package/package.json +44 -40
  386. package/pipes/auto-color/auto-color.pipe.d.ts +13 -0
  387. package/pipes/auto-color/index.d.ts +1 -0
  388. package/pipes/filter-by-input/filter-by-input.pipe.d.ts +2 -2
  389. package/pipes/flag/flag.pipe.d.ts +14 -0
  390. package/pipes/flag/index.d.ts +1 -0
  391. package/pipes/index.d.ts +3 -1
  392. package/pipes/initials/index.d.ts +1 -0
  393. package/pipes/initials/initials.pipe.d.ts +7 -0
  394. package/pipes/stringify-content/stringify-content.pipe.d.ts +2 -3
  395. package/styles/components/avatar.less +188 -0
  396. package/styles/components/badge.less +1 -0
  397. package/styles/components/checkbox.less +14 -12
  398. package/styles/components/chip.less +12 -3
  399. package/styles/components/like.less +4 -9
  400. package/styles/components/pin.less +3 -7
  401. package/styles/components/radio.less +1 -1
  402. package/styles/components/switch.less +9 -9
  403. package/styles/components/toast.less +44 -0
  404. package/tokens/i18n.d.ts +25 -26
  405. package/tokens/index.d.ts +0 -1
  406. package/tokens/input-date-options.d.ts +1 -1
  407. package/tokens/items-handlers.d.ts +1 -7
  408. package/tokens/preview-icons.d.ts +1 -3
  409. package/utils/index.d.ts +0 -1
  410. package/components/accordion/accordion-item-content.directive.d.ts +0 -6
  411. package/components/accordion/accordion-item-eager-content.directive.d.ts +0 -5
  412. package/components/accordion/accordion-item.component.d.ts +0 -25
  413. package/components/action-bar/action-bar.d.ts +0 -3
  414. package/components/action-bar/action-bar.directive.d.ts +0 -6
  415. package/components/avatar/avatar.component.d.ts +0 -15
  416. package/components/input-password/index.d.ts +0 -2
  417. package/components/input-password/input-password.component.d.ts +0 -16
  418. package/components/input-password/input-password.options.d.ts +0 -24
  419. package/components/pdf-viewer/index.d.ts +0 -4
  420. package/components/pdf-viewer/pdf-viewer.component.d.ts +0 -12
  421. package/components/pdf-viewer/pdf-viewer.directive.d.ts +0 -7
  422. package/components/pdf-viewer/pdf-viewer.options.d.ts +0 -13
  423. package/components/pdf-viewer/pdf-viewer.service.d.ts +0 -13
  424. package/components/textarea/textarea-limit.directive.d.ts +0 -27
  425. package/directives/lazy-loading/index.d.ts +0 -2
  426. package/directives/lazy-loading/lazy-loading.directive.d.ts +0 -18
  427. package/directives/lazy-loading/lazy-loading.service.d.ts +0 -12
  428. package/fesm2022/taiga-ui-kit-components-input-password.mjs +0 -95
  429. package/fesm2022/taiga-ui-kit-components-input-password.mjs.map +0 -1
  430. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs +0 -83
  431. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs.map +0 -1
  432. package/fesm2022/taiga-ui-kit-components-preview-dialog.mjs +0 -64
  433. package/fesm2022/taiga-ui-kit-components-preview-dialog.mjs.map +0 -1
  434. package/fesm2022/taiga-ui-kit-directives-copy.mjs +0 -121
  435. package/fesm2022/taiga-ui-kit-directives-copy.mjs.map +0 -1
  436. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs +0 -81
  437. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs.map +0 -1
  438. package/fesm2022/taiga-ui-kit-pipes-field-error.mjs +0 -147
  439. package/fesm2022/taiga-ui-kit-pipes-field-error.mjs.map +0 -1
  440. package/pipes/field-error/field-error-content-pipe.d.ts +0 -14
  441. package/pipes/field-error/field-error-pipe.d.ts +0 -29
  442. package/pipes/field-error/index.d.ts +0 -2
  443. package/tokens/validation-errors.d.ts +0 -5
  444. package/utils/phone.d.ts +0 -3
  445. /package/{directives → components}/copy/copy.d.ts +0 -0
  446. /package/{directives → components}/copy/index.d.ts +0 -0
@@ -1,58 +1,60 @@
1
+ import { tuiInjectAuxiliary, TuiTextfield } from '@taiga-ui/core/components/textfield';
1
2
  import { TuiSliderComponent, TuiSliderKeyStepsBase, TuiSliderKeySteps } from '@taiga-ui/kit/components/slider';
2
3
  import * as i0 from '@angular/core';
3
- import { inject, computed, effect, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
4
- import { TuiValueTransformer, TUI_IDENTITY_VALUE_TRANSFORMER, TuiNonNullableValueTransformer } from '@taiga-ui/cdk/classes';
5
- import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
4
+ import { ChangeDetectionStrategy, ViewEncapsulation, Component, inject, computed, effect, Directive } from '@angular/core';
5
+ import { TuiValueTransformer, TuiNonNullableValueTransformer } from '@taiga-ui/cdk/classes';
6
6
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
7
- import { tuiInjectElement, tuiIsElement, tuiIsInput } from '@taiga-ui/cdk/utils/dom';
7
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
8
8
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
9
9
  import { tuiWithStyles } from '@taiga-ui/cdk/utils/miscellaneous';
10
- import { tuiInjectAuxiliary } from '@taiga-ui/core/components/textfield';
11
10
  import * as i1 from '@taiga-ui/kit/components/input-number';
12
11
  import { TuiInputNumberDirective, tuiInputNumberOptionsProvider, TuiWithQuantumValueTransformer } from '@taiga-ui/kit/components/input-number';
13
- import { fromEvent, filter } from 'rxjs';
12
+ import { fromEvent, tap, filter, switchMap } from 'rxjs';
14
13
 
14
+ class Styles {
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: Styles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-input-slider" }, ngImport: i0, template: '', isInline: true, styles: ["tui-textfield [tuiInputSlider]~.t-content .t-clear{display:none!important}\n", "tui-textfield [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n", "tui-textfield [tuiSlider]{--tui-slider-track-color: transparent !important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Styles, decorators: [{
19
+ type: Component,
20
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'tui-input-slider' }, styles: ["tui-textfield [tuiInputSlider]~.t-content .t-clear{display:none!important}\n", "tui-textfield [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n", "tui-textfield [tuiSlider]{--tui-slider-track-color: transparent !important}\n"] }]
21
+ }] });
15
22
  class TuiInputSliderDirective {
16
23
  constructor() {
17
24
  this.isMobile = inject(TUI_IS_MOBILE);
18
- this.element = tuiInjectElement();
25
+ this.el = tuiInjectElement();
19
26
  this.slider = tuiInjectAuxiliary((x) => x instanceof TuiSliderComponent);
20
27
  this.controlTransformer = inject(TuiValueTransformer, { self: true });
21
- this.keyStepsTransformer = computed(() => this.slider()?.keySteps?.transformer() ?? TUI_IDENTITY_VALUE_TRANSFORMER);
28
+ this.nothing = tuiWithStyles(Styles);
22
29
  this.inputNumber = inject(TuiInputNumberDirective, { self: true });
23
30
  this.value = computed(() => this.controlTransformer.toControlValue(this.inputNumber.value()));
24
- this.nothing = tuiWithStyles(TuiInputSliderStyles);
25
31
  this.textfieldToSliderSync = effect(() => {
26
32
  const slider = this.slider();
27
33
  if (!slider) {
28
34
  return;
29
35
  }
30
- if (slider.keySteps?.transformer() &&
31
- Number.isFinite(slider.keySteps?.totalSteps)) {
32
- // TODO(v5): move all if-condition body inside `TuiSliderKeyStepsBase`
33
- slider.min = 0;
34
- slider.step = 1;
35
- slider.max = slider.keySteps?.totalSteps ?? 100;
36
- }
37
- else {
36
+ if (!slider.keySteps?.transformer()) {
38
37
  slider.min = this.inputNumber.min();
39
38
  slider.max = this.inputNumber.max();
39
+ slider.value = this.value();
40
+ }
41
+ else {
42
+ slider.keySteps?.setControlValue(this.value());
40
43
  }
41
- slider.value = this.keyStepsTransformer().fromControlValue(this.value());
42
44
  slider.el.disabled = !this.inputNumber.interactive();
43
- }, TUI_ALLOW_SIGNAL_WRITES);
44
- this.sliderInitEffect = effect((onCleanup) => {
45
+ });
46
+ this.sliderInit = effect((onCleanup) => {
45
47
  const slider = this.slider();
46
48
  if (!slider) {
47
49
  return;
48
50
  }
49
- slider.el.style.setProperty('--tui-slider-track-color', 'transparent');
51
+ slider.el.setAttribute('tabindex', '-1');
50
52
  if (slider.keySteps) {
51
- slider.keySteps.value = this.value;
53
+ slider.keySteps.controlValue = this.value;
52
54
  }
53
- const subscription = fromEvent(slider.el, 'input', (x) => x.target)
54
- .pipe(filter(tuiIsElement), filter(tuiIsInput))
55
- .subscribe((x) => this.onSliderInput(x.valueAsNumber));
55
+ const subscription = fromEvent(slider.el, 'input')
56
+ .pipe(tap(() => this.inputNumber.setValue(slider.keySteps?.getControlValue() ?? slider.el.valueAsNumber)), filter(() => !this.isMobile), switchMap(() => fromEvent(this.el.ownerDocument, 'pointerup', { once: true })))
57
+ .subscribe(() => this.el.focus());
56
58
  onCleanup(() => subscription.unsubscribe());
57
59
  });
58
60
  }
@@ -64,12 +66,6 @@ class TuiInputSliderDirective {
64
66
  this.inputNumber.setValue(newValue);
65
67
  }
66
68
  }
67
- onSliderInput(value) {
68
- this.inputNumber.setValue(this.keyStepsTransformer().toControlValue(value));
69
- if (!this.isMobile) {
70
- this.element.focus();
71
- }
72
- }
73
69
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputSliderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
74
70
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputSliderDirective, isStandalone: true, selector: "input[tuiInputSlider]", host: { listeners: { "blur": "inputNumber.setValue(value() ?? null)", "keydown.arrowUp": "onStep(1)", "keydown.arrowDown": "onStep(-1)" } }, providers: [
75
71
  tuiInputNumberOptionsProvider({
@@ -80,7 +76,6 @@ class TuiInputSliderDirective {
80
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputSliderDirective, decorators: [{
81
77
  type: Directive,
82
78
  args: [{
83
- standalone: true,
84
79
  selector: 'input[tuiInputSlider]',
85
80
  providers: [
86
81
  tuiInputNumberOptionsProvider({
@@ -101,22 +96,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
101
96
  },
102
97
  }]
103
98
  }] });
104
- class TuiInputSliderStyles {
105
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputSliderStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputSliderStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-input-slider" }, ngImport: i0, template: '', isInline: true, styles: ["tui-textfield [tuiInputSlider]~.t-content .t-clear{display:none!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
107
- }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputSliderStyles, decorators: [{
109
- type: Component,
110
- args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
111
- class: 'tui-input-slider',
112
- }, styles: ["tui-textfield [tuiInputSlider]~.t-content .t-clear{display:none!important}\n"] }]
113
- }] });
114
99
 
115
100
  const TuiInputSlider = [
116
101
  TuiSliderComponent,
117
102
  TuiSliderKeyStepsBase,
118
103
  TuiSliderKeySteps,
119
104
  TuiInputSliderDirective,
105
+ TuiTextfield,
120
106
  ];
121
107
 
122
108
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-slider.mjs","sources":["../../../projects/kit/components/input-slider/input-slider.directive.ts","../../../projects/kit/components/input-slider/input-slider.ts","../../../projects/kit/components/input-slider/taiga-ui-kit-components-input-slider.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n TUI_IDENTITY_VALUE_TRANSFORMER,\n TuiNonNullableValueTransformer,\n TuiValueTransformer,\n} from '@taiga-ui/cdk/classes';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiIsElement, tuiIsInput} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiInjectAuxiliary} from '@taiga-ui/core/components/textfield';\nimport {\n TuiInputNumberDirective,\n tuiInputNumberOptionsProvider,\n TuiWithQuantumValueTransformer,\n} from '@taiga-ui/kit/components/input-number';\nimport {TuiSliderComponent} from '@taiga-ui/kit/components/slider';\nimport {filter, fromEvent} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputSlider]',\n providers: [\n tuiInputNumberOptionsProvider({\n valueTransformer: new TuiNonNullableValueTransformer(),\n }),\n ],\n hostDirectives: [\n {\n directive: TuiInputNumberDirective,\n inputs: ['min', 'max', 'prefix', 'postfix', 'invalid', 'readOnly'],\n },\n TuiWithQuantumValueTransformer,\n ],\n host: {\n '(blur)': 'inputNumber.setValue(value() ?? null)',\n '(keydown.arrowUp)': 'onStep(1)',\n '(keydown.arrowDown)': 'onStep(-1)',\n },\n})\nexport class TuiInputSliderDirective {\n private readonly isMobile = inject(TUI_IS_MOBILE);\n private readonly element = tuiInjectElement<HTMLInputElement>();\n private readonly slider = tuiInjectAuxiliary<TuiSliderComponent>(\n (x) => x instanceof TuiSliderComponent,\n );\n\n private readonly controlTransformer = inject<\n TuiValueTransformer<number | null, number>\n >(TuiValueTransformer, {self: true});\n\n private readonly keyStepsTransformer = computed(\n () => this.slider()?.keySteps?.transformer() ?? TUI_IDENTITY_VALUE_TRANSFORMER,\n );\n\n protected readonly inputNumber = inject(TuiInputNumberDirective, {self: true});\n protected readonly value = computed(() =>\n this.controlTransformer.toControlValue(this.inputNumber.value()),\n );\n\n protected readonly nothing = tuiWithStyles(TuiInputSliderStyles);\n\n protected readonly textfieldToSliderSync = effect(() => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n if (\n slider.keySteps?.transformer() &&\n Number.isFinite(slider.keySteps?.totalSteps)\n ) {\n // TODO(v5): move all if-condition body inside `TuiSliderKeyStepsBase`\n slider.min = 0;\n slider.step = 1;\n slider.max = slider.keySteps?.totalSteps ?? 100;\n } else {\n slider.min = this.inputNumber.min();\n slider.max = this.inputNumber.max();\n }\n\n slider.value = this.keyStepsTransformer().fromControlValue(this.value());\n slider.el.disabled = !this.inputNumber.interactive();\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly sliderInitEffect = effect((onCleanup) => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n slider.el.style.setProperty('--tui-slider-track-color', 'transparent');\n\n if (slider.keySteps) {\n slider.keySteps.value = this.value;\n }\n\n const subscription = fromEvent(slider.el, 'input', (x) => x.target)\n .pipe(filter(tuiIsElement), filter(tuiIsInput))\n .subscribe((x) => this.onSliderInput(x.valueAsNumber));\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n protected onStep(coefficient: number): void {\n const slider = this.slider();\n\n if (slider && this.inputNumber.interactive()) {\n const newValue = tuiClamp(\n slider.keySteps?.takeStep(coefficient) ??\n slider.value + coefficient * slider.step,\n this.inputNumber.min(),\n this.inputNumber.max(),\n );\n\n this.inputNumber.setValue(newValue);\n }\n }\n\n private onSliderInput(value: number): void {\n this.inputNumber.setValue(this.keyStepsTransformer().toControlValue(value));\n\n if (!this.isMobile) {\n this.element.focus();\n }\n }\n}\n\n@Component({\n standalone: true,\n template: '',\n styles: [\n // TODO: tui-textfield:has([tuiInputSlider]) .t-clear\n 'tui-textfield [tuiInputSlider] ~ .t-content .t-clear {display: none !important}',\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-input-slider',\n },\n})\nclass TuiInputSliderStyles {}\n","import {\n TuiSliderComponent,\n TuiSliderKeySteps,\n TuiSliderKeyStepsBase,\n} from '@taiga-ui/kit/components/slider';\n\nimport {TuiInputSliderDirective} from './input-slider.directive';\n\nexport const TuiInputSlider = [\n TuiSliderComponent,\n TuiSliderKeyStepsBase,\n TuiSliderKeySteps,\n TuiInputSliderDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-slider.mjs","sources":["../../../projects/kit/components/input-slider/input-slider.directive.ts","../../../projects/kit/components/input-slider/input-slider.ts","../../../projects/kit/components/input-slider/taiga-ui-kit-components-input-slider.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TuiNonNullableValueTransformer, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiInjectAuxiliary} from '@taiga-ui/core/components/textfield';\nimport {\n TuiInputNumberDirective,\n tuiInputNumberOptionsProvider,\n TuiWithQuantumValueTransformer,\n} from '@taiga-ui/kit/components/input-number';\nimport {TuiSliderComponent} from '@taiga-ui/kit/components/slider';\nimport {filter, fromEvent, switchMap, tap} from 'rxjs';\n\n@Component({\n template: '',\n styles: [\n // TODO: tui-textfield:has([tuiInputSlider]) .t-clear\n 'tui-textfield [tuiInputSlider] ~ .t-content .t-clear {display: none !important}',\n // TODO: tui-textfield:has([tuiInputSlider]) [tuiSlider]:disabled\n 'tui-textfield [tuiInputSlider] ~ [tuiSlider]:disabled {display: none}',\n 'tui-textfield [tuiSlider] { --tui-slider-track-color: transparent !important; }',\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {class: 'tui-input-slider'},\n})\nclass Styles {}\n\n@Directive({\n selector: 'input[tuiInputSlider]',\n providers: [\n tuiInputNumberOptionsProvider({\n valueTransformer: new TuiNonNullableValueTransformer(),\n }),\n ],\n hostDirectives: [\n {\n directive: TuiInputNumberDirective,\n inputs: ['min', 'max', 'prefix', 'postfix', 'invalid', 'readOnly'],\n },\n TuiWithQuantumValueTransformer,\n ],\n host: {\n '(blur)': 'inputNumber.setValue(value() ?? null)',\n '(keydown.arrowUp)': 'onStep(1)',\n '(keydown.arrowDown)': 'onStep(-1)',\n },\n})\nexport class TuiInputSliderDirective {\n private readonly isMobile = inject(TUI_IS_MOBILE);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly slider = tuiInjectAuxiliary<TuiSliderComponent>(\n (x) => x instanceof TuiSliderComponent,\n );\n\n private readonly controlTransformer = inject<\n TuiValueTransformer<number | null, number>\n >(TuiValueTransformer, {self: true});\n\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly inputNumber = inject(TuiInputNumberDirective, {self: true});\n protected readonly value = computed(() =>\n this.controlTransformer.toControlValue(this.inputNumber.value()),\n );\n\n protected readonly textfieldToSliderSync = effect(() => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n if (!slider.keySteps?.transformer()) {\n slider.min = this.inputNumber.min();\n slider.max = this.inputNumber.max();\n slider.value = this.value();\n } else {\n slider.keySteps?.setControlValue(this.value());\n }\n\n slider.el.disabled = !this.inputNumber.interactive();\n });\n\n protected readonly sliderInit = effect((onCleanup) => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n slider.el.setAttribute('tabindex', '-1');\n\n if (slider.keySteps) {\n slider.keySteps.controlValue = this.value;\n }\n\n const subscription = fromEvent(slider.el, 'input')\n .pipe(\n tap(() =>\n this.inputNumber.setValue(\n slider.keySteps?.getControlValue() ?? slider.el.valueAsNumber,\n ),\n ),\n filter(() => !this.isMobile),\n switchMap(() =>\n fromEvent(this.el.ownerDocument, 'pointerup', {once: true}),\n ),\n )\n .subscribe(() => this.el.focus());\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n protected onStep(coefficient: number): void {\n const slider = this.slider();\n\n if (slider && this.inputNumber.interactive()) {\n const newValue = tuiClamp(\n slider.keySteps?.takeStep(coefficient) ??\n slider.value + coefficient * slider.step,\n this.inputNumber.min(),\n this.inputNumber.max(),\n );\n\n this.inputNumber.setValue(newValue);\n }\n }\n}\n","import {TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {\n TuiSliderComponent,\n TuiSliderKeySteps,\n TuiSliderKeyStepsBase,\n} from '@taiga-ui/kit/components/slider';\n\nimport {TuiInputSliderDirective} from './input-slider.directive';\n\nexport const TuiInputSlider = [\n TuiSliderComponent,\n TuiSliderKeyStepsBase,\n TuiSliderKeySteps,\n TuiInputSliderDirective,\n TuiTextfield,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,23 +1,21 @@
1
+ import * as i1$1 from '@taiga-ui/core/components/textfield';
2
+ import { tuiTextfieldIcon, TuiTextfieldComponent, TuiWithNativePicker, tuiAsTextfieldAccessor, TuiTextfieldContent, TuiTextfield } from '@taiga-ui/core/components/textfield';
1
3
  import * as i0 from '@angular/core';
2
- import { inject, signal, computed, untracked, Input, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
4
+ import { inject, computed, input, untracked, Directive, HostAttributeToken, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
5
  import { TuiControl, tuiAsControl, tuiValueTransformerFrom } from '@taiga-ui/cdk/classes';
4
6
  import { TuiTime } from '@taiga-ui/cdk/date-time';
5
- import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
6
- import * as i1 from '@taiga-ui/core/components/textfield';
7
- import { TuiTextfieldDirective, tuiTextfieldIconBinding, TuiTextfieldComponent, TuiWithNativePicker, tuiAsTextfieldAccessor, TuiWithTextfield, TuiTextfieldContent } from '@taiga-ui/core/components/textfield';
8
- import { toSignal } from '@angular/core/rxjs-interop';
9
7
  import * as i2 from '@maskito/angular';
10
8
  import { MaskitoDirective } from '@maskito/angular';
11
9
  import { maskitoTimeOptionsGenerator, maskitoSelectionChangeHandler, maskitoCaretGuard, maskitoAddOnFocusPlugin, maskitoRemoveOnBlurPlugin } from '@maskito/kit';
12
10
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
13
- import { tuiDirectiveBinding } from '@taiga-ui/cdk/utils/miscellaneous';
11
+ import { tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
14
12
  import { tuiAsOptionContent } from '@taiga-ui/core/components/data-list';
15
- import { TuiDropdownDirective, tuiDropdownOpen, tuiDropdownEnabled } from '@taiga-ui/core/directives/dropdown';
16
- import { tuiAsAuxiliary } from '@taiga-ui/core/tokens';
13
+ import * as i1 from '@taiga-ui/core/components/input';
14
+ import { TuiInputDirective, TuiWithInput } from '@taiga-ui/core/components/input';
15
+ import { TuiDropdownDirective, TuiDropdownOpen, tuiDropdownEnabled } from '@taiga-ui/core/portals/dropdown';
17
16
  import { TuiSelectOption } from '@taiga-ui/kit/components/select';
18
17
  import { TUI_TIME_TEXTS } from '@taiga-ui/kit/tokens';
19
18
  import { tuiMaskito } from '@taiga-ui/kit/utils';
20
- import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
21
19
 
22
20
  const TUI_INPUT_TIME_DEFAULT_OPTIONS = {
23
21
  icon: () => '@tui.clock',
@@ -31,46 +29,34 @@ const [TUI_INPUT_TIME_OPTIONS, tuiInputTimeOptionsProvider] = tuiCreateOptions(T
31
29
  class TuiInputTimeDirective extends TuiControl {
32
30
  constructor() {
33
31
  super(...arguments);
34
- this.textfield = inject(TuiTextfieldDirective);
32
+ this.input = inject(TuiInputDirective);
35
33
  this.dropdown = inject(TuiDropdownDirective);
36
- this.open = tuiDropdownOpen();
34
+ this.open = inject(TuiDropdownOpen).open;
37
35
  this.options = inject(TUI_INPUT_TIME_OPTIONS);
38
- this.fillers = toSignal(inject(TUI_TIME_TEXTS));
39
- this.prefix = signal('');
40
- this.postfix = signal('');
41
- this.icon = tuiTextfieldIconBinding(TUI_INPUT_TIME_OPTIONS);
36
+ this.fillers = inject(TUI_TIME_TEXTS);
37
+ this.icon = tuiTextfieldIcon(TUI_INPUT_TIME_OPTIONS);
42
38
  this.dropdownEnabled = tuiDropdownEnabled(computed(() => !this.native && this.interactive()));
43
- this.filler = tuiDirectiveBinding(TuiTextfieldComponent, 'fillerSetter', computed((filler = this.fillers()?.[this.timeMode()] ?? '') => this.postfix() ? '' : this.prefix() + filler), {});
39
+ this.filler = tuiDirectiveBinding(TuiTextfieldComponent, 'filler', computed((filler = this.fillers()?.[this.timeMode()] ?? '') => this.postfix() ? '' : this.prefix() + filler), {});
44
40
  this.mask = tuiMaskito(computed(() => this.computeMask({
45
41
  ...this.options,
46
42
  mode: this.timeMode(),
47
- step: this.interactive() && !this.dropdown._content() ? 1 : 0,
43
+ step: this.interactive() && !this.dropdown.content() ? 1 : 0,
48
44
  prefix: this.prefix(),
49
45
  postfix: this.postfix(),
50
46
  })));
51
- this.accept = [];
47
+ this.accept = input([]);
48
+ this.timeMode = input(this.options.mode, { alias: 'mode' });
49
+ this.prefix = input('');
50
+ this.postfix = input('');
52
51
  this.native = !!inject(TuiWithNativePicker, { optional: true }) && inject(TUI_IS_MOBILE);
53
- this.timeMode = signal(this.options.mode);
54
- }
55
- // TODO(v5): use signal inputs
56
- set modeSetter(x) {
57
- this.timeMode.set(x);
58
- }
59
- // TODO(v5): use signal inputs
60
- set prefixSetter(x) {
61
- this.prefix.set(x);
62
- }
63
- // TODO(v5): use signal inputs
64
- set postfixSetter(x) {
65
- this.postfix.set(x);
66
52
  }
67
53
  setValue(value) {
68
54
  this.onChange(value);
69
55
  if (value) {
70
- this.textfield.value.set(this.stringify(value));
56
+ this.input.value.set(this.stringify(value));
71
57
  }
72
58
  else {
73
- this.textfield.setValue(value);
59
+ this.input.setValue(value);
74
60
  }
75
61
  if (!value && this.dropdownEnabled()) {
76
62
  this.open.set(true);
@@ -81,7 +67,7 @@ class TuiInputTimeDirective extends TuiControl {
81
67
  const changed = untracked(() => value !== this.value());
82
68
  if (changed || reset) {
83
69
  super.writeValue(value);
84
- untracked(() => this.textfield.value.set(this.stringify(this.value())));
70
+ untracked(() => this.input.value.set(this.stringify(this.value())));
85
71
  }
86
72
  }
87
73
  onInput(valueWithAffixes) {
@@ -89,16 +75,34 @@ class TuiInputTimeDirective extends TuiControl {
89
75
  .replace(this.prefix(), '')
90
76
  .replace(this.postfix(), '');
91
77
  const time = value.length === this.timeMode().length ? TuiTime.fromString(value) : null;
92
- const newValue = this.accept.length && time ? this.findNearestTime(time, this.accept) : time;
78
+ const newValue = this.accept().length && time
79
+ ? this.findNearestTime(time, this.accept())
80
+ : time;
93
81
  this.control?.control?.updateValueAndValidity({ emitEvent: false });
94
82
  this.onChange(newValue);
95
83
  if (newValue && newValue !== time) {
96
- this.textfield.value.set(this.stringify(newValue));
84
+ this.input.value.set(this.stringify(newValue));
97
85
  }
98
86
  }
99
87
  toggle() {
100
88
  this.open.update((x) => !x);
101
89
  }
90
+ onBlur(valueWithAffixes) {
91
+ const value = valueWithAffixes
92
+ .replace(this.prefix(), '')
93
+ .replace(this.postfix(), '');
94
+ if (value && !this.value()) {
95
+ const time = TuiTime.fromString(value);
96
+ const newValue = this.accept().length
97
+ ? this.findNearestTime(time, this.accept())
98
+ : time;
99
+ this.control?.control?.updateValueAndValidity({ emitEvent: false });
100
+ this.onChange(newValue);
101
+ if (newValue) {
102
+ this.input.value.set(this.stringify(newValue));
103
+ }
104
+ }
105
+ }
102
106
  computeMask(params) {
103
107
  const options = maskitoTimeOptionsGenerator(params);
104
108
  const { mode, prefix, postfix } = params;
@@ -126,50 +130,37 @@ class TuiInputTimeDirective extends TuiControl {
126
130
  return this.prefix() + (time?.toString(this.timeMode()) || '') + this.postfix();
127
131
  }
128
132
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputTimeDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
129
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputTimeDirective, isStandalone: true, selector: "input[tuiInputTime]", inputs: { accept: "accept", modeSetter: ["mode", "modeSetter"], prefixSetter: ["prefix", "prefixSetter"], postfixSetter: ["postfix", "postfixSetter"] }, host: { attributes: { "inputmode": "numeric" }, listeners: { "click": "toggle()", "input": "onInput($event.target.value)" }, properties: { "disabled": "disabled()" } }, providers: [
133
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: TuiInputTimeDirective, isStandalone: true, selector: "input[tuiInputTime]", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, timeMode: { classPropertyName: "timeMode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, postfix: { classPropertyName: "postfix", publicName: "postfix", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "inputmode": "numeric" }, listeners: { "click": "toggle()", "input": "onInput($event.target.value)", "blur": "onBlur($event.target.value)" }, properties: { "disabled": "disabled()" } }, providers: [
130
134
  tuiAsControl(TuiInputTimeDirective),
131
135
  tuiAsTextfieldAccessor(TuiInputTimeDirective),
132
- tuiAsAuxiliary(TuiInputTimeDirective),
133
136
  tuiValueTransformerFrom(TUI_INPUT_TIME_OPTIONS),
134
137
  tuiAsOptionContent(TuiSelectOption),
135
- ], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }, { directive: i2.MaskitoDirective }], ngImport: i0 }); }
138
+ ], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithInput }, { directive: i2.MaskitoDirective }], ngImport: i0 }); }
136
139
  }
137
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputTimeDirective, decorators: [{
138
141
  type: Directive,
139
142
  args: [{
140
- standalone: true,
141
143
  selector: 'input[tuiInputTime]',
142
144
  providers: [
143
145
  tuiAsControl(TuiInputTimeDirective),
144
146
  tuiAsTextfieldAccessor(TuiInputTimeDirective),
145
- tuiAsAuxiliary(TuiInputTimeDirective),
146
147
  tuiValueTransformerFrom(TUI_INPUT_TIME_OPTIONS),
147
148
  tuiAsOptionContent(TuiSelectOption),
148
149
  ],
149
- hostDirectives: [TuiWithTextfield, MaskitoDirective],
150
+ hostDirectives: [TuiWithInput, MaskitoDirective],
150
151
  host: {
151
152
  inputmode: 'numeric',
152
153
  '[disabled]': 'disabled()',
153
154
  '(click)': 'toggle()',
154
155
  '(input)': 'onInput($event.target.value)',
156
+ '(blur)': 'onBlur($event.target.value)',
155
157
  },
156
158
  }]
157
- }], propDecorators: { accept: [{
158
- type: Input
159
- }], modeSetter: [{
160
- type: Input,
161
- args: ['mode']
162
- }], prefixSetter: [{
163
- type: Input,
164
- args: ['prefix']
165
- }], postfixSetter: [{
166
- type: Input,
167
- args: ['postfix']
168
- }] } });
159
+ }] });
169
160
 
170
161
  class TuiNativeTimePicker {
171
162
  constructor() {
172
- this.list = tuiInjectElement().getAttribute('list');
163
+ this.list = inject(new HostAttributeToken('list'), { optional: true });
173
164
  }
174
165
  getStep(timeMode) {
175
166
  switch (timeMode) {
@@ -190,23 +181,17 @@ class TuiNativeTimePicker {
190
181
  return dateString + timeString;
191
182
  }
192
183
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiNativeTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
193
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiNativeTimePicker, isStandalone: false, host: { properties: { "attr.list": "null" } }, ngImport: i0 }); }
184
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiNativeTimePicker, isStandalone: true, host: { properties: { "attr.list": "null" } }, ngImport: i0 }); }
194
185
  }
195
186
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiNativeTimePicker, decorators: [{
196
187
  type: Directive,
197
- args: [{
198
- standalone: false,
199
- host: {
200
- '[attr.list]': 'null',
201
- },
202
- }]
188
+ args: [{ host: { '[attr.list]': 'null' } }]
203
189
  }] });
204
190
  class TuiInputTimeComponent extends TuiNativeTimePicker {
205
191
  constructor() {
206
192
  super(...arguments);
207
193
  this.control = inject(TuiControl);
208
194
  this.host = inject(TuiInputTimeDirective);
209
- this.textfield = inject(TuiTextfieldDirective);
210
195
  this.value = computed(() => this.toISOString(this.control.value()));
211
196
  this.step = computed(() => this.getStep(this.host.timeMode()));
212
197
  }
@@ -214,14 +199,18 @@ class TuiInputTimeComponent extends TuiNativeTimePicker {
214
199
  this.host.setValue(TuiTime.fromString(value));
215
200
  }
216
201
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputTimeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
217
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiInputTimeComponent, isStandalone: true, selector: "input[tuiInputTime][type=\"time\"]", host: { attributes: { "ngSkipHydration": "true" } }, usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithNativePicker }], ngImport: i0, template: "@if (host.native) {\n <input\n *tuiTextfieldContent\n type=\"time\"\n [attr.list]=\"list\"\n [step]=\"step()\"\n [value]=\"value()\"\n (change)=\"setValue($any($event.target).value)\"\n />\n}\n", styles: ["tui-textfield input[tuiInputTime]~.t-content input[type=time]{position:absolute;right:0;left:auto;inline-size:calc(var(--t-right) + var(--t-padding));opacity:0;margin:0;padding:0}tui-textfield input[tuiInputTime]~.t-content input[type=time]::-webkit-calendar-picker-indicator{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"], dependencies: [{ kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
202
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiInputTimeComponent, isStandalone: true, selector: "input[tuiInputTime][type=\"time\"]", host: { attributes: { "ngSkipHydration": "true" } }, usesInheritance: true, hostDirectives: [{ directive: i1$1.TuiWithNativePicker }], ngImport: i0, template: "@if (host.native) {\n <input\n *tuiTextfieldContent\n type=\"time\"\n [attr.list]=\"list\"\n [step]=\"step()\"\n [value]=\"value()\"\n (change)=\"setValue($any($event.target).value)\"\n />\n}\n", styles: ["tui-textfield input[tuiInputTime]~.t-content input[type=time]{position:absolute;right:0;left:auto;inline-size:calc(var(--t-right) + var(--t-padding));opacity:0;margin:0;padding:0}tui-textfield input[tuiInputTime]~.t-content input[type=time]::-webkit-calendar-picker-indicator{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"], dependencies: [{ kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
218
203
  }
219
204
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputTimeComponent, decorators: [{
220
205
  type: Component,
221
206
  args: [{ selector: 'input[tuiInputTime][type="time"]', imports: [TuiTextfieldContent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [TuiWithNativePicker], host: { ngSkipHydration: 'true' }, template: "@if (host.native) {\n <input\n *tuiTextfieldContent\n type=\"time\"\n [attr.list]=\"list\"\n [step]=\"step()\"\n [value]=\"value()\"\n (change)=\"setValue($any($event.target).value)\"\n />\n}\n", styles: ["tui-textfield input[tuiInputTime]~.t-content input[type=time]{position:absolute;right:0;left:auto;inline-size:calc(var(--t-right) + var(--t-padding));opacity:0;margin:0;padding:0}tui-textfield input[tuiInputTime]~.t-content input[type=time]::-webkit-calendar-picker-indicator{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"] }]
222
207
  }] });
223
208
 
224
- const TuiInputTime = [TuiInputTimeDirective, TuiInputTimeComponent];
209
+ const TuiInputTime = [
210
+ TuiInputTimeDirective,
211
+ TuiInputTimeComponent,
212
+ TuiTextfield,
213
+ ];
225
214
 
226
215
  /**
227
216
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-time.mjs","sources":["../../../projects/kit/components/input-time/input-time.options.ts","../../../projects/kit/components/input-time/input-time.directive.ts","../../../projects/kit/components/input-time/input-time.component.ts","../../../projects/kit/components/input-time/input-time.template.html","../../../projects/kit/components/input-time/input-time.ts","../../../projects/kit/components/input-time/taiga-ui-kit-components-input-time.ts"],"sourcesContent":["import {type MaskitoTimeParams} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiInputTimeOptions\n extends Required<\n Pick<MaskitoTimeParams, 'mode' | 'timeSegmentMaxValues' | 'timeSegmentMinValues'>\n > {\n readonly icon: TuiHandler<TuiSizeL | TuiSizeS, string>;\n readonly valueTransformer: TuiValueTransformer<TuiTime | null, any> | null;\n}\n\nexport const TUI_INPUT_TIME_DEFAULT_OPTIONS: TuiInputTimeOptions = {\n icon: () => '@tui.clock',\n mode: 'HH:MM',\n timeSegmentMaxValues: {},\n timeSegmentMinValues: {},\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_TIME_OPTIONS, tuiInputTimeOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_TIME_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, inject, Input, signal, untracked} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions} from '@maskito/core';\nimport {\n maskitoAddOnFocusPlugin,\n maskitoCaretGuard,\n maskitoRemoveOnBlurPlugin,\n maskitoSelectionChangeHandler,\n type MaskitoTimeMode,\n maskitoTimeOptionsGenerator,\n type MaskitoTimeParams,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {TuiTime} from '@taiga-ui/cdk/date-time';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsOptionContent} from '@taiga-ui/core/components/data-list';\nimport {\n tuiAsTextfieldAccessor,\n type TuiTextfieldAccessor,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n tuiTextfieldIconBinding,\n TuiWithNativePicker,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n tuiDropdownEnabled,\n tuiDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\nimport {TUI_TIME_TEXTS} from '@taiga-ui/kit/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_TIME_OPTIONS} from './input-time.options';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputTime]',\n providers: [\n tuiAsControl(TuiInputTimeDirective),\n tuiAsTextfieldAccessor(TuiInputTimeDirective),\n tuiAsAuxiliary(TuiInputTimeDirective),\n tuiValueTransformerFrom(TUI_INPUT_TIME_OPTIONS),\n tuiAsOptionContent(TuiSelectOption),\n ],\n hostDirectives: [TuiWithTextfield, MaskitoDirective],\n host: {\n inputmode: 'numeric',\n '[disabled]': 'disabled()',\n '(click)': 'toggle()',\n '(input)': 'onInput($event.target.value)',\n },\n})\nexport class TuiInputTimeDirective\n extends TuiControl<TuiTime | null>\n implements TuiTextfieldAccessor<TuiTime | null>\n{\n private readonly textfield = inject(TuiTextfieldDirective);\n private readonly dropdown = inject(TuiDropdownDirective);\n private readonly open = tuiDropdownOpen();\n private readonly options = inject(TUI_INPUT_TIME_OPTIONS);\n private readonly fillers = toSignal(inject(TUI_TIME_TEXTS));\n private readonly prefix = signal('');\n private readonly postfix = signal('');\n\n protected readonly icon = tuiTextfieldIconBinding(TUI_INPUT_TIME_OPTIONS);\n protected readonly dropdownEnabled = tuiDropdownEnabled(\n computed(() => !this.native && this.interactive()),\n );\n\n protected readonly filler = tuiDirectiveBinding(\n TuiTextfieldComponent,\n 'fillerSetter',\n computed((filler = this.fillers()?.[this.timeMode()] ?? '') =>\n this.postfix() ? '' : this.prefix() + filler,\n ),\n {},\n );\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n this.computeMask({\n ...this.options,\n mode: this.timeMode(),\n step: this.interactive() && !this.dropdown._content() ? 1 : 0,\n prefix: this.prefix(),\n postfix: this.postfix(),\n }),\n ),\n );\n\n @Input()\n public accept: readonly TuiTime[] = [];\n\n public readonly native =\n !!inject(TuiWithNativePicker, {optional: true}) && inject(TUI_IS_MOBILE);\n\n public readonly timeMode = signal(this.options.mode);\n\n // TODO(v5): use signal inputs\n @Input('mode')\n public set modeSetter(x: MaskitoTimeMode) {\n this.timeMode.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input('prefix')\n public set prefixSetter(x: string) {\n this.prefix.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input('postfix')\n public set postfixSetter(x: string) {\n this.postfix.set(x);\n }\n\n public setValue(value: TuiTime | null): void {\n this.onChange(value);\n\n if (value) {\n this.textfield.value.set(this.stringify(value));\n } else {\n this.textfield.setValue(value);\n }\n\n if (!value && this.dropdownEnabled()) {\n this.open.set(true);\n }\n }\n\n public override writeValue(value: TuiTime | null): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(() => value !== this.value());\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.textfield.value.set(this.stringify(this.value())));\n }\n }\n\n protected onInput(valueWithAffixes: string): void {\n const value = valueWithAffixes\n .replace(this.prefix(), '')\n .replace(this.postfix(), '');\n const time =\n value.length === this.timeMode().length ? TuiTime.fromString(value) : null;\n const newValue =\n this.accept.length && time ? this.findNearestTime(time, this.accept) : time;\n\n this.control?.control?.updateValueAndValidity({emitEvent: false});\n this.onChange(newValue);\n\n if (newValue && newValue !== time) {\n this.textfield.value.set(this.stringify(newValue));\n }\n }\n\n protected toggle(): void {\n this.open.update((x) => !x);\n }\n\n private computeMask(params: Required<MaskitoTimeParams>): MaskitoOptions {\n const options = maskitoTimeOptionsGenerator(params);\n const {mode, prefix, postfix} = params;\n const inputModeSwitchPlugin = maskitoSelectionChangeHandler((element) => {\n element.inputMode =\n element.selectionStart! >= mode.indexOf(' AA') ? 'text' : 'numeric';\n });\n const caretGuardPlugin = maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]);\n\n return {\n ...options,\n plugins: options.plugins.concat(\n caretGuardPlugin,\n maskitoAddOnFocusPlugin(prefix + postfix),\n maskitoRemoveOnBlurPlugin(prefix + postfix),\n mode.includes('AA') ? inputModeSwitchPlugin : [],\n ),\n };\n }\n\n private findNearestTime(value: TuiTime, items: readonly TuiTime[]): TuiTime | null {\n // eslint-disable-next-line no-restricted-syntax\n return items.reduce((previous, current) =>\n Math.abs(current.valueOf() - value.valueOf()) <\n Math.abs(previous.valueOf() - value.valueOf())\n ? current\n : previous,\n );\n }\n\n private stringify(time: TuiTime | null): string {\n return this.prefix() + (time?.toString(this.timeMode()) || '') + this.postfix();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {type MaskitoTimeMode} from '@maskito/kit';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {type TuiDay, TuiTime} from '@taiga-ui/cdk/date-time';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n TuiTextfieldContent,\n TuiTextfieldDirective,\n TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputTimeDirective} from './input-time.directive';\n\n@Directive({\n standalone: false,\n host: {\n '[attr.list]': 'null',\n },\n})\nexport abstract class TuiNativeTimePicker {\n protected readonly list = tuiInjectElement().getAttribute('list');\n\n protected getStep(timeMode: MaskitoTimeMode): number {\n switch (timeMode) {\n case 'HH:MM:SS':\n case 'HH:MM:SS AA':\n return 1;\n case 'HH:MM:SS.MSS':\n case 'HH:MM:SS.MSS AA':\n return 0.001;\n default:\n return 60;\n }\n }\n\n protected toISOString(\n value: TuiTime | readonly [TuiDay, TuiTime | null] | null,\n ): string {\n const [day, time] = Array.isArray(value) ? value : [null, value];\n const dateString = day ? day.toJSON() + (time ? 'T' : '') : '';\n const timeString = time ? time.toString('HH:MM:SS.MSS') : '';\n\n return dateString + timeString;\n }\n}\n\n@Component({\n selector: 'input[tuiInputTime][type=\"time\"]',\n imports: [TuiTextfieldContent],\n templateUrl: './input-time.template.html',\n styleUrls: ['./input-time.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiWithNativePicker],\n host: {ngSkipHydration: 'true'},\n})\nexport class TuiInputTimeComponent extends TuiNativeTimePicker {\n private readonly control: TuiControl<TuiTime | null> = inject(TuiControl);\n\n protected readonly host = inject(TuiInputTimeDirective);\n\n protected readonly textfield = inject(TuiTextfieldDirective);\n protected readonly value = computed(() => this.toISOString(this.control.value()));\n\n protected readonly step = computed(() => this.getStep(this.host.timeMode()));\n\n protected setValue(value: string): void {\n this.host.setValue(TuiTime.fromString(value));\n }\n}\n","@if (host.native) {\n <input\n *tuiTextfieldContent\n type=\"time\"\n [attr.list]=\"list\"\n [step]=\"step()\"\n [value]=\"value()\"\n (change)=\"setValue($any($event.target).value)\"\n />\n}\n","import {TuiInputTimeComponent} from './input-time.component';\nimport {TuiInputTimeDirective} from './input-time.directive';\n\nexport const TuiInputTime = [TuiInputTimeDirective, TuiInputTimeComponent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-time.mjs","sources":["../../../projects/kit/components/input-time/input-time.options.ts","../../../projects/kit/components/input-time/input-time.directive.ts","../../../projects/kit/components/input-time/input-time.component.ts","../../../projects/kit/components/input-time/input-time.template.html","../../../projects/kit/components/input-time/input-time.ts","../../../projects/kit/components/input-time/taiga-ui-kit-components-input-time.ts"],"sourcesContent":["import {type MaskitoTimeParams} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiInputTimeOptions\n extends Required<\n Pick<MaskitoTimeParams, 'mode' | 'timeSegmentMaxValues' | 'timeSegmentMinValues'>\n > {\n readonly icon: TuiHandler<TuiSizeL | TuiSizeS, string>;\n readonly valueTransformer: TuiValueTransformer<TuiTime | null, any> | null;\n}\n\nexport const TUI_INPUT_TIME_DEFAULT_OPTIONS: TuiInputTimeOptions = {\n icon: () => '@tui.clock',\n mode: 'HH:MM',\n timeSegmentMaxValues: {},\n timeSegmentMinValues: {},\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_TIME_OPTIONS, tuiInputTimeOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_TIME_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, inject, input, untracked} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions} from '@maskito/core';\nimport {\n maskitoAddOnFocusPlugin,\n maskitoCaretGuard,\n maskitoRemoveOnBlurPlugin,\n maskitoSelectionChangeHandler,\n type MaskitoTimeMode,\n maskitoTimeOptionsGenerator,\n type MaskitoTimeParams,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {TuiTime} from '@taiga-ui/cdk/date-time';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {tuiAsOptionContent} from '@taiga-ui/core/components/data-list';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n tuiAsTextfieldAccessor,\n type TuiTextfieldAccessor,\n TuiTextfieldComponent,\n tuiTextfieldIcon,\n TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n tuiDropdownEnabled,\n TuiDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\nimport {TUI_TIME_TEXTS} from '@taiga-ui/kit/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_TIME_OPTIONS} from './input-time.options';\n\n@Directive({\n selector: 'input[tuiInputTime]',\n providers: [\n tuiAsControl(TuiInputTimeDirective),\n tuiAsTextfieldAccessor(TuiInputTimeDirective),\n tuiValueTransformerFrom(TUI_INPUT_TIME_OPTIONS),\n tuiAsOptionContent(TuiSelectOption),\n ],\n hostDirectives: [TuiWithInput, MaskitoDirective],\n host: {\n inputmode: 'numeric',\n '[disabled]': 'disabled()',\n '(click)': 'toggle()',\n '(input)': 'onInput($event.target.value)',\n '(blur)': 'onBlur($event.target.value)',\n },\n})\nexport class TuiInputTimeDirective\n extends TuiControl<TuiTime | null>\n implements TuiTextfieldAccessor<TuiTime | null>\n{\n private readonly input = inject(TuiInputDirective);\n private readonly dropdown = inject(TuiDropdownDirective);\n private readonly open = inject(TuiDropdownOpen).open;\n private readonly options = inject(TUI_INPUT_TIME_OPTIONS);\n private readonly fillers = inject(TUI_TIME_TEXTS);\n protected readonly icon = tuiTextfieldIcon(TUI_INPUT_TIME_OPTIONS);\n protected readonly dropdownEnabled = tuiDropdownEnabled(\n computed(() => !this.native && this.interactive()),\n );\n\n protected readonly filler = tuiDirectiveBinding(\n TuiTextfieldComponent,\n 'filler',\n computed((filler = this.fillers()?.[this.timeMode()] ?? '') =>\n this.postfix() ? '' : this.prefix() + filler,\n ),\n {},\n );\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n this.computeMask({\n ...this.options,\n mode: this.timeMode(),\n step: this.interactive() && !this.dropdown.content() ? 1 : 0,\n prefix: this.prefix(),\n postfix: this.postfix(),\n }),\n ),\n );\n\n public readonly accept = input<readonly TuiTime[]>([]);\n public readonly timeMode = input<MaskitoTimeMode>(this.options.mode, {alias: 'mode'});\n public readonly prefix = input('');\n public readonly postfix = input('');\n public readonly native =\n !!inject(TuiWithNativePicker, {optional: true}) && inject(TUI_IS_MOBILE);\n\n public setValue(value: TuiTime | null): void {\n this.onChange(value);\n\n if (value) {\n this.input.value.set(this.stringify(value));\n } else {\n this.input.setValue(value);\n }\n\n if (!value && this.dropdownEnabled()) {\n this.open.set(true);\n }\n }\n\n public override writeValue(value: TuiTime | null): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(() => value !== this.value());\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.input.value.set(this.stringify(this.value())));\n }\n }\n\n protected onInput(valueWithAffixes: string): void {\n const value = valueWithAffixes\n .replace(this.prefix(), '')\n .replace(this.postfix(), '');\n const time =\n value.length === this.timeMode().length ? TuiTime.fromString(value) : null;\n const newValue =\n this.accept().length && time\n ? this.findNearestTime(time, this.accept())\n : time;\n\n this.control?.control?.updateValueAndValidity({emitEvent: false});\n this.onChange(newValue);\n\n if (newValue && newValue !== time) {\n this.input.value.set(this.stringify(newValue));\n }\n }\n\n protected toggle(): void {\n this.open.update((x) => !x);\n }\n\n protected onBlur(valueWithAffixes: string): void {\n const value = valueWithAffixes\n .replace(this.prefix(), '')\n .replace(this.postfix(), '');\n\n if (value && !this.value()) {\n const time = TuiTime.fromString(value);\n\n const newValue = this.accept().length\n ? this.findNearestTime(time, this.accept())\n : time;\n\n this.control?.control?.updateValueAndValidity({emitEvent: false});\n this.onChange(newValue);\n\n if (newValue) {\n this.input.value.set(this.stringify(newValue));\n }\n }\n }\n\n private computeMask(params: Required<MaskitoTimeParams>): MaskitoOptions {\n const options = maskitoTimeOptionsGenerator(params);\n const {mode, prefix, postfix} = params;\n const inputModeSwitchPlugin = maskitoSelectionChangeHandler((element) => {\n element.inputMode =\n element.selectionStart! >= mode.indexOf(' AA') ? 'text' : 'numeric';\n });\n const caretGuardPlugin = maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]);\n\n return {\n ...options,\n plugins: options.plugins.concat(\n caretGuardPlugin,\n maskitoAddOnFocusPlugin(prefix + postfix),\n maskitoRemoveOnBlurPlugin(prefix + postfix),\n mode.includes('AA') ? inputModeSwitchPlugin : [],\n ),\n };\n }\n\n private findNearestTime(value: TuiTime, items: readonly TuiTime[]): TuiTime | null {\n // eslint-disable-next-line no-restricted-syntax\n return items.reduce((previous, current) =>\n Math.abs(current.valueOf() - value.valueOf()) <\n Math.abs(previous.valueOf() - value.valueOf())\n ? current\n : previous,\n );\n }\n\n private stringify(time: TuiTime | null): string {\n return this.prefix() + (time?.toString(this.timeMode()) || '') + this.postfix();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {type MaskitoTimeMode} from '@maskito/kit';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {type TuiDay, TuiTime} from '@taiga-ui/cdk/date-time';\nimport {\n TuiTextfieldContent,\n TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputTimeDirective} from './input-time.directive';\n\n@Directive({host: {'[attr.list]': 'null'}})\nexport abstract class TuiNativeTimePicker {\n protected readonly list = inject(new HostAttributeToken('list'), {optional: true});\n\n protected getStep(timeMode: MaskitoTimeMode): number {\n switch (timeMode) {\n case 'HH:MM:SS':\n case 'HH:MM:SS AA':\n return 1;\n case 'HH:MM:SS.MSS':\n case 'HH:MM:SS.MSS AA':\n return 0.001;\n default:\n return 60;\n }\n }\n\n protected toISOString(\n value: TuiTime | readonly [TuiDay, TuiTime | null] | null,\n ): string {\n const [day, time] = Array.isArray(value) ? value : [null, value];\n const dateString = day ? day.toJSON() + (time ? 'T' : '') : '';\n const timeString = time ? time.toString('HH:MM:SS.MSS') : '';\n\n return dateString + timeString;\n }\n}\n\n@Component({\n selector: 'input[tuiInputTime][type=\"time\"]',\n imports: [TuiTextfieldContent],\n templateUrl: './input-time.template.html',\n styleUrl: './input-time.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiWithNativePicker],\n host: {ngSkipHydration: 'true'},\n})\nexport class TuiInputTimeComponent extends TuiNativeTimePicker {\n private readonly control: TuiControl<TuiTime | null> = inject(TuiControl);\n\n protected readonly host = inject(TuiInputTimeDirective);\n protected readonly value = computed(() => this.toISOString(this.control.value()));\n protected readonly step = computed(() => this.getStep(this.host.timeMode()));\n\n protected setValue(value: string): void {\n this.host.setValue(TuiTime.fromString(value));\n }\n}\n","@if (host.native) {\n <input\n *tuiTextfieldContent\n type=\"time\"\n [attr.list]=\"list\"\n [step]=\"step()\"\n [value]=\"value()\"\n (change)=\"setValue($any($event.target).value)\"\n />\n}\n","import {TuiTextfield} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputTimeComponent} from './input-time.component';\nimport {TuiInputTimeDirective} from './input-time.directive';\n\nexport const TuiInputTime = [\n TuiInputTimeDirective,\n TuiInputTimeComponent,\n TuiTextfield,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}