@taiga-ui/kit 5.0.0-canary.26e65fa → 5.0.0-canary.2b8a055

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 (299) hide show
  1. package/components/accordion/accordion.component.d.ts +4 -1
  2. package/components/accordion/accordion.directive.d.ts +1 -0
  3. package/components/calendar-month/calendar-month.component.d.ts +11 -18
  4. package/components/calendar-range/calendar-range.component.d.ts +6 -10
  5. package/components/combo-box/combo-box.directive.d.ts +1 -0
  6. package/components/copy/button-copy.component.d.ts +17 -0
  7. package/components/copy/copy.d.ts +2 -1
  8. package/components/copy/copy.directive.d.ts +5 -2
  9. package/components/copy/copy.options.d.ts +1 -3
  10. package/components/copy/index.d.ts +1 -0
  11. package/components/counter/counter.component.d.ts +17 -0
  12. package/components/counter/counter.options.d.ts +14 -0
  13. package/components/counter/index.d.ts +2 -0
  14. package/components/index.d.ts +3 -3
  15. package/components/input-chip/input-chip.component.d.ts +5 -0
  16. package/components/input-chip/input-chip.directive.d.ts +1 -1
  17. package/components/input-date/input-date.directive.d.ts +3 -2
  18. package/components/input-date/input-date.options.d.ts +2 -4
  19. package/components/input-date-multi/input-date-multi.directive.d.ts +1 -1
  20. package/components/input-date-time/input-date-time.component.d.ts +2 -2
  21. package/components/input-month/input-month.directive.d.ts +1 -1
  22. package/components/input-month/input-month.options.d.ts +1 -7
  23. package/components/input-month-range/input-month-range.directive.d.ts +1 -1
  24. package/components/input-month-range/input-month-range.options.d.ts +1 -3
  25. package/components/input-number/index.d.ts +1 -0
  26. package/components/input-number/input-number.directive.d.ts +1 -0
  27. package/components/input-number/number-mask.directive.d.ts +1 -1
  28. package/components/input-number/step/input-number-step.component.d.ts +3 -5
  29. package/components/input-number/step/input-number-step.service.d.ts +12 -0
  30. package/components/input-phone/input-phone.directive.d.ts +1 -1
  31. package/components/input-range/input-range.component.d.ts +2 -1
  32. package/components/input-slider/input-slider.d.ts +1 -1
  33. package/components/input-time/input-time.directive.d.ts +1 -1
  34. package/components/input-time/input-time.options.d.ts +1 -3
  35. package/components/input-year/input-year.directive.d.ts +1 -1
  36. package/components/line-clamp/line-clamp-box.component.d.ts +2 -0
  37. package/components/line-clamp/line-clamp.component.d.ts +5 -3
  38. package/components/multi-select/multi-select-group/multi-select-group.directive.d.ts +1 -0
  39. package/components/multi-select/multi-select-native/multi-select-native.component.d.ts +1 -1
  40. package/components/range/range.component.d.ts +2 -2
  41. package/components/select/native-select/native-select.component.d.ts +1 -1
  42. package/components/select/select-option/select-option.component.d.ts +1 -1
  43. package/components/shrink-wrap/index.d.ts +3 -0
  44. package/components/shrink-wrap/shrink-wrap.component.d.ts +5 -0
  45. package/components/shrink-wrap/shrink-wrap.d.ts +3 -0
  46. package/components/shrink-wrap/shrink-wrap.directive.d.ts +6 -0
  47. package/components/stepper/step.component.d.ts +1 -1
  48. package/components/switch/switch.component.d.ts +1 -1
  49. package/components/switch/switch.options.d.ts +1 -1
  50. package/components/tabs/tabs-with-more.component.d.ts +3 -3
  51. package/components/textarea/textarea.directive.d.ts +1 -1
  52. package/components/timeline/index.d.ts +3 -0
  53. package/components/timeline/timeline-item.component.d.ts +14 -0
  54. package/components/timeline/timeline.component.d.ts +16 -0
  55. package/components/timeline/timeline.d.ts +3 -0
  56. package/components/toast/toast.directive.d.ts +4 -1
  57. package/directives/password/password.options.d.ts +2 -4
  58. package/fesm2022/taiga-ui-kit-components-accordion.mjs +20 -10
  59. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-kit-components-action-bar.mjs +5 -5
  61. package/fesm2022/taiga-ui-kit-components-action-bar.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-kit-components-avatar.mjs +24 -25
  63. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs +4 -6
  65. package/fesm2022/taiga-ui-kit-components-badge-notification.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-kit-components-badge.mjs +8 -7
  67. package/fesm2022/taiga-ui-kit-components-badge.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-kit-components-badged-content.mjs +8 -10
  69. package/fesm2022/taiga-ui-kit-components-badged-content.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-kit-components-block.mjs +8 -7
  71. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +5 -7
  73. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-kit-components-button-loading.mjs +3 -3
  75. package/fesm2022/taiga-ui-kit-components-button-loading.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +36 -50
  77. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +47 -63
  79. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-kit-components-carousel.mjs +18 -22
  81. package/fesm2022/taiga-ui-kit-components-carousel.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-kit-components-chip.mjs +9 -8
  83. package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-kit-components-combo-box.mjs +9 -5
  85. package/fesm2022/taiga-ui-kit-components-combo-box.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-kit-components-comment.mjs +12 -8
  87. package/fesm2022/taiga-ui-kit-components-comment.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-kit-components-compass.mjs +6 -4
  89. package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-kit-components-confirm.mjs +7 -7
  91. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-kit-components-copy.mjs +91 -28
  93. package/fesm2022/taiga-ui-kit-components-copy.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-kit-components-counter.mjs +66 -0
  95. package/fesm2022/taiga-ui-kit-components-counter.mjs.map +1 -0
  96. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs +7 -7
  97. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-kit-components-drawer.mjs +4 -4
  99. package/fesm2022/taiga-ui-kit-components-drawer.mjs.map +1 -1
  100. package/fesm2022/taiga-ui-kit-components-files.mjs +28 -32
  101. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-kit-components-filter.mjs +4 -6
  103. package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-kit-components-fullscreen.mjs +3 -3
  105. package/fesm2022/taiga-ui-kit-components-fullscreen.mjs.map +1 -1
  106. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +21 -15
  107. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  108. package/fesm2022/taiga-ui-kit-components-input-color.mjs +7 -7
  109. package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +12 -14
  111. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
  112. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +3 -3
  113. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
  114. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +10 -11
  115. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -1
  116. package/fesm2022/taiga-ui-kit-components-input-date.mjs +33 -24
  117. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  118. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +4 -4
  119. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  120. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +10 -6
  121. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  122. package/fesm2022/taiga-ui-kit-components-input-month.mjs +16 -20
  123. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  124. package/fesm2022/taiga-ui-kit-components-input-number.mjs +84 -59
  125. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  126. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +5 -5
  127. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  128. package/fesm2022/taiga-ui-kit-components-input-phone.mjs +6 -6
  129. package/fesm2022/taiga-ui-kit-components-input-phone.mjs.map +1 -1
  130. package/fesm2022/taiga-ui-kit-components-input-pin.mjs +4 -4
  131. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  132. package/fesm2022/taiga-ui-kit-components-input-range.mjs +8 -4
  133. package/fesm2022/taiga-ui-kit-components-input-range.mjs.map +1 -1
  134. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +7 -7
  135. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  136. package/fesm2022/taiga-ui-kit-components-input-time.mjs +14 -13
  137. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  138. package/fesm2022/taiga-ui-kit-components-input-year.mjs +11 -9
  139. package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
  140. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +15 -17
  141. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs.map +1 -1
  142. package/fesm2022/taiga-ui-kit-components-like.mjs +6 -5
  143. package/fesm2022/taiga-ui-kit-components-like.mjs.map +1 -1
  144. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +25 -16
  145. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  146. package/fesm2022/taiga-ui-kit-components-message.mjs +8 -7
  147. package/fesm2022/taiga-ui-kit-components-message.mjs.map +1 -1
  148. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +27 -22
  149. package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
  150. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs +12 -14
  151. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs.map +1 -1
  152. package/fesm2022/taiga-ui-kit-components-pager.mjs +3 -3
  153. package/fesm2022/taiga-ui-kit-components-pager.mjs.map +1 -1
  154. package/fesm2022/taiga-ui-kit-components-pagination.mjs +4 -4
  155. package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
  156. package/fesm2022/taiga-ui-kit-components-pin.mjs +9 -7
  157. package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
  158. package/fesm2022/taiga-ui-kit-components-preview.mjs +33 -37
  159. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  160. package/fesm2022/taiga-ui-kit-components-progress.mjs +30 -32
  161. package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
  162. package/fesm2022/taiga-ui-kit-components-pulse.mjs +3 -3
  163. package/fesm2022/taiga-ui-kit-components-pulse.mjs.map +1 -1
  164. package/fesm2022/taiga-ui-kit-components-push.mjs +14 -16
  165. package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
  166. package/fesm2022/taiga-ui-kit-components-radio-list.mjs +7 -6
  167. package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
  168. package/fesm2022/taiga-ui-kit-components-range.mjs +23 -20
  169. package/fesm2022/taiga-ui-kit-components-range.mjs.map +1 -1
  170. package/fesm2022/taiga-ui-kit-components-rating.mjs +4 -4
  171. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  172. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs +4 -6
  173. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs.map +1 -1
  174. package/fesm2022/taiga-ui-kit-components-segmented.mjs +10 -16
  175. package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
  176. package/fesm2022/taiga-ui-kit-components-select.mjs +21 -23
  177. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  178. package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs +39 -0
  179. package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs.map +1 -0
  180. package/fesm2022/taiga-ui-kit-components-status.mjs +9 -7
  181. package/fesm2022/taiga-ui-kit-components-status.mjs.map +1 -1
  182. package/fesm2022/taiga-ui-kit-components-stepper.mjs +8 -8
  183. package/fesm2022/taiga-ui-kit-components-stepper.mjs.map +1 -1
  184. package/fesm2022/taiga-ui-kit-components-switch.mjs +6 -5
  185. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  186. package/fesm2022/taiga-ui-kit-components-tabs.mjs +40 -37
  187. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  188. package/fesm2022/taiga-ui-kit-components-textarea.mjs +18 -19
  189. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  190. package/fesm2022/taiga-ui-kit-components-tiles.mjs +13 -15
  191. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  192. package/fesm2022/taiga-ui-kit-components-timeline.mjs +68 -0
  193. package/fesm2022/taiga-ui-kit-components-timeline.mjs.map +1 -0
  194. package/fesm2022/taiga-ui-kit-components-toast.mjs +30 -27
  195. package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -1
  196. package/fesm2022/taiga-ui-kit-components-tree.mjs +28 -36
  197. package/fesm2022/taiga-ui-kit-components-tree.mjs.map +1 -1
  198. package/fesm2022/taiga-ui-kit-components.mjs +3 -3
  199. package/fesm2022/taiga-ui-kit-directives-appearance-proxy.mjs +3 -3
  200. package/fesm2022/taiga-ui-kit-directives-appearance-proxy.mjs.map +1 -1
  201. package/fesm2022/taiga-ui-kit-directives-button-group.mjs +8 -10
  202. package/fesm2022/taiga-ui-kit-directives-button-group.mjs.map +1 -1
  203. package/fesm2022/taiga-ui-kit-directives-button-select.mjs +3 -3
  204. package/fesm2022/taiga-ui-kit-directives-button-select.mjs.map +1 -1
  205. package/fesm2022/taiga-ui-kit-directives-chevron.mjs +7 -7
  206. package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
  207. package/fesm2022/taiga-ui-kit-directives-connected.mjs +8 -10
  208. package/fesm2022/taiga-ui-kit-directives-connected.mjs.map +1 -1
  209. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs +4 -6
  210. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs.map +1 -1
  211. package/fesm2022/taiga-ui-kit-directives-fade.mjs +7 -7
  212. package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
  213. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +4 -4
  214. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs.map +1 -1
  215. package/fesm2022/taiga-ui-kit-directives-highlight.mjs +3 -3
  216. package/fesm2022/taiga-ui-kit-directives-highlight.mjs.map +1 -1
  217. package/fesm2022/taiga-ui-kit-directives-password.mjs +4 -10
  218. package/fesm2022/taiga-ui-kit-directives-password.mjs.map +1 -1
  219. package/fesm2022/taiga-ui-kit-directives-present.mjs +3 -3
  220. package/fesm2022/taiga-ui-kit-directives-present.mjs.map +1 -1
  221. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs +7 -7
  222. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
  223. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs +6 -6
  224. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs.map +1 -1
  225. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs +6 -6
  226. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
  227. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +7 -7
  228. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
  229. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs +3 -3
  230. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs.map +1 -1
  231. package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs +3 -3
  232. package/fesm2022/taiga-ui-kit-directives-unmask-handler.mjs.map +1 -1
  233. package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs +4 -6
  234. package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs.map +1 -1
  235. package/fesm2022/taiga-ui-kit-pipes-emails.mjs +4 -6
  236. package/fesm2022/taiga-ui-kit-pipes-emails.mjs.map +1 -1
  237. package/fesm2022/taiga-ui-kit-pipes-flag.mjs +4 -6
  238. package/fesm2022/taiga-ui-kit-pipes-flag.mjs.map +1 -1
  239. package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs +4 -4
  240. package/fesm2022/taiga-ui-kit-pipes-hide-selected.mjs.map +1 -1
  241. package/fesm2022/taiga-ui-kit-pipes-initials.mjs +4 -6
  242. package/fesm2022/taiga-ui-kit-pipes-initials.mjs.map +1 -1
  243. package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs +3 -3
  244. package/fesm2022/taiga-ui-kit-pipes-sort-countries.mjs.map +1 -1
  245. package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs +4 -6
  246. package/fesm2022/taiga-ui-kit-pipes-stringify-content.mjs.map +1 -1
  247. package/fesm2022/taiga-ui-kit-pipes-stringify.mjs +4 -6
  248. package/fesm2022/taiga-ui-kit-pipes-stringify.mjs.map +1 -1
  249. package/fesm2022/taiga-ui-kit-pipes.mjs +0 -1
  250. package/fesm2022/taiga-ui-kit-pipes.mjs.map +1 -1
  251. package/fesm2022/taiga-ui-kit-tokens.mjs +18 -54
  252. package/fesm2022/taiga-ui-kit-tokens.mjs.map +1 -1
  253. package/fesm2022/taiga-ui-kit-utils.mjs +1 -5
  254. package/fesm2022/taiga-ui-kit-utils.mjs.map +1 -1
  255. package/package.json +56 -61
  256. package/pipes/index.d.ts +0 -1
  257. package/tokens/i18n.d.ts +0 -1
  258. package/utils/index.d.ts +0 -1
  259. package/components/checkbox/checkbox.component.d.ts +0 -10
  260. package/components/checkbox/checkbox.options.d.ts +0 -10
  261. package/components/checkbox/index.d.ts +0 -2
  262. package/components/radio/index.d.ts +0 -4
  263. package/components/radio/radio.component.d.ts +0 -18
  264. package/components/radio/radio.d.ts +0 -3
  265. package/components/radio/radio.directive.d.ts +0 -8
  266. package/components/radio/radio.options.d.ts +0 -7
  267. package/components/slider/helpers/key-steps.d.ts +0 -27
  268. package/components/slider/helpers/slider-key-steps.directive.d.ts +0 -32
  269. package/components/slider/helpers/slider-readonly.directive.d.ts +0 -15
  270. package/components/slider/helpers/slider-thumb-label.component.d.ts +0 -13
  271. package/components/slider/index.d.ts +0 -6
  272. package/components/slider/slider.component.d.ts +0 -22
  273. package/components/slider/slider.d.ts +0 -5
  274. package/fesm2022/taiga-ui-kit-components-checkbox.mjs +0 -36
  275. package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +0 -1
  276. package/fesm2022/taiga-ui-kit-components-radio.mjs +0 -93
  277. package/fesm2022/taiga-ui-kit-components-radio.mjs.map +0 -1
  278. package/fesm2022/taiga-ui-kit-components-slider.mjs +0 -343
  279. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +0 -1
  280. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs +0 -60
  281. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs.map +0 -1
  282. package/pipes/filter-by-input/filter-by-input.pipe.d.ts +0 -21
  283. package/pipes/filter-by-input/index.d.ts +0 -1
  284. package/styles/components/avatar.less +0 -188
  285. package/styles/components/badge.less +0 -127
  286. package/styles/components/block.less +0 -118
  287. package/styles/components/checkbox.less +0 -84
  288. package/styles/components/chip.less +0 -139
  289. package/styles/components/comment.less +0 -64
  290. package/styles/components/compass.less +0 -49
  291. package/styles/components/like.less +0 -67
  292. package/styles/components/message.less +0 -33
  293. package/styles/components/pin.less +0 -164
  294. package/styles/components/progress-bar.less +0 -117
  295. package/styles/components/radio.less +0 -59
  296. package/styles/components/status.less +0 -40
  297. package/styles/components/switch.less +0 -103
  298. package/styles/components/toast.less +0 -44
  299. package/utils/is-flat.d.ts +0 -1
@@ -1,24 +1,73 @@
1
- import * as i1 from '@angular/cdk/clipboard';
2
- import { ClipboardModule } from '@angular/cdk/clipboard';
1
+ import * as i1$1 from '@angular/cdk/clipboard';
2
+ import { Clipboard, ClipboardModule } from '@angular/cdk/clipboard';
3
3
  import * as i0 from '@angular/core';
4
- import { inject, input, ChangeDetectionStrategy, Component, Directive } from '@angular/core';
4
+ import { inject, signal, computed, input, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive } from '@angular/core';
5
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
6
+ import { tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
7
+ import * as i1 from '@taiga-ui/core/components/button';
8
+ import { tuiButtonOptionsProvider, TuiButton } from '@taiga-ui/core/components/button';
9
+ import { TUI_NOTIFICATION_OPTIONS } from '@taiga-ui/core/components/notification';
10
+ import { tuiIconStart, tuiIconEnd } from '@taiga-ui/core/directives/icons';
11
+ import { TUI_COPY_TEXTS } from '@taiga-ui/kit/tokens';
12
+ import { tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
5
13
  import { toSignal, toObservable } from '@angular/core/rxjs-interop';
6
14
  import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
7
- import { tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
8
- import { TuiButton } from '@taiga-ui/core/components/button';
9
15
  import { TuiIcon } from '@taiga-ui/core/components/icon';
10
- import { TUI_NOTIFICATION_OPTIONS } from '@taiga-ui/core/components/notification';
11
16
  import * as i2 from '@taiga-ui/core/portals/hint';
12
17
  import { TuiHint, TuiHintDirective } from '@taiga-ui/core/portals/hint';
13
- import { TUI_COPY_TEXTS } from '@taiga-ui/kit/tokens';
14
18
  import { BehaviorSubject, switchMap, timer, map, startWith, Subject } from 'rxjs';
15
- import { tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
16
- import { DOCUMENT } from '@angular/common';
17
- import { TuiTextfieldComponent, tuiTextfieldIcon } from '@taiga-ui/core/components/textfield';
18
- import * as i1$1 from '@taiga-ui/core/directives/appearance';
19
+ import { TuiTextfieldComponent } from '@taiga-ui/core/components/textfield';
20
+ import * as i1$2 from '@taiga-ui/core/directives/appearance';
19
21
  import { TUI_APPEARANCE_OPTIONS, TuiWithAppearance } from '@taiga-ui/core/directives/appearance';
22
+ import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
23
+
24
+ const [TUI_COPY_OPTIONS, tuiCopyOptionsProvider] = tuiCreateOptions({ icon: '@tui.copy' });
20
25
 
21
- const [TUI_COPY_OPTIONS, tuiCopyOptionsProvider] = tuiCreateOptions({ icon: () => '@tui.copy' });
26
+ class TuiButtonCopy {
27
+ constructor() {
28
+ this.el = tuiInjectElement();
29
+ this.clipboard = inject(Clipboard);
30
+ this.options = inject(TUI_COPY_OPTIONS);
31
+ this.copyTexts = inject(TUI_COPY_TEXTS);
32
+ this.notification = inject(TUI_NOTIFICATION_OPTIONS);
33
+ this.check = tuiIsString(this.notification.icon)
34
+ ? this.notification.icon
35
+ : this.notification.icon('positive');
36
+ this.copied = signal(false);
37
+ this.copiedText = computed(() => this.copyTexts()[1]);
38
+ this.icon = tuiIconStart(computed(() => (this.copied() ? this.check : this.options.icon)));
39
+ this.tuiButtonCopy = input('');
40
+ }
41
+ copy(target) {
42
+ const copied = this.el === target;
43
+ if (copied) {
44
+ this.clipboard.copy(this.tuiButtonCopy());
45
+ }
46
+ this.copied.set(copied);
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiButtonCopy, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TuiButtonCopy, isStandalone: true, selector: "[tuiButtonCopy]", inputs: { tuiButtonCopy: { classPropertyName: "tuiButtonCopy", publicName: "tuiButtonCopy", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tuiButton": "", "type": "button" }, listeners: { "document:click.capture": "copy($event.target)" } }, providers: [tuiButtonOptionsProvider({ appearance: 'flat-grayscale', size: 's' })], hostDirectives: [{ directive: i1.TuiButton }], ngImport: i0, template: `
50
+ @if (copied()) {
51
+ {{ copiedText() }}
52
+ } @else {
53
+ <ng-content />
54
+ }
55
+ `, isInline: true, styles: ["tui-hint:has([tuiButtonCopy]){display:flex;padding:.375rem;max-inline-size:none}[tuiButtonCopy]:not(:first-of-type){margin-inline-start:calc(.75rem - 1px);border-image:linear-gradient(transparent .375rem,var(--tui-border-normal) .375rem,var(--tui-border-normal) calc(100% - .375rem),transparent calc(100% - .375rem)) 0 0 0 1 / 0 1px / 0 .375rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiButtonCopy, decorators: [{
58
+ type: Component,
59
+ args: [{ selector: '[tuiButtonCopy]', template: `
60
+ @if (copied()) {
61
+ {{ copiedText() }}
62
+ } @else {
63
+ <ng-content />
64
+ }
65
+ `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiButtonOptionsProvider({ appearance: 'flat-grayscale', size: 's' })], hostDirectives: [TuiButton], host: {
66
+ tuiButton: '',
67
+ type: 'button',
68
+ '(document:click.capture)': 'copy($event.target)',
69
+ }, styles: ["tui-hint:has([tuiButtonCopy]){display:flex;padding:.375rem;max-inline-size:none}[tuiButtonCopy]:not(:first-of-type){margin-inline-start:calc(.75rem - 1px);border-image:linear-gradient(transparent .375rem,var(--tui-border-normal) .375rem,var(--tui-border-normal) calc(100% - .375rem),transparent calc(100% - .375rem)) 0 0 0 1 / 0 1px / 0 .375rem}\n"] }]
70
+ }] });
22
71
 
23
72
  class TuiCopyComponent {
24
73
  constructor() {
@@ -34,40 +83,54 @@ class TuiCopyComponent {
34
83
  ? this.notification.icon
35
84
  : this.notification.icon('positive');
36
85
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiCopyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: TuiCopyComponent, isStandalone: true, selector: "tui-copy", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerdown": "copied$.next(false)" }, properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "<span\n #content\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"options.icon(size())\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()[1] }}\n</ng-template>\n", styles: [":host{cursor:pointer}:host[data-size=m]{--t-size: min( calc(1em + 1px) , 1rem)}:host[data-size=l]{--t-size: max(calc(1em / 1.57), min(max(calc(1em / 1.18), 1.25rem), 1.5rem))}@media (hover: hover) and (pointer: fine){:host:hover .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}:host:hover .t-button{opacity:1}}:host:has(.t-button:focus-visible) .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}.t-content{transition-property:opacity,mask;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;-webkit-mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0;mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0}.t-button{position:sticky;inset-inline-start:0;opacity:0;border-radius:0;font-size:inherit!important;margin-inline-start:calc(-1 * var(--t-size));--t-size: inherit}.t-button:before{font-size:var(--t-size)}.t-button:focus-visible{opacity:1}.t-icon{font-size:1rem;margin-inline-end:.25rem;vertical-align:sub;color:var(--tui-text-positive)}\n"], dependencies: [{ kind: "ngmodule", type: ClipboardModule }, { kind: "directive", type: i1.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCopyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.19", type: TuiCopyComponent, isStandalone: true, selector: "tui-copy", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerdown": "copied$.next(false)" }, properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "<span\n #content\n tuiHintAppearance=\"floating\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"options.icon\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()[1] }}\n</ng-template>\n", styles: [":host{cursor:pointer}:host[data-size=m]{--t-size: min( calc(1em + 1px) , 1rem)}:host[data-size=l]{--t-size: max(calc(1em / 1.57), min(max(calc(1em / 1.18), 1.25rem), 1.5rem))}@media (hover: hover) and (pointer: fine){:host:hover .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}:host:hover .t-button{opacity:1}}:host:has(.t-button:focus-visible) .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}.t-content{transition-property:opacity,mask;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;-webkit-mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0;mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0}.t-button{position:sticky;inset-inline-start:0;opacity:0;border-radius:0;font-size:inherit!important;margin-inline-start:calc(-1 * var(--t-size));--t-size: inherit}.t-button:before{font-size:var(--t-size)}.t-button:focus-visible{opacity:1}.t-icon{font-size:1rem;margin-inline-end:.25rem;vertical-align:sub;color:var(--tui-text-positive)}\n"], dependencies: [{ kind: "ngmodule", type: ClipboardModule }, { kind: "directive", type: i1$1.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
88
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiCopyComponent, decorators: [{
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCopyComponent, decorators: [{
41
90
  type: Component,
42
91
  args: [{ selector: 'tui-copy', imports: [ClipboardModule, TuiButton, TuiHint, TuiIcon], changeDetection: ChangeDetectionStrategy.OnPush, host: {
43
92
  '[attr.data-size]': 'size()',
44
93
  '(pointerdown)': 'copied$.next(false)',
45
- }, template: "<span\n #content\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"options.icon(size())\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()[1] }}\n</ng-template>\n", styles: [":host{cursor:pointer}:host[data-size=m]{--t-size: min( calc(1em + 1px) , 1rem)}:host[data-size=l]{--t-size: max(calc(1em / 1.57), min(max(calc(1em / 1.18), 1.25rem), 1.5rem))}@media (hover: hover) and (pointer: fine){:host:hover .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}:host:hover .t-button{opacity:1}}:host:has(.t-button:focus-visible) .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}.t-content{transition-property:opacity,mask;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;-webkit-mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0;mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0}.t-button{position:sticky;inset-inline-start:0;opacity:0;border-radius:0;font-size:inherit!important;margin-inline-start:calc(-1 * var(--t-size));--t-size: inherit}.t-button:before{font-size:var(--t-size)}.t-button:focus-visible{opacity:1}.t-icon{font-size:1rem;margin-inline-end:.25rem;vertical-align:sub;color:var(--tui-text-positive)}\n"] }]
94
+ }, template: "<span\n #content\n tuiHintAppearance=\"floating\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"options.icon\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()[1] }}\n</ng-template>\n", styles: [":host{cursor:pointer}:host[data-size=m]{--t-size: min( calc(1em + 1px) , 1rem)}:host[data-size=l]{--t-size: max(calc(1em / 1.57), min(max(calc(1em / 1.18), 1.25rem), 1.5rem))}@media (hover: hover) and (pointer: fine){:host:hover .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}:host:hover .t-button{opacity:1}}:host:has(.t-button:focus-visible) .t-content{opacity:var(--tui-disabled-opacity);-webkit-mask-position:0;mask-position:0}.t-content{transition-property:opacity,mask;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;mask:linear-gradient(to var(--tui-inline-start),transparent calc(1.25 * var(--t-size)),black calc(2 * var(--t-size))) no-repeat,linear-gradient(to var(--tui-inline-end),black,black calc(2 * var(--t-size)),transparent calc(2 * var(--t-size))) no-repeat;-webkit-mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0;mask-position:calc(var(--tui-inline) * 2 * var(--t-size)),0}.t-button{position:sticky;inset-inline-start:0;opacity:0;border-radius:0;font-size:inherit!important;margin-inline-start:calc(-1 * var(--t-size));--t-size: inherit}.t-button:before{font-size:var(--t-size)}.t-button:focus-visible{opacity:1}.t-icon{font-size:1rem;margin-inline-end:.25rem;vertical-align:sub;color:var(--tui-text-positive)}\n"] }]
46
95
  }] });
47
96
 
48
97
  class TuiCopyDirective {
49
98
  constructor() {
50
99
  this.copied$ = new Subject();
51
- this.doc = inject(DOCUMENT);
100
+ this.clipboard = inject(Clipboard);
101
+ this.stringify = inject(TUI_ITEMS_HANDLERS).stringify;
52
102
  this.textfield = inject(TuiTextfieldComponent);
53
- this.icons = tuiTextfieldIcon(TUI_COPY_OPTIONS);
103
+ this.icons = tuiIconEnd(inject(TUI_COPY_OPTIONS).icon);
54
104
  this.copyTexts = inject(TUI_COPY_TEXTS);
55
105
  this.hint = tuiDirectiveBinding(TuiHintDirective, 'content', toSignal(toObservable(inject(TUI_COPY_TEXTS)).pipe(switchMap(([copy, copied]) => this.copied$.pipe(switchMap(() => timer(3000).pipe(map(() => copy), startWith(copied))), startWith(copy)))), { initialValue: '' }));
56
106
  }
107
+ get hasValue() {
108
+ return this.multi
109
+ ? !!this.textfield.control()?.value.length
110
+ : !!this.textfield.value();
111
+ }
57
112
  copy() {
58
- this.textfield.input()?.nativeElement.select();
59
- this.doc.execCommand('copy');
113
+ if (this.multi) {
114
+ this.clipboard.copy(this.textfield.control()?.value.map(this.stringify()).join(', '));
115
+ }
116
+ else {
117
+ this.textfield.input()?.nativeElement.select();
118
+ this.clipboard.copy(this.textfield.value());
119
+ }
60
120
  this.copied$.next();
61
121
  }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiCopyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
63
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiCopyDirective, isStandalone: true, selector: "tui-icon[tuiCopy]", host: { listeners: { "click": "copy()" }, properties: { "style.pointer-events": "textfield.value() ? null : \"none\"", "style.opacity": "textfield.value() ? null : \"var(--tui-disabled-opacity)\"", "style.border-width.rem": "textfield.options.size() === \"l\" ? null : 0.25" }, styleAttribute: "cursor: pointer" }, providers: [
122
+ get multi() {
123
+ return Array.isArray(this.textfield.control()?.value);
124
+ }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCopyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
126
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: TuiCopyDirective, isStandalone: true, selector: "tui-icon[tuiCopy]", host: { listeners: { "click": "copy()" }, properties: { "style.pointer-events": "hasValue ? null : \"none\"", "style.opacity": "hasValue ? null : \"var(--tui-disabled-opacity)\"", "style.border-width.rem": "textfield.options.size() === \"l\" ? null : 0.25" }, styleAttribute: "cursor: pointer" }, providers: [
64
127
  {
65
128
  provide: TUI_APPEARANCE_OPTIONS,
66
129
  useValue: { appearance: 'icon' },
67
130
  },
68
- ], hostDirectives: [{ directive: i1$1.TuiWithAppearance }, { directive: i2.TuiHintDirective, inputs: ["tuiHintAppearance", "tuiHintAppearance", "tuiHintContext", "tuiHintContext"] }], ngImport: i0 }); }
131
+ ], hostDirectives: [{ directive: i1$2.TuiWithAppearance }, { directive: i2.TuiHintDirective, inputs: ["tuiHintAppearance", "tuiHintAppearance", "tuiHintContext", "tuiHintContext"] }], ngImport: i0 }); }
69
132
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiCopyDirective, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCopyDirective, decorators: [{
71
134
  type: Directive,
72
135
  args: [{
73
136
  selector: 'tui-icon[tuiCopy]',
@@ -87,14 +150,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
87
150
  host: {
88
151
  style: 'cursor: pointer',
89
152
  '(click)': 'copy()',
90
- '[style.pointer-events]': 'textfield.value() ? null : "none"',
91
- '[style.opacity]': 'textfield.value() ? null : "var(--tui-disabled-opacity)"',
153
+ '[style.pointer-events]': 'hasValue ? null : "none"',
154
+ '[style.opacity]': 'hasValue ? null : "var(--tui-disabled-opacity)"',
92
155
  '[style.border-width.rem]': 'textfield.options.size() === "l" ? null : 0.25',
93
156
  },
94
157
  }]
95
158
  }] });
96
159
 
97
- const TuiCopy = [TuiCopyComponent, TuiCopyDirective];
160
+ const TuiCopy = [TuiCopyComponent, TuiCopyDirective, TuiButtonCopy];
98
161
 
99
162
  // TODO: Move to components in v5
100
163
 
@@ -102,5 +165,5 @@ const TuiCopy = [TuiCopyComponent, TuiCopyDirective];
102
165
  * Generated bundle index. Do not edit.
103
166
  */
104
167
 
105
- export { TUI_COPY_OPTIONS, TuiCopy, TuiCopyComponent, TuiCopyDirective, tuiCopyOptionsProvider };
168
+ export { TUI_COPY_OPTIONS, TuiButtonCopy, TuiCopy, TuiCopyComponent, TuiCopyDirective, tuiCopyOptionsProvider };
106
169
  //# sourceMappingURL=taiga-ui-kit-components-copy.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-copy.mjs","sources":["../../../projects/kit/components/copy/copy.options.ts","../../../projects/kit/components/copy/copy.component.ts","../../../projects/kit/components/copy/copy.template.html","../../../projects/kit/components/copy/copy.directive.ts","../../../projects/kit/components/copy/copy.ts","../../../projects/kit/components/copy/index.ts","../../../projects/kit/components/copy/taiga-ui-kit-components-copy.ts"],"sourcesContent":["import {type TuiStringHandler} 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 TuiCopyOptions {\n readonly icon: TuiStringHandler<TuiSizeL | TuiSizeS>;\n}\n\nexport const [TUI_COPY_OPTIONS, tuiCopyOptionsProvider] =\n tuiCreateOptions<TuiCopyOptions>({icon: () => '@tui.copy'});\n","import {ClipboardModule} from '@angular/cdk/clipboard';\nimport {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TUI_NOTIFICATION_OPTIONS} from '@taiga-ui/core/components/notification';\nimport {TuiHint} from '@taiga-ui/core/portals/hint';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {BehaviorSubject, map, startWith, switchMap, timer} from 'rxjs';\n\nimport {TUI_COPY_OPTIONS} from './copy.options';\n\n@Component({\n selector: 'tui-copy',\n imports: [ClipboardModule, TuiButton, TuiHint, TuiIcon],\n templateUrl: './copy.template.html',\n styleUrl: './copy.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n '(pointerdown)': 'copied$.next(false)',\n },\n})\nexport class TuiCopyComponent {\n protected readonly notification = inject(TUI_NOTIFICATION_OPTIONS);\n protected readonly options = inject(TUI_COPY_OPTIONS);\n protected readonly copied$ = new BehaviorSubject<boolean>(false);\n protected readonly texts = inject(TUI_COPY_TEXTS);\n protected readonly hint = toSignal(\n this.copied$.pipe(\n switchMap((copied) =>\n timer(2000).pipe(map(TUI_FALSE_HANDLER), startWith(copied)),\n ),\n ),\n );\n\n public readonly size = input<TuiSizeL>('m');\n\n protected get check(): string {\n return tuiIsString(this.notification.icon)\n ? this.notification.icon\n : this.notification.icon('positive');\n }\n}\n","<span\n #content\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"options.icon(size())\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()[1] }}\n</ng-template>\n","import {DOCUMENT} from '@angular/common';\nimport {Directive, inject} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {\n TuiTextfieldComponent,\n tuiTextfieldIcon,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TUI_APPEARANCE_OPTIONS,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintDirective} from '@taiga-ui/core/portals/hint';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, startWith, Subject, switchMap, timer} from 'rxjs';\n\nimport {TUI_COPY_OPTIONS} from './copy.options';\n\n@Directive({\n selector: 'tui-icon[tuiCopy]',\n providers: [\n {\n provide: TUI_APPEARANCE_OPTIONS,\n useValue: {appearance: 'icon'},\n },\n ],\n hostDirectives: [\n TuiWithAppearance,\n {\n directive: TuiHintDirective,\n inputs: ['tuiHintAppearance', 'tuiHintContext'],\n },\n ],\n host: {\n style: 'cursor: pointer',\n '(click)': 'copy()',\n '[style.pointer-events]': 'textfield.value() ? null : \"none\"',\n '[style.opacity]': 'textfield.value() ? null : \"var(--tui-disabled-opacity)\"',\n '[style.border-width.rem]': 'textfield.options.size() === \"l\" ? null : 0.25',\n },\n})\nexport class TuiCopyDirective {\n private readonly copied$ = new Subject<void>();\n private readonly doc = inject(DOCUMENT);\n\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected readonly icons = tuiTextfieldIcon(TUI_COPY_OPTIONS);\n protected readonly copyTexts = inject(TUI_COPY_TEXTS);\n protected readonly hint = tuiDirectiveBinding(\n TuiHintDirective,\n 'content',\n toSignal(\n toObservable(inject(TUI_COPY_TEXTS)).pipe(\n switchMap(([copy, copied]) =>\n this.copied$.pipe(\n switchMap(() =>\n timer(3000).pipe(\n map(() => copy),\n startWith(copied),\n ),\n ),\n startWith(copy),\n ),\n ),\n ),\n {initialValue: ''},\n ),\n );\n\n protected copy(): void {\n this.textfield.input()?.nativeElement.select();\n this.doc.execCommand('copy');\n this.copied$.next();\n }\n}\n","import {TuiCopyComponent} from './copy.component';\nimport {TuiCopyDirective} from './copy.directive';\n\nexport const TuiCopy = [TuiCopyComponent, TuiCopyDirective] as const;\n","// TODO: Move to components in v5\nexport * from './copy';\nexport * from './copy.component';\nexport * from './copy.directive';\nexport * from './copy.options';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;AAQa,MAAA,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,GACnD,gBAAgB,CAAiB,EAAC,IAAI,EAAE,MAAM,WAAW,EAAC;;MCiBjD,gBAAgB,CAAA;AAX7B,IAAA,WAAA,GAAA;AAYuB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC/C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC7C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,SAAS,CAAC,CAAC,MAAM,KACb,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAC9D,CACJ,CACJ;AAEe,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,GAAG,CAAC;AAO9C;AALG,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI;AACrC,cAAE,IAAI,CAAC,YAAY,CAAC;cAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;;+GAlBnC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,gTC1B7B,uwBA8BA,EAAA,MAAA,EAAA,CAAA,wyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbc,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,ybAAW,OAAO,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAS7C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EACX,OAAA,EAAA,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAA,eAAA,EAGtC,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,eAAe,EAAE,qBAAqB;AACzC,qBAAA,EAAA,QAAA,EAAA,uwBAAA,EAAA,MAAA,EAAA,CAAA,wyCAAA,CAAA,EAAA;;;MEiBQ,gBAAgB,CAAA;AAvB7B,IAAA,WAAA,GAAA;AAwBqB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ;AAC7B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEpB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACzC,QAAA,IAAA,CAAA,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,QAAA,IAAA,CAAA,IAAI,GAAG,mBAAmB,CACzC,gBAAgB,EAChB,SAAS,EACT,QAAQ,CACJ,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CACrC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,SAAS,CAAC,MACN,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CACZ,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,SAAS,CAAC,MAAM,CAAC,CACpB,CACJ,EACD,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,CACJ,EACD,EAAC,YAAY,EAAE,EAAE,EAAC,CACrB,CACJ;AAOJ;IALa,IAAI,GAAA;QACV,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;+GA/Bd,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EArBd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,qCAAA,EAAA,eAAA,EAAA,4DAAA,EAAA,wBAAA,EAAA,kDAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,QAAQ,EAAE,EAAC,UAAU,EAAE,MAAM,EAAC;AACjC,aAAA;AACJ,SAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAgBQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,QAAQ,EAAE,EAAC,UAAU,EAAE,MAAM,EAAC;AACjC,yBAAA;AACJ,qBAAA;AACD,oBAAA,cAAc,EAAE;wBACZ,iBAAiB;AACjB,wBAAA;AACI,4BAAA,SAAS,EAAE,gBAAgB;AAC3B,4BAAA,MAAM,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;AAClD,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,wBAAwB,EAAE,mCAAmC;AAC7D,wBAAA,iBAAiB,EAAE,0DAA0D;AAC7E,wBAAA,0BAA0B,EAAE,gDAAgD;AAC/E,qBAAA;AACJ,iBAAA;;;MCrCY,OAAO,GAAG,CAAC,gBAAgB,EAAE,gBAAgB;;ACH1D;;ACAA;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-copy.mjs","sources":["../../../projects/kit/components/copy/copy.options.ts","../../../projects/kit/components/copy/button-copy.component.ts","../../../projects/kit/components/copy/copy.component.ts","../../../projects/kit/components/copy/copy.template.html","../../../projects/kit/components/copy/copy.directive.ts","../../../projects/kit/components/copy/copy.ts","../../../projects/kit/components/copy/index.ts","../../../projects/kit/components/copy/taiga-ui-kit-components-copy.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCopyOptions {\n readonly icon: string;\n}\n\nexport const [TUI_COPY_OPTIONS, tuiCopyOptionsProvider] =\n tuiCreateOptions<TuiCopyOptions>({icon: '@tui.copy'});\n","import {Clipboard} from '@angular/cdk/clipboard';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton, tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TUI_NOTIFICATION_OPTIONS} from '@taiga-ui/core/components/notification';\nimport {tuiIconStart} from '@taiga-ui/core/directives/icons';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\n\nimport {TUI_COPY_OPTIONS} from './copy.options';\n\n@Component({\n selector: '[tuiButtonCopy]',\n template: `\n @if (copied()) {\n {{ copiedText() }}\n } @else {\n <ng-content />\n }\n `,\n styleUrl: './button-copy.styles.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiButtonOptionsProvider({appearance: 'flat-grayscale', size: 's'})],\n hostDirectives: [TuiButton],\n host: {\n tuiButton: '',\n type: 'button',\n '(document:click.capture)': 'copy($event.target)',\n },\n})\nexport class TuiButtonCopy {\n private readonly el = tuiInjectElement();\n private readonly clipboard = inject(Clipboard);\n private readonly options = inject(TUI_COPY_OPTIONS);\n private readonly copyTexts = inject(TUI_COPY_TEXTS);\n private readonly notification = inject(TUI_NOTIFICATION_OPTIONS);\n private readonly check = tuiIsString(this.notification.icon)\n ? this.notification.icon\n : this.notification.icon('positive');\n\n protected readonly copied = signal(false);\n protected readonly copiedText = computed(() => this.copyTexts()[1]);\n protected readonly icon = tuiIconStart(\n computed(() => (this.copied() ? this.check : this.options.icon)),\n );\n\n public readonly tuiButtonCopy = input('');\n\n protected copy(target: HTMLElement): void {\n const copied = this.el === target;\n\n if (copied) {\n this.clipboard.copy(this.tuiButtonCopy());\n }\n\n this.copied.set(copied);\n }\n}\n","import {ClipboardModule} from '@angular/cdk/clipboard';\nimport {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TUI_NOTIFICATION_OPTIONS} from '@taiga-ui/core/components/notification';\nimport {TuiHint} from '@taiga-ui/core/portals/hint';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {BehaviorSubject, map, startWith, switchMap, timer} from 'rxjs';\n\nimport {TUI_COPY_OPTIONS} from './copy.options';\n\n@Component({\n selector: 'tui-copy',\n imports: [ClipboardModule, TuiButton, TuiHint, TuiIcon],\n templateUrl: './copy.template.html',\n styleUrl: './copy.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n '(pointerdown)': 'copied$.next(false)',\n },\n})\nexport class TuiCopyComponent {\n protected readonly notification = inject(TUI_NOTIFICATION_OPTIONS);\n protected readonly options = inject(TUI_COPY_OPTIONS);\n protected readonly copied$ = new BehaviorSubject<boolean>(false);\n protected readonly texts = inject(TUI_COPY_TEXTS);\n protected readonly hint = toSignal(\n this.copied$.pipe(\n switchMap((copied) =>\n timer(2000).pipe(map(TUI_FALSE_HANDLER), startWith(copied)),\n ),\n ),\n );\n\n public readonly size = input<TuiSizeL>('m');\n\n protected get check(): string {\n return tuiIsString(this.notification.icon)\n ? this.notification.icon\n : this.notification.icon('positive');\n }\n}\n","<span\n #content\n tuiHintAppearance=\"floating\"\n tuiHintDirection=\"top\"\n class=\"t-content\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [tuiHint]=\"template\"\n [tuiHintManual]=\"!!hint()\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n>\n <ng-content />\n</span>\n<button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [attr.aria-label]=\"texts()[0]\"\n [cdkCopyToClipboard]=\"content.textContent ?? ''\"\n [iconStart]=\"options.icon\"\n (cdkCopyToClipboardCopied)=\"copied$.next($event)\"\n></button>\n<ng-template #template>\n <tui-icon\n class=\"t-icon\"\n [icon]=\"check\"\n />\n {{ texts()[1] }}\n</ng-template>\n","import {Clipboard} from '@angular/cdk/clipboard';\nimport {Directive, inject} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {\n TUI_APPEARANCE_OPTIONS,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {tuiIconEnd} from '@taiga-ui/core/directives/icons';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiHintDirective} from '@taiga-ui/core/portals/hint';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, startWith, Subject, switchMap, timer} from 'rxjs';\n\nimport {TUI_COPY_OPTIONS} from './copy.options';\n\n@Directive({\n selector: 'tui-icon[tuiCopy]',\n providers: [\n {\n provide: TUI_APPEARANCE_OPTIONS,\n useValue: {appearance: 'icon'},\n },\n ],\n hostDirectives: [\n TuiWithAppearance,\n {\n directive: TuiHintDirective,\n inputs: ['tuiHintAppearance', 'tuiHintContext'],\n },\n ],\n host: {\n style: 'cursor: pointer',\n '(click)': 'copy()',\n '[style.pointer-events]': 'hasValue ? null : \"none\"',\n '[style.opacity]': 'hasValue ? null : \"var(--tui-disabled-opacity)\"',\n '[style.border-width.rem]': 'textfield.options.size() === \"l\" ? null : 0.25',\n },\n})\nexport class TuiCopyDirective {\n private readonly copied$ = new Subject<void>();\n private readonly clipboard = inject(Clipboard);\n private readonly stringify = inject(TUI_ITEMS_HANDLERS).stringify;\n\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected readonly icons = tuiIconEnd(inject(TUI_COPY_OPTIONS).icon);\n protected readonly copyTexts = inject(TUI_COPY_TEXTS);\n protected readonly hint = tuiDirectiveBinding(\n TuiHintDirective,\n 'content',\n toSignal(\n toObservable(inject(TUI_COPY_TEXTS)).pipe(\n switchMap(([copy, copied]) =>\n this.copied$.pipe(\n switchMap(() =>\n timer(3000).pipe(\n map(() => copy),\n startWith(copied),\n ),\n ),\n startWith(copy),\n ),\n ),\n ),\n {initialValue: ''},\n ),\n );\n\n protected get hasValue(): boolean {\n return this.multi\n ? !!this.textfield.control()?.value.length\n : !!this.textfield.value();\n }\n\n protected copy(): void {\n if (this.multi) {\n this.clipboard.copy(\n this.textfield.control()?.value.map(this.stringify()).join(', '),\n );\n } else {\n this.textfield.input()?.nativeElement.select();\n this.clipboard.copy(this.textfield.value());\n }\n\n this.copied$.next();\n }\n\n private get multi(): boolean {\n return Array.isArray(this.textfield.control()?.value);\n }\n}\n","import {TuiButtonCopy} from './button-copy.component';\nimport {TuiCopyComponent} from './copy.component';\nimport {TuiCopyDirective} from './copy.directive';\n\nexport const TuiCopy = [TuiCopyComponent, TuiCopyDirective, TuiButtonCopy] as const;\n","// TODO: Move to components in v5\nexport * from './button-copy.component';\nexport * from './copy';\nexport * from './copy.component';\nexport * from './copy.directive';\nexport * from './copy.options';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, computed, input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { TuiControl } from '@taiga-ui/cdk/classes';
4
+ import { tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
5
+ import { tuiClamp, tuiSum } from '@taiga-ui/cdk/utils/math';
6
+ import { TuiButton } from '@taiga-ui/core/components/button';
7
+ import { TuiInputNumberStepService } from '@taiga-ui/kit/components/input-number';
8
+ import { TuiFade } from '@taiga-ui/kit/directives/fade';
9
+ import { TuiFluidTypography } from '@taiga-ui/kit/directives/fluid-typography';
10
+ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
11
+
12
+ const TUI_COUNTER_DEFAULT_OPTIONS = {
13
+ appearance: 'primary',
14
+ size: 'l',
15
+ min: 0,
16
+ max: Number.MAX_SAFE_INTEGER,
17
+ step: 1,
18
+ icons: {
19
+ increase: '@tui.plus',
20
+ decrease: '@tui.minus',
21
+ },
22
+ };
23
+ const [TUI_COUNTER_OPTIONS, tuiCounterOptionsProvider] = tuiCreateOptions(TUI_COUNTER_DEFAULT_OPTIONS);
24
+
25
+ class TuiCounter extends TuiControl {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.hold = inject((TuiInputNumberStepService));
29
+ this.$ = this.hold.steps$.subscribe((value) => this.onStep(value));
30
+ this.options = inject(TUI_COUNTER_OPTIONS);
31
+ this.limit = computed(() => {
32
+ switch (this.size()) {
33
+ case 'l':
34
+ return 1.25;
35
+ case 'm':
36
+ return 1;
37
+ case 's':
38
+ return 13 / 16;
39
+ }
40
+ });
41
+ this.step = input(this.options.step);
42
+ this.size = input(this.options.size);
43
+ this.min = input(this.options.min);
44
+ this.max = input(this.options.max);
45
+ this.appearance = input(this.options.appearance);
46
+ }
47
+ onStep(step) {
48
+ this.onChange(tuiClamp(tuiSum(this.value(), step), this.min(), this.max()));
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCounter, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.19", type: TuiCounter, isStandalone: true, selector: "tui-counter", inputs: { step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.data-appearance": "appearance()" } }, providers: [TuiInputNumberStepService, tuiFallbackValueProvider(0)], usesInheritance: true, ngImport: i0, template: "<button\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"value() - step() < min()\"\n [iconStart]=\"options.icons.decrease\"\n [size]=\"size()\"\n (click)=\"onStep(-step())\"\n (pointerdown.prevent)=\"hold.next(-step())\"\n>\n -\n</button>\n<div\n tuiFade\n class=\"t-content\"\n [tuiFluidTypography]=\"[0.625, limit()]\"\n>\n {{ value() }}\n <ng-content />\n</div>\n<button\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"value() + step() > max()\"\n [iconStart]=\"options.icons.increase\"\n [size]=\"size()\"\n (click)=\"onStep(step())\"\n (pointerdown.prevent)=\"hold.next(step())\"\n>\n +\n</button>\n", styles: [":host{display:flex;min-inline-size:min(10.5rem,100%);max-inline-size:100%;align-items:center;inline-size:fit-content;justify-content:flex-end;border-radius:1rem;gap:.25rem}:host[data-size=m]{min-inline-size:min(8.125rem,100%);border-radius:.75rem}:host[data-size=s]{min-inline-size:min(6rem,100%);border-radius:2rem}:host[data-size=s] .t-button:first-child:after{inset-inline-end:0}:host[data-size=s] .t-button:last-child:after{inset-inline-start:0}:host[data-appearance=primary]{background:var(--tui-background-accent-1);color:var(--tui-text-primary-on-accent-1)}:host[data-appearance=flat]{background:var(--tui-background-neutral-1)}.t-content{display:flex;flex:1;justify-content:center;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums;transition:none}.t-button{border-radius:inherit}@media screen and (max-width: 767.4px){.t-button{position:relative;overflow:visible}.t-button:after{content:\"\";position:absolute;display:block!important;inline-size:max(100%,2.75rem);block-size:max(100%,2.75rem);background:transparent}}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiFade, selector: "[tuiFade]", inputs: ["tuiFadeHeight", "tuiFadeSize", "tuiFadeOffset", "tuiFade"] }, { kind: "directive", type: TuiFluidTypography, selector: "[tuiFluidTypography]", inputs: ["tuiFluidTypography"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiCounter, decorators: [{
54
+ type: Component,
55
+ args: [{ selector: 'tui-counter', imports: [TuiButton, TuiFade, TuiFluidTypography], changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiInputNumberStepService, tuiFallbackValueProvider(0)], host: {
56
+ '[attr.data-size]': 'size()',
57
+ '[attr.data-appearance]': 'appearance()',
58
+ }, template: "<button\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"value() - step() < min()\"\n [iconStart]=\"options.icons.decrease\"\n [size]=\"size()\"\n (click)=\"onStep(-step())\"\n (pointerdown.prevent)=\"hold.next(-step())\"\n>\n -\n</button>\n<div\n tuiFade\n class=\"t-content\"\n [tuiFluidTypography]=\"[0.625, limit()]\"\n>\n {{ value() }}\n <ng-content />\n</div>\n<button\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"value() + step() > max()\"\n [iconStart]=\"options.icons.increase\"\n [size]=\"size()\"\n (click)=\"onStep(step())\"\n (pointerdown.prevent)=\"hold.next(step())\"\n>\n +\n</button>\n", styles: [":host{display:flex;min-inline-size:min(10.5rem,100%);max-inline-size:100%;align-items:center;inline-size:fit-content;justify-content:flex-end;border-radius:1rem;gap:.25rem}:host[data-size=m]{min-inline-size:min(8.125rem,100%);border-radius:.75rem}:host[data-size=s]{min-inline-size:min(6rem,100%);border-radius:2rem}:host[data-size=s] .t-button:first-child:after{inset-inline-end:0}:host[data-size=s] .t-button:last-child:after{inset-inline-start:0}:host[data-appearance=primary]{background:var(--tui-background-accent-1);color:var(--tui-text-primary-on-accent-1)}:host[data-appearance=flat]{background:var(--tui-background-neutral-1)}.t-content{display:flex;flex:1;justify-content:center;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums;transition:none}.t-button{border-radius:inherit}@media screen and (max-width: 767.4px){.t-button{position:relative;overflow:visible}.t-button:after{content:\"\";position:absolute;display:block!important;inline-size:max(100%,2.75rem);block-size:max(100%,2.75rem);background:transparent}}\n"] }]
59
+ }] });
60
+
61
+ /**
62
+ * Generated bundle index. Do not edit.
63
+ */
64
+
65
+ export { TUI_COUNTER_DEFAULT_OPTIONS, TUI_COUNTER_OPTIONS, TuiCounter, tuiCounterOptionsProvider };
66
+ //# sourceMappingURL=taiga-ui-kit-components-counter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-kit-components-counter.mjs","sources":["../../../projects/kit/components/counter/counter.options.ts","../../../projects/kit/components/counter/counter.component.ts","../../../projects/kit/components/counter/counter.template.html","../../../projects/kit/components/counter/taiga-ui-kit-components-counter.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCounterOptions extends TuiAppearanceOptions {\n size: TuiSizeL | TuiSizeS;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n step: number;\n min: number;\n max: number;\n}\n\nexport const TUI_COUNTER_DEFAULT_OPTIONS: TuiCounterOptions = {\n appearance: 'primary',\n size: 'l',\n min: 0,\n max: Number.MAX_SAFE_INTEGER,\n step: 1,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n};\n\nexport const [TUI_COUNTER_OPTIONS, tuiCounterOptionsProvider] = tuiCreateOptions(\n TUI_COUNTER_DEFAULT_OPTIONS,\n);\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiClamp, tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiInputNumberStepService} from '@taiga-ui/kit/components/input-number';\nimport {TuiFade} from '@taiga-ui/kit/directives/fade';\nimport {TuiFluidTypography} from '@taiga-ui/kit/directives/fluid-typography';\n\nimport {TUI_COUNTER_OPTIONS} from './counter.options';\n\n@Component({\n selector: 'tui-counter',\n imports: [TuiButton, TuiFade, TuiFluidTypography],\n templateUrl: './counter.template.html',\n styleUrl: './counter.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiInputNumberStepService, tuiFallbackValueProvider(0)],\n host: {\n '[attr.data-size]': 'size()',\n '[attr.data-appearance]': 'appearance()',\n },\n})\nexport class TuiCounter extends TuiControl<number> {\n protected readonly hold = inject(TuiInputNumberStepService<number>);\n protected readonly $ = this.hold.steps$.subscribe((value) => this.onStep(value));\n protected readonly options = inject(TUI_COUNTER_OPTIONS);\n protected readonly limit = computed(() => {\n switch (this.size()) {\n case 'l':\n return 1.25;\n case 'm':\n return 1;\n case 's':\n return 13 / 16;\n }\n });\n\n public readonly step = input(this.options.step);\n public readonly size = input(this.options.size);\n public readonly min = input(this.options.min);\n public readonly max = input(this.options.max);\n public readonly appearance = input(this.options.appearance);\n\n protected onStep(step: number): void {\n this.onChange(tuiClamp(tuiSum(this.value(), step), this.min(), this.max()));\n }\n}\n","<button\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"value() - step() < min()\"\n [iconStart]=\"options.icons.decrease\"\n [size]=\"size()\"\n (click)=\"onStep(-step())\"\n (pointerdown.prevent)=\"hold.next(-step())\"\n>\n -\n</button>\n<div\n tuiFade\n class=\"t-content\"\n [tuiFluidTypography]=\"[0.625, limit()]\"\n>\n {{ value() }}\n <ng-content />\n</div>\n<button\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"value() + step() > max()\"\n [iconStart]=\"options.icons.increase\"\n [size]=\"size()\"\n (click)=\"onStep(step())\"\n (pointerdown.prevent)=\"hold.next(step())\"\n>\n +\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -24,10 +24,10 @@ class TuiDataListWrapperComponent {
24
24
  $cast(items) {
25
25
  return items;
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDataListWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiDataListWrapperComponent, isStandalone: true, selector: "tui-data-list-wrapper:not([labels])", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, emptyContent: { classPropertyName: "emptyContent", publicName: "emptyContent", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, itemContent: { classPropertyName: "itemContent", publicName: "itemContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick" }, providers: [tuiAsAuxiliary(TuiDataListWrapperComponent)], viewQueries: [{ propertyName: "datalist", first: true, predicate: (TuiDataListComponent), descendants: true, isSignal: true }], ngImport: i0, template: "@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (item of $cast(items()); track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n", styles: [":host{display:block}.t-content{flex:1;min-inline-size:0}.t-loader{margin:.75rem 0}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: i1.TuiOptionWithValue, selector: "button[tuiOption][value], a[tuiOption][value], label[tuiOption][value]", inputs: ["disabled", "value"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiDataListWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TuiDataListWrapperComponent, isStandalone: true, selector: "tui-data-list-wrapper:not([labels])", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, emptyContent: { classPropertyName: "emptyContent", publicName: "emptyContent", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, itemContent: { classPropertyName: "itemContent", publicName: "itemContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick" }, providers: [tuiAsAuxiliary(TuiDataListWrapperComponent)], viewQueries: [{ propertyName: "datalist", first: true, predicate: (TuiDataListComponent), descendants: true, isSignal: true }], ngImport: i0, template: "@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (item of $cast(items()); track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n", styles: [":host{display:block}.t-content{flex:1;min-inline-size:0}.t-loader{margin:.75rem 0}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: i1.TuiOptionWithValue, selector: "button[tuiOption][value], a[tuiOption][value], label[tuiOption][value]", inputs: ["disabled", "value"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDataListWrapperComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiDataListWrapperComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'tui-data-list-wrapper:not([labels])', imports: [PolymorpheusOutlet, TuiDataList, TuiLoader], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsAuxiliary(TuiDataListWrapperComponent)], template: "@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (item of $cast(items()); track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n", styles: [":host{display:block}.t-content{flex:1;min-inline-size:0}.t-loader{margin:.75rem 0}\n"] }]
33
33
  }] });
@@ -38,12 +38,12 @@ class TuiDataListGroupWrapperComponent extends TuiDataListWrapperComponent {
38
38
  this.multi = inject(TuiMultiSelectGroupDirective, { optional: true });
39
39
  this.labels = input([]);
40
40
  }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDataListGroupWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiDataListGroupWrapperComponent, isStandalone: true, selector: "tui-data-list-wrapper[labels]", inputs: { labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null } }, providers: [tuiAsAuxiliary(TuiDataListGroupWrapperComponent)], usesInheritance: true, ngImport: i0, template: "@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (group of items(); track group) {\n @if (multi) {\n <tui-opt-group\n tuiMultiSelectGroup\n [label]=\"labels()[$index] || ''\"\n >\n @for (item of group; track $index) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n } @else {\n <tui-opt-group [label]=\"labels()[$index]\">\n @for (item of group; track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n }\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n", styles: [":host{display:block}.t-content{flex:1;min-inline-size:0}.t-loader{margin:.75rem 0}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: i1.TuiOptionWithValue, selector: "button[tuiOption][value], a[tuiOption][value], label[tuiOption][value]", inputs: ["disabled", "value"] }, { kind: "directive", type: i1.TuiOptGroup, selector: "tui-opt-group", inputs: ["label"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }, { kind: "component", type: i2.TuiMultiSelectGroupComponent, selector: "tui-opt-group[tuiMultiSelectGroup]", inputs: ["label"] }, { kind: "directive", type: i2.TuiMultiSelectGroupDirective, selector: "[tuiMultiSelectGroup]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiDataListGroupWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: TuiDataListGroupWrapperComponent, isStandalone: true, selector: "tui-data-list-wrapper[labels]", inputs: { labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null } }, providers: [tuiAsAuxiliary(TuiDataListGroupWrapperComponent)], usesInheritance: true, ngImport: i0, template: "@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (group of items(); track group) {\n @if (!labels()[$index] && group.length) {\n <hr />\n }\n @if (multi && group.length) {\n <tui-opt-group\n tuiMultiSelectGroup\n [label]=\"labels()[$index] || ''\"\n >\n @for (item of group; track $index) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n } @else if (group.length) {\n <tui-opt-group [label]=\"labels()[$index]\">\n @for (item of group; track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n }\n @if (!labels()[$index] && group.length) {\n <hr />\n }\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n", styles: [":host{display:block}.t-content{flex:1;min-inline-size:0}.t-loader{margin:.75rem 0}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: i1.TuiOptionWithValue, selector: "button[tuiOption][value], a[tuiOption][value], label[tuiOption][value]", inputs: ["disabled", "value"] }, { kind: "directive", type: i1.TuiOptGroup, selector: "tui-opt-group", inputs: ["label"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }, { kind: "component", type: i2.TuiMultiSelectGroupComponent, selector: "tui-opt-group[tuiMultiSelectGroup]", inputs: ["label"] }, { kind: "directive", type: i2.TuiMultiSelectGroupDirective, selector: "[tuiMultiSelectGroup]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDataListGroupWrapperComponent, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiDataListGroupWrapperComponent, decorators: [{
45
45
  type: Component,
46
- args: [{ selector: 'tui-data-list-wrapper[labels]', imports: [PolymorpheusOutlet, TuiDataList, TuiLoader, TuiMultiSelect], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsAuxiliary(TuiDataListGroupWrapperComponent)], template: "@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (group of items(); track group) {\n @if (multi) {\n <tui-opt-group\n tuiMultiSelectGroup\n [label]=\"labels()[$index] || ''\"\n >\n @for (item of group; track $index) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n } @else {\n <tui-opt-group [label]=\"labels()[$index]\">\n @for (item of group; track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n }\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n", styles: [":host{display:block}.t-content{flex:1;min-inline-size:0}.t-loader{margin:.75rem 0}\n"] }]
46
+ args: [{ selector: 'tui-data-list-wrapper[labels]', imports: [PolymorpheusOutlet, TuiDataList, TuiLoader, TuiMultiSelect], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsAuxiliary(TuiDataListGroupWrapperComponent)], template: "@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (group of items(); track group) {\n @if (!labels()[$index] && group.length) {\n <hr />\n }\n @if (multi && group.length) {\n <tui-opt-group\n tuiMultiSelectGroup\n [label]=\"labels()[$index] || ''\"\n >\n @for (item of group; track $index) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n } @else if (group.length) {\n <tui-opt-group [label]=\"labels()[$index]\">\n @for (item of group; track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n }\n @if (!labels()[$index] && group.length) {\n <hr />\n }\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n", styles: [":host{display:block}.t-content{flex:1;min-inline-size:0}.t-loader{margin:.75rem 0}\n"] }]
47
47
  }] });
48
48
 
49
49
  const TuiDataListWrapper = [
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-data-list-wrapper.mjs","sources":["../../../projects/kit/components/data-list-wrapper/data-list-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.ts","../../../projects/kit/components/data-list-wrapper/taiga-ui-kit-components-data-list-wrapper.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {\n TuiDataList,\n type TuiDataListAccessor,\n TuiDataListComponent,\n tuiInjectDataListSize,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {\n TUI_ITEMS_HANDLERS,\n type TuiItemsHandlers,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-data-list-wrapper:not([labels])',\n imports: [PolymorpheusOutlet, TuiDataList, TuiLoader],\n templateUrl: './data-list-wrapper.template.html',\n styleUrl: './data-list-wrapper.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiDataListWrapperComponent)],\n})\nexport class TuiDataListWrapperComponent<T, K = T> implements TuiDataListAccessor<T> {\n protected readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n protected readonly datalist = viewChild(TuiDataListComponent<T>);\n protected readonly content = computed<PolymorpheusContent<TuiContext<T>>>(\n () =>\n this.itemContent() ?? (({$implicit}) => this.handlers.stringify()($implicit)),\n );\n\n public readonly options = computed(() => this.datalist()?.options() ?? []);\n\n public readonly items = input<readonly K[] | null>([]);\n public readonly emptyContent = input<PolymorpheusContent>();\n public readonly size = input(tuiInjectDataListSize());\n public readonly itemContent = input<PolymorpheusContent<TuiContext<T>>>();\n public readonly itemClick = output<T>();\n\n protected $cast(items: readonly K[] | null): readonly T[] {\n return items as unknown as readonly T[];\n }\n}\n","@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (item of $cast(items()); track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {\n TuiMultiSelect,\n TuiMultiSelectGroupDirective,\n} from '@taiga-ui/kit/components/multi-select';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\n@Component({\n selector: 'tui-data-list-wrapper[labels]',\n imports: [PolymorpheusOutlet, TuiDataList, TuiLoader, TuiMultiSelect],\n templateUrl: './data-list-group-wrapper.template.html',\n styleUrl: './data-list-wrapper.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiDataListGroupWrapperComponent)],\n})\nexport class TuiDataListGroupWrapperComponent<T> extends TuiDataListWrapperComponent<\n T,\n readonly T[]\n> {\n protected readonly multi = inject(TuiMultiSelectGroupDirective, {optional: true});\n\n public readonly labels = input<readonly string[]>([]);\n}\n","@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (group of items(); track group) {\n @if (multi) {\n <tui-opt-group\n tuiMultiSelectGroup\n [label]=\"labels()[$index] || ''\"\n >\n @for (item of group; track $index) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n } @else {\n <tui-opt-group [label]=\"labels()[$index]\">\n @for (item of group; track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n }\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n","import {TuiDataListGroupWrapperComponent} from './data-list-group-wrapper.component';\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\nexport const TuiDataListWrapper = [\n TuiDataListWrapperComponent,\n TuiDataListGroupWrapperComponent,\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-data-list-wrapper.mjs","sources":["../../../projects/kit/components/data-list-wrapper/data-list-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.ts","../../../projects/kit/components/data-list-wrapper/taiga-ui-kit-components-data-list-wrapper.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {\n TuiDataList,\n type TuiDataListAccessor,\n TuiDataListComponent,\n tuiInjectDataListSize,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {\n TUI_ITEMS_HANDLERS,\n type TuiItemsHandlers,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-data-list-wrapper:not([labels])',\n imports: [PolymorpheusOutlet, TuiDataList, TuiLoader],\n templateUrl: './data-list-wrapper.template.html',\n styleUrl: './data-list-wrapper.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiDataListWrapperComponent)],\n})\nexport class TuiDataListWrapperComponent<T, K = T> implements TuiDataListAccessor<T> {\n protected readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n protected readonly datalist = viewChild(TuiDataListComponent<T>);\n protected readonly content = computed<PolymorpheusContent<TuiContext<T>>>(\n () =>\n this.itemContent() ?? (({$implicit}) => this.handlers.stringify()($implicit)),\n );\n\n public readonly options = computed(() => this.datalist()?.options() ?? []);\n\n public readonly items = input<readonly K[] | null>([]);\n public readonly emptyContent = input<PolymorpheusContent>();\n public readonly size = input(tuiInjectDataListSize());\n public readonly itemContent = input<PolymorpheusContent<TuiContext<T>>>();\n public readonly itemClick = output<T>();\n\n protected $cast(items: readonly K[] | null): readonly T[] {\n return items as unknown as readonly T[];\n }\n}\n","@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (item of $cast(items()); track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {\n TuiMultiSelect,\n TuiMultiSelectGroupDirective,\n} from '@taiga-ui/kit/components/multi-select';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\n@Component({\n selector: 'tui-data-list-wrapper[labels]',\n imports: [PolymorpheusOutlet, TuiDataList, TuiLoader, TuiMultiSelect],\n templateUrl: './data-list-group-wrapper.template.html',\n styleUrl: './data-list-wrapper.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiDataListGroupWrapperComponent)],\n})\nexport class TuiDataListGroupWrapperComponent<T> extends TuiDataListWrapperComponent<\n T,\n readonly T[]\n> {\n protected readonly multi = inject(TuiMultiSelectGroupDirective, {optional: true});\n\n public readonly labels = input<readonly string[]>([]);\n}\n","@if (items()) {\n <tui-data-list\n [emptyContent]=\"emptyContent()\"\n [size]=\"size()\"\n >\n @for (group of items(); track group) {\n @if (!labels()[$index] && group.length) {\n <hr />\n }\n @if (multi && group.length) {\n <tui-opt-group\n tuiMultiSelectGroup\n [label]=\"labels()[$index] || ''\"\n >\n @for (item of group; track $index) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n } @else if (group.length) {\n <tui-opt-group [label]=\"labels()[$index]\">\n @for (item of group; track item) {\n <button\n tuiOption\n type=\"button\"\n [disabled]=\"handlers.disabledItemHandler()(item)\"\n [value]=\"item\"\n (click.capture)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-opt-group>\n }\n @if (!labels()[$index] && group.length) {\n <hr />\n }\n }\n </tui-data-list>\n} @else {\n <tui-loader class=\"t-loader\" />\n}\n","import {TuiDataListGroupWrapperComponent} from './data-list-group-wrapper.component';\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\nexport const TuiDataListWrapper = [\n TuiDataListWrapperComponent,\n TuiDataListGroupWrapperComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -10,15 +10,15 @@ class TuiDrawer {
10
10
  this.direction = input('end');
11
11
  this.overlay = input(false);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDrawer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: TuiDrawer, isStandalone: true, selector: "tui-drawer", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, overlay: { classPropertyName: "overlay", publicName: "overlay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-direction": "direction()", "class._overlay": "overlay()" } }, providers: [tuiButtonOptionsProvider({ appearance: 'secondary', size: 's' })], hostDirectives: [{ directive: i1.TuiAnimated }], ngImport: i0, template: "<aside class=\"t-aside\">\n <tui-scrollbar class=\"t-scrollbar\">\n <ng-content select=\"header\" />\n <div class=\"t-content\">\n <ng-content />\n </div>\n </tui-scrollbar>\n <ng-content select=\"footer\" />\n</aside>\n", styles: [":host{position:fixed;top:max(3rem,env(safe-area-inset-top));bottom:0;inline-size:36.25rem;max-inline-size:calc(100vw - 3rem);background:var(--tui-background-elevation-1);box-shadow:var(--tui-shadow-medium);border-top-left-radius:1.25rem;border-top-right-radius:1.25rem}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host._overlay{top:0;border-radius:0}:host._overlay>.t-aside{padding-block-start:env(safe-area-inset-top)}:host._overlay:before{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:fixed;top:-100vh;left:-100vw;right:-100vw;bottom:-100vh;background:var(--tui-service-backdrop);transition-timing-function:ease-out}tui-root:has(tui-dialogs .t-overlay_visible) :host._overlay:before{opacity:0;transition-timing-function:ease-in}:host[data-direction=start]{border-start-start-radius:0;inset-inline-start:0;--tui-from: translateX(calc(-100% * var(--tui-inline)))}:host[data-direction=end]{border-start-end-radius:0;inset-inline-end:0;--tui-from: translateX(calc(100% * var(--tui-inline)))}.t-aside{position:relative;display:flex;block-size:100%;flex-direction:column;border-radius:inherit;overflow:hidden;background:inherit;box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom)}.t-aside ::ng-deep>footer{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;gap:.75rem;padding:.5rem 1.5rem;box-shadow:inset 0 1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-aside ::ng-deep>footer::-webkit-scrollbar,.t-aside ::ng-deep>footer::-webkit-scrollbar-thumb{display:none}.t-aside ::ng-deep>footer:before{content:\"\";flex:1;margin-inline-end:-.75rem}.t-scrollbar{flex:1;overscroll-behavior:contain}.t-scrollbar ::ng-deep>.t-content>header{top:0;z-index:1;display:flex;flex-direction:column;gap:.75rem;padding:1.5rem 1.5rem .75rem;box-shadow:inset 0 -1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-scrollbar ::ng-deep>.t-content>header>*{display:flex;gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiSubtitle]{color:var(--tui-text-primary)}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories]{gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child{margin-inline-start:.25rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child:before{font-size:1rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiNavigationNav]{min-block-size:var(--tui-height-m);margin-block-end:-.75rem;padding:0;border-image:none}.t-content{padding:1.25rem 1.5rem}\n"], dependencies: [{ kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiDrawer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.19", type: TuiDrawer, isStandalone: true, selector: "tui-drawer", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, overlay: { classPropertyName: "overlay", publicName: "overlay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-direction": "direction()", "class._overlay": "overlay()" } }, providers: [tuiButtonOptionsProvider({ appearance: 'secondary', size: 's' })], hostDirectives: [{ directive: i1.TuiAnimated }], ngImport: i0, template: "<aside class=\"t-aside\">\n <tui-scrollbar class=\"t-scrollbar\">\n <ng-content select=\"header\" />\n <div class=\"t-content\">\n <ng-content />\n </div>\n </tui-scrollbar>\n <ng-content select=\"footer\" />\n</aside>\n", styles: [":host{position:fixed;inset-block-start:max(3rem,env(safe-area-inset-top));inset-block-end:0;inline-size:36.25rem;max-inline-size:calc(100vw - 3rem);background:var(--tui-background-elevation-1);box-shadow:var(--tui-shadow-medium);border-top-left-radius:1.25rem;border-top-right-radius:1.25rem}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host._overlay{inset-block-start:0;border-radius:0}:host._overlay>.t-aside{padding-block-start:env(safe-area-inset-top)}:host._overlay:before{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:fixed;inset:-100vh -100vw;background:var(--tui-service-backdrop);transition-timing-function:ease-out}tui-root:has(tui-dialogs .t-overlay_visible) :host._overlay:before{opacity:0;transition-timing-function:ease-in}:host[data-direction=start]{border-start-start-radius:0;inset-inline-start:0;--tui-from: translateX(calc(-100% * var(--tui-inline)))}:host[data-direction=end]{border-start-end-radius:0;inset-inline-end:0;--tui-from: translateX(calc(100% * var(--tui-inline)))}.t-aside{position:relative;display:flex;block-size:100%;flex-direction:column;border-radius:inherit;overflow:hidden;background:inherit;box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom)}.t-aside ::ng-deep>footer{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;gap:.75rem;padding:.5rem 1.5rem;box-shadow:inset 0 1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-aside ::ng-deep>footer::-webkit-scrollbar,.t-aside ::ng-deep>footer::-webkit-scrollbar-thumb{display:none}.t-aside ::ng-deep>footer:before{content:\"\";flex:1;margin-inline-end:-.75rem}.t-scrollbar{flex:1;overscroll-behavior:contain}.t-scrollbar ::ng-deep>.t-content>header{z-index:1;display:flex;inset-block-start:0;flex-direction:column;gap:.75rem;padding:1.5rem 1.5rem .75rem;box-shadow:inset 0 -1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-scrollbar ::ng-deep>.t-content>header>*{display:flex;gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiSubtitle]{color:var(--tui-text-primary)}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories]{gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child{margin-inline-start:.25rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child:before{font-size:1rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiNavigationNav]{min-block-size:var(--tui-height-m);margin-block-end:-.75rem;padding:0;border-image:none}.t-content{padding:1.25rem 1.5rem}\n"], dependencies: [{ kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDrawer, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TuiDrawer, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'tui-drawer', imports: [TuiScrollbar], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiButtonOptionsProvider({ appearance: 'secondary', size: 's' })], hostDirectives: [TuiAnimated], host: {
19
19
  '[attr.data-direction]': 'direction()',
20
20
  '[class._overlay]': 'overlay()',
21
- }, template: "<aside class=\"t-aside\">\n <tui-scrollbar class=\"t-scrollbar\">\n <ng-content select=\"header\" />\n <div class=\"t-content\">\n <ng-content />\n </div>\n </tui-scrollbar>\n <ng-content select=\"footer\" />\n</aside>\n", styles: [":host{position:fixed;top:max(3rem,env(safe-area-inset-top));bottom:0;inline-size:36.25rem;max-inline-size:calc(100vw - 3rem);background:var(--tui-background-elevation-1);box-shadow:var(--tui-shadow-medium);border-top-left-radius:1.25rem;border-top-right-radius:1.25rem}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host._overlay{top:0;border-radius:0}:host._overlay>.t-aside{padding-block-start:env(safe-area-inset-top)}:host._overlay:before{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:fixed;top:-100vh;left:-100vw;right:-100vw;bottom:-100vh;background:var(--tui-service-backdrop);transition-timing-function:ease-out}tui-root:has(tui-dialogs .t-overlay_visible) :host._overlay:before{opacity:0;transition-timing-function:ease-in}:host[data-direction=start]{border-start-start-radius:0;inset-inline-start:0;--tui-from: translateX(calc(-100% * var(--tui-inline)))}:host[data-direction=end]{border-start-end-radius:0;inset-inline-end:0;--tui-from: translateX(calc(100% * var(--tui-inline)))}.t-aside{position:relative;display:flex;block-size:100%;flex-direction:column;border-radius:inherit;overflow:hidden;background:inherit;box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom)}.t-aside ::ng-deep>footer{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;gap:.75rem;padding:.5rem 1.5rem;box-shadow:inset 0 1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-aside ::ng-deep>footer::-webkit-scrollbar,.t-aside ::ng-deep>footer::-webkit-scrollbar-thumb{display:none}.t-aside ::ng-deep>footer:before{content:\"\";flex:1;margin-inline-end:-.75rem}.t-scrollbar{flex:1;overscroll-behavior:contain}.t-scrollbar ::ng-deep>.t-content>header{top:0;z-index:1;display:flex;flex-direction:column;gap:.75rem;padding:1.5rem 1.5rem .75rem;box-shadow:inset 0 -1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-scrollbar ::ng-deep>.t-content>header>*{display:flex;gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiSubtitle]{color:var(--tui-text-primary)}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories]{gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child{margin-inline-start:.25rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child:before{font-size:1rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiNavigationNav]{min-block-size:var(--tui-height-m);margin-block-end:-.75rem;padding:0;border-image:none}.t-content{padding:1.25rem 1.5rem}\n"] }]
21
+ }, template: "<aside class=\"t-aside\">\n <tui-scrollbar class=\"t-scrollbar\">\n <ng-content select=\"header\" />\n <div class=\"t-content\">\n <ng-content />\n </div>\n </tui-scrollbar>\n <ng-content select=\"footer\" />\n</aside>\n", styles: [":host{position:fixed;inset-block-start:max(3rem,env(safe-area-inset-top));inset-block-end:0;inline-size:36.25rem;max-inline-size:calc(100vw - 3rem);background:var(--tui-background-elevation-1);box-shadow:var(--tui-shadow-medium);border-top-left-radius:1.25rem;border-top-right-radius:1.25rem}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host._overlay{inset-block-start:0;border-radius:0}:host._overlay>.t-aside{padding-block-start:env(safe-area-inset-top)}:host._overlay:before{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:fixed;inset:-100vh -100vw;background:var(--tui-service-backdrop);transition-timing-function:ease-out}tui-root:has(tui-dialogs .t-overlay_visible) :host._overlay:before{opacity:0;transition-timing-function:ease-in}:host[data-direction=start]{border-start-start-radius:0;inset-inline-start:0;--tui-from: translateX(calc(-100% * var(--tui-inline)))}:host[data-direction=end]{border-start-end-radius:0;inset-inline-end:0;--tui-from: translateX(calc(100% * var(--tui-inline)))}.t-aside{position:relative;display:flex;block-size:100%;flex-direction:column;border-radius:inherit;overflow:hidden;background:inherit;box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom)}.t-aside ::ng-deep>footer{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;gap:.75rem;padding:.5rem 1.5rem;box-shadow:inset 0 1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-aside ::ng-deep>footer::-webkit-scrollbar,.t-aside ::ng-deep>footer::-webkit-scrollbar-thumb{display:none}.t-aside ::ng-deep>footer:before{content:\"\";flex:1;margin-inline-end:-.75rem}.t-scrollbar{flex:1;overscroll-behavior:contain}.t-scrollbar ::ng-deep>.t-content>header{z-index:1;display:flex;inset-block-start:0;flex-direction:column;gap:.75rem;padding:1.5rem 1.5rem .75rem;box-shadow:inset 0 -1px var(--tui-border-normal);background:var(--tui-background-elevation-1)}.t-scrollbar ::ng-deep>.t-content>header>*{display:flex;gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiSubtitle]{color:var(--tui-text-primary)}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories]{gap:.5rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child{margin-inline-start:.25rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiHeader] [tuiAccessories] [tuiIconButton][data-appearance=icon]:last-child:before{font-size:1rem}.t-scrollbar ::ng-deep>.t-content>header>[tuiNavigationNav]{min-block-size:var(--tui-height-m);margin-block-end:-.75rem;padding:0;border-image:none}.t-content{padding:1.25rem 1.5rem}\n"] }]
22
22
  }] });
23
23
 
24
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-drawer.mjs","sources":["../../../projects/kit/components/drawer/drawer.component.ts","../../../projects/kit/components/drawer/drawer.template.html","../../../projects/kit/components/drawer/taiga-ui-kit-components-drawer.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\n\n@Component({\n selector: 'tui-drawer',\n imports: [TuiScrollbar],\n templateUrl: './drawer.template.html',\n styleUrl: './drawer.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiButtonOptionsProvider({appearance: 'secondary', size: 's'})],\n hostDirectives: [TuiAnimated],\n host: {\n '[attr.data-direction]': 'direction()',\n '[class._overlay]': 'overlay()',\n },\n})\nexport class TuiDrawer {\n public readonly direction = input<TuiHorizontalDirection>('end');\n public readonly overlay = input(false);\n}\n","<aside class=\"t-aside\">\n <tui-scrollbar class=\"t-scrollbar\">\n <ng-content select=\"header\" />\n <div class=\"t-content\">\n <ng-content />\n </div>\n </tui-scrollbar>\n <ng-content select=\"footer\" />\n</aside>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAmBa,SAAS,CAAA;AAbtB,IAAA,WAAA,GAAA;AAcoB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAyB,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AACzC;+GAHY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,saAPP,CAAC,wBAAwB,CAAC,EAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC,ECZ/E,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,uQASA,qsFDDc,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAWb,SAAS,EAAA,UAAA,EAAA,CAAA;kBAbrB,SAAS;+BACI,YAAY,EAAA,OAAA,EACb,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,wBAAwB,CAAC,EAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC,EAC3D,cAAA,EAAA,CAAC,WAAW,CAAC,EACvB,IAAA,EAAA;AACF,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,kBAAkB,EAAE,WAAW;AAClC,qBAAA,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,6oFAAA,CAAA,EAAA;;;AEjBL;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-drawer.mjs","sources":["../../../projects/kit/components/drawer/drawer.component.ts","../../../projects/kit/components/drawer/drawer.template.html","../../../projects/kit/components/drawer/taiga-ui-kit-components-drawer.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\n\n@Component({\n selector: 'tui-drawer',\n imports: [TuiScrollbar],\n templateUrl: './drawer.template.html',\n styleUrl: './drawer.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiButtonOptionsProvider({appearance: 'secondary', size: 's'})],\n hostDirectives: [TuiAnimated],\n host: {\n '[attr.data-direction]': 'direction()',\n '[class._overlay]': 'overlay()',\n },\n})\nexport class TuiDrawer {\n public readonly direction = input<TuiHorizontalDirection>('end');\n public readonly overlay = input(false);\n}\n","<aside class=\"t-aside\">\n <tui-scrollbar class=\"t-scrollbar\">\n <ng-content select=\"header\" />\n <div class=\"t-content\">\n <ng-content />\n </div>\n </tui-scrollbar>\n <ng-content select=\"footer\" />\n</aside>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAmBa,SAAS,CAAA;AAbtB,IAAA,WAAA,GAAA;AAcoB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAyB,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AACzC,IAAA;+GAHY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,saAPP,CAAC,wBAAwB,CAAC,EAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ/E,uQASA,0tFDDc,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAWb,SAAS,EAAA,UAAA,EAAA,CAAA;kBAbrB,SAAS;+BACI,YAAY,EAAA,OAAA,EACb,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,wBAAwB,CAAC,EAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC,EAAA,cAAA,EAC3D,CAAC,WAAW,CAAC,EAAA,IAAA,EACvB;AACF,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,kBAAkB,EAAE,WAAW;AAClC,qBAAA,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,kqFAAA,CAAA,EAAA;;;AEjBL;;AAEG;;;;"}