@taiga-ui/core 4.68.0 → 5.0.0-canary.0c88239

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 (659) hide show
  1. package/README.md +1 -1
  2. package/classes/accessors.d.ts +2 -2
  3. package/classes/driver.d.ts +1 -1
  4. package/components/button/button.directive.d.ts +2 -3
  5. package/components/button/button.options.d.ts +1 -1
  6. package/components/calendar/calendar-sheet.component.d.ts +2 -7
  7. package/components/calendar/calendar-sheet.options.d.ts +1 -3
  8. package/{pipes/calendar-sheet → components/calendar}/calendar-sheet.pipe.d.ts +2 -2
  9. package/components/calendar/calendar-spin.component.d.ts +1 -0
  10. package/components/calendar/calendar-year.component.d.ts +1 -1
  11. package/components/calendar/calendar.options.d.ts +9 -0
  12. package/components/calendar/index.d.ts +3 -0
  13. package/{pipes/order-week-days → components/calendar}/order-week-days.pipe.d.ts +1 -1
  14. package/components/cell/cell.directive.d.ts +9 -0
  15. package/components/cell/cell.options.d.ts +6 -0
  16. package/components/cell/index.d.ts +2 -0
  17. package/components/data-list/data-list.component.d.ts +8 -12
  18. package/components/data-list/data-list.d.ts +3 -4
  19. package/components/data-list/data-list.tokens.d.ts +1 -20
  20. package/components/data-list/index.d.ts +4 -4
  21. package/components/data-list/opt-group.directive.d.ts +2 -2
  22. package/components/data-list/option-content.directive.d.ts +14 -0
  23. package/components/data-list/option-with-content.directive.d.ts +9 -0
  24. package/components/data-list/option-with-value.directive.d.ts +10 -0
  25. package/components/data-list/option.directive.d.ts +15 -0
  26. package/components/error/error.component.d.ts +6 -8
  27. package/components/error/error.d.ts +4 -0
  28. package/components/error/error.directive.d.ts +19 -0
  29. package/components/error/error.pipe.d.ts +10 -0
  30. package/components/error/index.d.ts +3 -0
  31. package/components/expand/expand.component.d.ts +9 -28
  32. package/components/expand/index.d.ts +0 -2
  33. package/components/icon/icon.component.d.ts +6 -11
  34. package/components/index.d.ts +3 -3
  35. package/components/input/index.d.ts +2 -0
  36. package/components/input/input.d.ts +5 -0
  37. package/components/input/input.directive.d.ts +29 -0
  38. package/components/label/label.directive.d.ts +1 -1
  39. package/components/link/index.d.ts +0 -1
  40. package/components/link/link.directive.d.ts +8 -6
  41. package/components/loader/loader.component.d.ts +7 -7
  42. package/components/loader/loader.options.d.ts +1 -3
  43. package/components/notification/index.d.ts +3 -0
  44. package/components/notification/notification.component.d.ts +14 -0
  45. package/components/notification/notification.d.ts +3 -0
  46. package/components/notification/notification.directive.d.ts +7 -12
  47. package/components/notification/notification.options.d.ts +10 -7
  48. package/components/notification/notification.service.d.ts +17 -0
  49. package/components/root/root.component.d.ts +4 -7
  50. package/components/scrollbar/scroll-into-view.directive.d.ts +3 -2
  51. package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
  52. package/components/scrollbar/scrollbar.component.d.ts +1 -5
  53. package/components/scrollbar/scrollbar.directive.d.ts +2 -2
  54. package/components/scrollbar/scrollbar.options.d.ts +1 -1
  55. package/components/spin-button/spin-button.component.d.ts +9 -10
  56. package/components/textfield/index.d.ts +1 -4
  57. package/components/textfield/textfield-content.directive.d.ts +3 -2
  58. package/components/textfield/textfield-icon.d.ts +3 -3
  59. package/components/textfield/textfield-multi/textfield-item.component.d.ts +3 -2
  60. package/components/textfield/textfield-multi/textfield-multi.component.d.ts +9 -15
  61. package/components/textfield/textfield.component.d.ts +20 -35
  62. package/components/textfield/textfield.d.ts +2 -4
  63. package/components/textfield/textfield.options.d.ts +8 -11
  64. package/{directives → components}/title/title.directive.d.ts +2 -3
  65. package/directives/appearance/appearance.directive.d.ts +5 -13
  66. package/directives/appearance/appearance.options.d.ts +1 -2
  67. package/directives/button-x/button-x.directive.d.ts +6 -0
  68. package/directives/button-x/index.d.ts +1 -0
  69. package/directives/date-format/date-format.directive.d.ts +3 -7
  70. package/directives/group/group.directive.d.ts +7 -7
  71. package/directives/group/group.options.d.ts +1 -3
  72. package/directives/icons/icons.bindings.d.ts +5 -0
  73. package/directives/icons/icons.directive.d.ts +8 -16
  74. package/directives/icons/index.d.ts +1 -0
  75. package/directives/index.d.ts +1 -5
  76. package/directives/items-handlers/items-handlers.directive.d.ts +5 -9
  77. package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
  78. package/directives/number-format/number-format.directive.d.ts +3 -7
  79. package/fesm2022/taiga-ui-core-classes.mjs +9 -11
  80. package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
  81. package/fesm2022/taiga-ui-core-components-button.mjs +14 -21
  82. package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
  83. package/fesm2022/taiga-ui-core-components-calendar.mjs +139 -52
  84. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  85. package/fesm2022/taiga-ui-core-components-cell.mjs +45 -0
  86. package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -0
  87. package/fesm2022/taiga-ui-core-components-data-list.mjs +108 -270
  88. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  89. package/fesm2022/taiga-ui-core-components-error.mjs +108 -26
  90. package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
  91. package/fesm2022/taiga-ui-core-components-expand.mjs +34 -132
  92. package/fesm2022/taiga-ui-core-components-expand.mjs.map +1 -1
  93. package/fesm2022/taiga-ui-core-components-icon.mjs +21 -43
  94. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  95. package/fesm2022/taiga-ui-core-components-input.mjs +100 -0
  96. package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -0
  97. package/fesm2022/taiga-ui-core-components-label.mjs +15 -18
  98. package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
  99. package/fesm2022/taiga-ui-core-components-link.mjs +17 -36
  100. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  101. package/fesm2022/taiga-ui-core-components-loader.mjs +20 -40
  102. package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
  103. package/fesm2022/taiga-ui-core-components-notification.mjs +106 -66
  104. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  105. package/fesm2022/taiga-ui-core-components-root.mjs +23 -60
  106. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  107. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +76 -96
  108. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  109. package/fesm2022/taiga-ui-core-components-spin-button.mjs +18 -31
  110. package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
  111. package/fesm2022/taiga-ui-core-components-textfield.mjs +140 -439
  112. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  113. package/fesm2022/taiga-ui-core-components-title.mjs +39 -0
  114. package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -0
  115. package/fesm2022/taiga-ui-core-components.mjs +3 -3
  116. package/fesm2022/taiga-ui-core-directives-appearance.mjs +36 -75
  117. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  118. package/fesm2022/taiga-ui-core-directives-button-x.mjs +51 -0
  119. package/fesm2022/taiga-ui-core-directives-button-x.mjs.map +1 -0
  120. package/fesm2022/taiga-ui-core-directives-date-format.mjs +26 -20
  121. package/fesm2022/taiga-ui-core-directives-date-format.mjs.map +1 -1
  122. package/fesm2022/taiga-ui-core-directives-group.mjs +27 -40
  123. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  124. package/fesm2022/taiga-ui-core-directives-icons.mjs +37 -45
  125. package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
  126. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +21 -51
  127. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
  128. package/fesm2022/taiga-ui-core-directives-number-format.mjs +32 -20
  129. package/fesm2022/taiga-ui-core-directives-number-format.mjs.map +1 -1
  130. package/fesm2022/taiga-ui-core-directives.mjs +1 -5
  131. package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
  132. package/fesm2022/taiga-ui-core-pipes-format-number.mjs +21 -15
  133. package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
  134. package/fesm2022/taiga-ui-core-pipes.mjs +0 -8
  135. package/fesm2022/taiga-ui-core-pipes.mjs.map +1 -1
  136. package/fesm2022/taiga-ui-core-portals-alert.mjs +73 -0
  137. package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -0
  138. package/fesm2022/taiga-ui-core-portals-dialog.mjs +157 -0
  139. package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -0
  140. package/fesm2022/{taiga-ui-core-directives-dropdown.mjs → taiga-ui-core-portals-dropdown.mjs} +252 -429
  141. package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
  142. package/fesm2022/taiga-ui-core-portals-hint.mjs +544 -0
  143. package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -0
  144. package/fesm2022/taiga-ui-core-portals-modal.mjs +89 -0
  145. package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -0
  146. package/fesm2022/taiga-ui-core-portals-popup.mjs +52 -0
  147. package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -0
  148. package/fesm2022/taiga-ui-core-portals.mjs +11 -0
  149. package/fesm2022/taiga-ui-core-portals.mjs.map +1 -0
  150. package/fesm2022/taiga-ui-core-services.mjs +18 -84
  151. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  152. package/fesm2022/taiga-ui-core-tokens.mjs +65 -106
  153. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  154. package/fesm2022/taiga-ui-core-utils-dom.mjs.map +1 -1
  155. package/fesm2022/taiga-ui-core-utils-format.mjs +1 -22
  156. package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
  157. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +55 -19
  158. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
  159. package/fesm2022/taiga-ui-core.mjs +1 -1
  160. package/index.d.ts +1 -1
  161. package/package.json +58 -179
  162. package/pipes/format-number/format-number.pipe.d.ts +6 -4
  163. package/pipes/index.d.ts +0 -8
  164. package/portals/alert/alert.directive.d.ts +11 -0
  165. package/portals/alert/alert.service.d.ts +12 -0
  166. package/portals/alert/index.d.ts +2 -0
  167. package/portals/dialog/dialog.component.d.ts +14 -0
  168. package/portals/dialog/dialog.directive.d.ts +8 -0
  169. package/{components → portals}/dialog/dialog.factory.d.ts +1 -1
  170. package/portals/dialog/dialog.options.d.ts +25 -0
  171. package/{components/dialog/dialog-close.service.d.ts → portals/dialog/dialog.providers.d.ts} +2 -0
  172. package/portals/dialog/dialog.service.d.ts +10 -0
  173. package/portals/dialog/index.d.ts +6 -0
  174. package/portals/dropdown/dropdown-close.directive.d.ts +15 -0
  175. package/portals/dropdown/dropdown-content.directive.d.ts +9 -0
  176. package/{directives → portals}/dropdown/dropdown-context.directive.d.ts +0 -1
  177. package/{directives → portals}/dropdown/dropdown-hover.directive.d.ts +5 -10
  178. package/{directives → portals}/dropdown/dropdown-hover.options.d.ts +1 -3
  179. package/{directives → portals}/dropdown/dropdown-manual.directive.d.ts +2 -2
  180. package/portals/dropdown/dropdown-open.directive.d.ts +29 -0
  181. package/{directives → portals}/dropdown/dropdown-options.directive.d.ts +1 -5
  182. package/{directives → portals}/dropdown/dropdown-position-sided.directive.d.ts +3 -3
  183. package/{directives → portals}/dropdown/dropdown-position.directive.d.ts +6 -6
  184. package/{directives → portals}/dropdown/dropdown-selection.directive.d.ts +4 -5
  185. package/{directives → portals}/dropdown/dropdown.bindings.d.ts +0 -1
  186. package/{directives → portals}/dropdown/dropdown.d.ts +2 -3
  187. package/{directives → portals}/dropdown/dropdown.directive.d.ts +6 -8
  188. package/{directives → portals}/dropdown/index.d.ts +2 -4
  189. package/{directives → portals}/hint/hint-describe.directive.d.ts +4 -6
  190. package/{directives → portals}/hint/hint-host.directive.d.ts +2 -2
  191. package/{directives → portals}/hint/hint-hover.directive.d.ts +3 -4
  192. package/{directives → portals}/hint/hint-manual.directive.d.ts +2 -2
  193. package/portals/hint/hint-options.directive.d.ts +17 -0
  194. package/{directives → portals}/hint/hint-overflow.directive.d.ts +2 -2
  195. package/{directives → portals}/hint/hint-position.directive.d.ts +7 -8
  196. package/{directives → portals}/hint/hint-unstyled.component.d.ts +2 -7
  197. package/portals/hint/hint.component.d.ts +29 -0
  198. package/{directives → portals}/hint/hint.d.ts +1 -2
  199. package/portals/hint/hint.directive.d.ts +24 -0
  200. package/{directives → portals}/hint/index.d.ts +0 -2
  201. package/portals/index.d.ts +6 -0
  202. package/portals/modal/index.d.ts +2 -0
  203. package/portals/modal/modal.component.d.ts +17 -0
  204. package/portals/modal/modal.service.d.ts +13 -0
  205. package/portals/popup/popup.directive.d.ts +12 -0
  206. package/{directives → portals}/popup/popup.service.d.ts +1 -1
  207. package/{directives → portals}/popup/popups.component.d.ts +2 -2
  208. package/services/index.d.ts +0 -3
  209. package/styles/components/appearance.less +7 -1
  210. package/styles/components/button.less +13 -25
  211. package/styles/components/group.less +1 -1
  212. package/styles/components/icon.less +43 -22
  213. package/styles/components/icons.less +19 -14
  214. package/styles/components/label.less +4 -13
  215. package/styles/components/link.less +11 -28
  216. package/styles/components/notification.less +33 -67
  217. package/styles/components/textfield.less +128 -213
  218. package/styles/components/title.less +13 -13
  219. package/styles/mixins/appearance.less +11 -26
  220. package/styles/mixins/appearance.scss +9 -24
  221. package/styles/mixins/date-picker.less +1 -1
  222. package/styles/mixins/mixins.less +1 -7
  223. package/styles/mixins/mixins.scss +1 -7
  224. package/styles/mixins/picker.less +1 -1
  225. package/styles/mixins/picker.scss +1 -1
  226. package/styles/mixins/slider.less +31 -30
  227. package/styles/mixins/slider.scss +28 -32
  228. package/styles/taiga-ui-local.less +0 -1
  229. package/styles/taiga-ui-local.scss +0 -1
  230. package/styles/taiga-ui-theme.less +0 -1
  231. package/styles/theme/appearance/action.less +0 -14
  232. package/styles/theme/appearance/floating.less +5 -0
  233. package/styles/theme/appearance/outline.less +9 -18
  234. package/styles/theme/appearance/primary.less +2 -4
  235. package/styles/theme/appearance/secondary.less +6 -14
  236. package/styles/theme/appearance/status.less +0 -4
  237. package/styles/theme/appearance/table.less +36 -35
  238. package/styles/theme/appearance/textfield.less +27 -28
  239. package/styles/theme/appearance.less +0 -1
  240. package/styles/theme/variables.less +16 -19
  241. package/styles/variables/media.less +13 -18
  242. package/styles/variables/media.scss +13 -13
  243. package/tokens/breakpoint.d.ts +4 -0
  244. package/tokens/common-icons.d.ts +3 -3
  245. package/tokens/date-format.d.ts +2 -3
  246. package/tokens/i18n.d.ts +8 -8
  247. package/tokens/icon-resolver.d.ts +1 -5
  248. package/tokens/icons.d.ts +0 -4
  249. package/tokens/index.d.ts +2 -5
  250. package/tokens/number-format.d.ts +2 -3
  251. package/tokens/validation-errors.d.ts +4 -0
  252. package/types/direction.d.ts +1 -1
  253. package/types/index.d.ts +0 -3
  254. package/types/point.d.ts +1 -1
  255. package/types/size.d.ts +0 -11
  256. package/utils/format/index.d.ts +0 -1
  257. package/utils/miscellaneous/get-duration.d.ts +2 -0
  258. package/utils/miscellaneous/index.d.ts +2 -1
  259. package/utils/miscellaneous/provide-taiga.d.ts +13 -0
  260. package/animations/animations.d.ts +0 -109
  261. package/animations/index.d.ts +0 -1
  262. package/components/alert/alert.component.d.ts +0 -15
  263. package/components/alert/alert.directive.d.ts +0 -7
  264. package/components/alert/alert.interfaces.d.ts +0 -12
  265. package/components/alert/alert.service.d.ts +0 -7
  266. package/components/alert/alert.tokens.d.ts +0 -12
  267. package/components/alert/alerts.component.d.ts +0 -12
  268. package/components/alert/index.d.ts +0 -6
  269. package/components/data-list/data-list.directive.d.ts +0 -7
  270. package/components/data-list/option/option-content.d.ts +0 -16
  271. package/components/data-list/option/option-legacy.component.d.ts +0 -24
  272. package/components/data-list/option/option.directive.d.ts +0 -27
  273. package/components/dialog/active-zone-adapter.directive.d.ts +0 -11
  274. package/components/dialog/dialog.component.d.ts +0 -20
  275. package/components/dialog/dialog.directive.d.ts +0 -7
  276. package/components/dialog/dialog.interfaces.d.ts +0 -34
  277. package/components/dialog/dialog.service.d.ts +0 -7
  278. package/components/dialog/dialog.tokens.d.ts +0 -15
  279. package/components/dialog/dialogs.component.d.ts +0 -8
  280. package/components/dialog/index.d.ts +0 -8
  281. package/components/expand/expand-content.directive.d.ts +0 -8
  282. package/components/expand/expand.d.ts +0 -6
  283. package/components/fullscreen/fullscreen.component.d.ts +0 -14
  284. package/components/fullscreen/index.d.ts +0 -1
  285. package/components/link/link.options.d.ts +0 -12
  286. package/components/textfield/select.directive.d.ts +0 -19
  287. package/components/textfield/textfield-dropdown.directive.d.ts +0 -16
  288. package/components/textfield/textfield.directive.d.ts +0 -38
  289. package/directives/dropdown/dropdown-open-legacy.directive.d.ts +0 -12
  290. package/directives/dropdown/dropdown-open.directive.d.ts +0 -33
  291. package/directives/dropdown/dropdown-portal.directive.d.ts +0 -14
  292. package/directives/dropdown/dropdown.service.d.ts +0 -6
  293. package/directives/dropdown/dropdowns.component.d.ts +0 -9
  294. package/directives/hint/hint-options.directive.d.ts +0 -36
  295. package/directives/hint/hint.component.d.ts +0 -30
  296. package/directives/hint/hint.directive.d.ts +0 -26
  297. package/directives/hint/hint.service.d.ts +0 -13
  298. package/directives/hint/hints.component.d.ts +0 -12
  299. package/directives/popup/popup.directive.d.ts +0 -11
  300. package/directives/surface/index.d.ts +0 -1
  301. package/directives/surface/surface.directive.d.ts +0 -8
  302. package/esm2022/animations/animations.mjs +0 -363
  303. package/esm2022/animations/index.mjs +0 -2
  304. package/esm2022/animations/taiga-ui-core-animations.mjs +0 -5
  305. package/esm2022/classes/accessors.mjs +0 -31
  306. package/esm2022/classes/driver.mjs +0 -36
  307. package/esm2022/classes/index.mjs +0 -4
  308. package/esm2022/classes/taiga-ui-core-classes.mjs +0 -5
  309. package/esm2022/classes/vehicle.mjs +0 -7
  310. package/esm2022/components/alert/alert.component.mjs +0 -43
  311. package/esm2022/components/alert/alert.directive.mjs +0 -21
  312. package/esm2022/components/alert/alert.interfaces.mjs +0 -2
  313. package/esm2022/components/alert/alert.service.mjs +0 -18
  314. package/esm2022/components/alert/alert.tokens.mjs +0 -51
  315. package/esm2022/components/alert/alerts.component.mjs +0 -33
  316. package/esm2022/components/alert/index.mjs +0 -6
  317. package/esm2022/components/alert/taiga-ui-core-components-alert.mjs +0 -5
  318. package/esm2022/components/button/button.directive.mjs +0 -43
  319. package/esm2022/components/button/button.options.mjs +0 -7
  320. package/esm2022/components/button/index.mjs +0 -3
  321. package/esm2022/components/button/taiga-ui-core-components-button.mjs +0 -5
  322. package/esm2022/components/calendar/calendar-sheet.component.mjs +0 -168
  323. package/esm2022/components/calendar/calendar-sheet.options.mjs +0 -12
  324. package/esm2022/components/calendar/calendar-spin.component.mjs +0 -53
  325. package/esm2022/components/calendar/calendar-year.component.mjs +0 -128
  326. package/esm2022/components/calendar/calendar.component.mjs +0 -147
  327. package/esm2022/components/calendar/index.mjs +0 -6
  328. package/esm2022/components/calendar/taiga-ui-core-components-calendar.mjs +0 -5
  329. package/esm2022/components/data-list/data-list.component.mjs +0 -139
  330. package/esm2022/components/data-list/data-list.directive.mjs +0 -19
  331. package/esm2022/components/data-list/data-list.mjs +0 -14
  332. package/esm2022/components/data-list/data-list.tokens.mjs +0 -18
  333. package/esm2022/components/data-list/index.mjs +0 -9
  334. package/esm2022/components/data-list/opt-group.directive.mjs +0 -21
  335. package/esm2022/components/data-list/option/option-content.mjs +0 -36
  336. package/esm2022/components/data-list/option/option-legacy.component.mjs +0 -90
  337. package/esm2022/components/data-list/option/option.directive.mjs +0 -109
  338. package/esm2022/components/data-list/taiga-ui-core-components-data-list.mjs +0 -5
  339. package/esm2022/components/dialog/active-zone-adapter.directive.mjs +0 -37
  340. package/esm2022/components/dialog/dialog-close.service.mjs +0 -41
  341. package/esm2022/components/dialog/dialog.component.mjs +0 -63
  342. package/esm2022/components/dialog/dialog.directive.mjs +0 -21
  343. package/esm2022/components/dialog/dialog.factory.mjs +0 -15
  344. package/esm2022/components/dialog/dialog.interfaces.mjs +0 -2
  345. package/esm2022/components/dialog/dialog.service.mjs +0 -18
  346. package/esm2022/components/dialog/dialog.tokens.mjs +0 -33
  347. package/esm2022/components/dialog/dialogs.component.mjs +0 -31
  348. package/esm2022/components/dialog/index.mjs +0 -8
  349. package/esm2022/components/dialog/taiga-ui-core-components-dialog.mjs +0 -5
  350. package/esm2022/components/error/error.component.mjs +0 -34
  351. package/esm2022/components/error/index.mjs +0 -2
  352. package/esm2022/components/error/taiga-ui-core-components-error.mjs +0 -5
  353. package/esm2022/components/expand/expand-content.directive.mjs +0 -18
  354. package/esm2022/components/expand/expand.component.mjs +0 -124
  355. package/esm2022/components/expand/expand.mjs +0 -7
  356. package/esm2022/components/expand/index.mjs +0 -4
  357. package/esm2022/components/expand/taiga-ui-core-components-expand.mjs +0 -5
  358. package/esm2022/components/fullscreen/fullscreen.component.mjs +0 -71
  359. package/esm2022/components/fullscreen/index.mjs +0 -2
  360. package/esm2022/components/fullscreen/taiga-ui-core-components-fullscreen.mjs +0 -5
  361. package/esm2022/components/icon/icon.component.mjs +0 -44
  362. package/esm2022/components/icon/icon.pipe.mjs +0 -19
  363. package/esm2022/components/icon/index.mjs +0 -3
  364. package/esm2022/components/icon/taiga-ui-core-components-icon.mjs +0 -5
  365. package/esm2022/components/index.mjs +0 -18
  366. package/esm2022/components/label/index.mjs +0 -2
  367. package/esm2022/components/label/label.directive.mjs +0 -41
  368. package/esm2022/components/label/taiga-ui-core-components-label.mjs +0 -5
  369. package/esm2022/components/link/index.mjs +0 -3
  370. package/esm2022/components/link/link.directive.mjs +0 -47
  371. package/esm2022/components/link/link.options.mjs +0 -13
  372. package/esm2022/components/link/taiga-ui-core-components-link.mjs +0 -5
  373. package/esm2022/components/loader/index.mjs +0 -3
  374. package/esm2022/components/loader/loader.component.mjs +0 -46
  375. package/esm2022/components/loader/loader.options.mjs +0 -18
  376. package/esm2022/components/loader/taiga-ui-core-components-loader.mjs +0 -5
  377. package/esm2022/components/notification/index.mjs +0 -3
  378. package/esm2022/components/notification/notification.directive.mjs +0 -81
  379. package/esm2022/components/notification/notification.options.mjs +0 -23
  380. package/esm2022/components/notification/taiga-ui-core-components-notification.mjs +0 -5
  381. package/esm2022/components/root/index.mjs +0 -2
  382. package/esm2022/components/root/root.component.mjs +0 -87
  383. package/esm2022/components/root/taiga-ui-core-components-root.mjs +0 -5
  384. package/esm2022/components/scrollbar/index.mjs +0 -9
  385. package/esm2022/components/scrollbar/scroll-controls.component.mjs +0 -32
  386. package/esm2022/components/scrollbar/scroll-into-view.directive.mjs +0 -43
  387. package/esm2022/components/scrollbar/scroll-ref.directive.mjs +0 -19
  388. package/esm2022/components/scrollbar/scrollable.directive.mjs +0 -26
  389. package/esm2022/components/scrollbar/scrollbar.component.mjs +0 -72
  390. package/esm2022/components/scrollbar/scrollbar.directive.mjs +0 -93
  391. package/esm2022/components/scrollbar/scrollbar.options.mjs +0 -6
  392. package/esm2022/components/scrollbar/scrollbar.service.mjs +0 -46
  393. package/esm2022/components/scrollbar/taiga-ui-core-components-scrollbar.mjs +0 -5
  394. package/esm2022/components/spin-button/index.mjs +0 -2
  395. package/esm2022/components/spin-button/spin-button.component.mjs +0 -51
  396. package/esm2022/components/spin-button/taiga-ui-core-components-spin-button.mjs +0 -5
  397. package/esm2022/components/taiga-ui-core-components.mjs +0 -5
  398. package/esm2022/components/textfield/index.mjs +0 -16
  399. package/esm2022/components/textfield/select-like.directive.mjs +0 -44
  400. package/esm2022/components/textfield/select.directive.mjs +0 -64
  401. package/esm2022/components/textfield/taiga-ui-core-components-textfield.mjs +0 -5
  402. package/esm2022/components/textfield/textfield-accessor.mjs +0 -7
  403. package/esm2022/components/textfield/textfield-auxiliary.mjs +0 -7
  404. package/esm2022/components/textfield/textfield-content.directive.mjs +0 -22
  405. package/esm2022/components/textfield/textfield-dropdown.directive.mjs +0 -43
  406. package/esm2022/components/textfield/textfield-icon.mjs +0 -10
  407. package/esm2022/components/textfield/textfield-multi/textfield-item.component.mjs +0 -37
  408. package/esm2022/components/textfield/textfield-multi/textfield-multi.component.mjs +0 -145
  409. package/esm2022/components/textfield/textfield.component.mjs +0 -183
  410. package/esm2022/components/textfield/textfield.directive.mjs +0 -134
  411. package/esm2022/components/textfield/textfield.mjs +0 -19
  412. package/esm2022/components/textfield/textfield.options.mjs +0 -63
  413. package/esm2022/components/textfield/with-native-picker.directive.mjs +0 -24
  414. package/esm2022/directives/appearance/appearance.bindings.mjs +0 -15
  415. package/esm2022/directives/appearance/appearance.directive.mjs +0 -79
  416. package/esm2022/directives/appearance/appearance.options.mjs +0 -12
  417. package/esm2022/directives/appearance/index.mjs +0 -5
  418. package/esm2022/directives/appearance/taiga-ui-core-directives-appearance.mjs +0 -5
  419. package/esm2022/directives/appearance/with-appearance.mjs +0 -27
  420. package/esm2022/directives/date-format/date-format.directive.mjs +0 -31
  421. package/esm2022/directives/date-format/index.mjs +0 -2
  422. package/esm2022/directives/date-format/taiga-ui-core-directives-date-format.mjs +0 -5
  423. package/esm2022/directives/dropdown/dropdown-context.directive.mjs +0 -76
  424. package/esm2022/directives/dropdown/dropdown-hover.directive.mjs +0 -70
  425. package/esm2022/directives/dropdown/dropdown-hover.options.mjs +0 -17
  426. package/esm2022/directives/dropdown/dropdown-limit-width.mjs +0 -37
  427. package/esm2022/directives/dropdown/dropdown-manual.directive.mjs +0 -27
  428. package/esm2022/directives/dropdown/dropdown-open-legacy.directive.mjs +0 -33
  429. package/esm2022/directives/dropdown/dropdown-open.directive.mjs +0 -169
  430. package/esm2022/directives/dropdown/dropdown-options.directive.mjs +0 -73
  431. package/esm2022/directives/dropdown/dropdown-portal.directive.mjs +0 -34
  432. package/esm2022/directives/dropdown/dropdown-position-sided.directive.mjs +0 -69
  433. package/esm2022/directives/dropdown/dropdown-position.directive.mjs +0 -88
  434. package/esm2022/directives/dropdown/dropdown-selection.directive.mjs +0 -159
  435. package/esm2022/directives/dropdown/dropdown.bindings.mjs +0 -19
  436. package/esm2022/directives/dropdown/dropdown.component.mjs +0 -92
  437. package/esm2022/directives/dropdown/dropdown.directive.mjs +0 -110
  438. package/esm2022/directives/dropdown/dropdown.driver.mjs +0 -32
  439. package/esm2022/directives/dropdown/dropdown.mjs +0 -29
  440. package/esm2022/directives/dropdown/dropdown.providers.mjs +0 -10
  441. package/esm2022/directives/dropdown/dropdown.service.mjs +0 -15
  442. package/esm2022/directives/dropdown/dropdowns.component.mjs +0 -24
  443. package/esm2022/directives/dropdown/index.mjs +0 -22
  444. package/esm2022/directives/dropdown/taiga-ui-core-directives-dropdown.mjs +0 -5
  445. package/esm2022/directives/dropdown/with-dropdown-open.directive.mjs +0 -23
  446. package/esm2022/directives/group/group.directive.mjs +0 -53
  447. package/esm2022/directives/group/group.options.mjs +0 -15
  448. package/esm2022/directives/group/index.mjs +0 -3
  449. package/esm2022/directives/group/taiga-ui-core-directives-group.mjs +0 -5
  450. package/esm2022/directives/hint/hint-describe.directive.mjs +0 -50
  451. package/esm2022/directives/hint/hint-driver.directive.mjs +0 -19
  452. package/esm2022/directives/hint/hint-host.directive.mjs +0 -27
  453. package/esm2022/directives/hint/hint-hover.directive.mjs +0 -59
  454. package/esm2022/directives/hint/hint-manual.directive.mjs +0 -33
  455. package/esm2022/directives/hint/hint-options.directive.mjs +0 -86
  456. package/esm2022/directives/hint/hint-overflow.directive.mjs +0 -38
  457. package/esm2022/directives/hint/hint-pointer.directive.mjs +0 -33
  458. package/esm2022/directives/hint/hint-position.directive.mjs +0 -115
  459. package/esm2022/directives/hint/hint-unstyled.component.mjs +0 -39
  460. package/esm2022/directives/hint/hint.component.mjs +0 -127
  461. package/esm2022/directives/hint/hint.directive.mjs +0 -99
  462. package/esm2022/directives/hint/hint.mjs +0 -27
  463. package/esm2022/directives/hint/hint.providers.mjs +0 -9
  464. package/esm2022/directives/hint/hint.service.mjs +0 -29
  465. package/esm2022/directives/hint/hints.component.mjs +0 -34
  466. package/esm2022/directives/hint/index.mjs +0 -17
  467. package/esm2022/directives/hint/taiga-ui-core-directives-hint.mjs +0 -5
  468. package/esm2022/directives/icons/icons.directive.mjs +0 -66
  469. package/esm2022/directives/icons/index.mjs +0 -3
  470. package/esm2022/directives/icons/taiga-ui-core-directives-icons.mjs +0 -5
  471. package/esm2022/directives/icons/with-icons.mjs +0 -22
  472. package/esm2022/directives/index.mjs +0 -12
  473. package/esm2022/directives/items-handlers/index.mjs +0 -4
  474. package/esm2022/directives/items-handlers/items-handlers.directive.mjs +0 -63
  475. package/esm2022/directives/items-handlers/items-handlers.tokens.mjs +0 -27
  476. package/esm2022/directives/items-handlers/items-handlers.validator.mjs +0 -32
  477. package/esm2022/directives/items-handlers/taiga-ui-core-directives-items-handlers.mjs +0 -5
  478. package/esm2022/directives/number-format/index.mjs +0 -2
  479. package/esm2022/directives/number-format/number-format.directive.mjs +0 -31
  480. package/esm2022/directives/number-format/taiga-ui-core-directives-number-format.mjs +0 -5
  481. package/esm2022/directives/popup/index.mjs +0 -4
  482. package/esm2022/directives/popup/popup.directive.mjs +0 -31
  483. package/esm2022/directives/popup/popup.service.mjs +0 -15
  484. package/esm2022/directives/popup/popups.component.mjs +0 -20
  485. package/esm2022/directives/popup/taiga-ui-core-directives-popup.mjs +0 -5
  486. package/esm2022/directives/surface/index.mjs +0 -2
  487. package/esm2022/directives/surface/surface.directive.mjs +0 -44
  488. package/esm2022/directives/surface/taiga-ui-core-directives-surface.mjs +0 -5
  489. package/esm2022/directives/taiga-ui-core-directives.mjs +0 -5
  490. package/esm2022/directives/title/index.mjs +0 -2
  491. package/esm2022/directives/title/taiga-ui-core-directives-title.mjs +0 -5
  492. package/esm2022/directives/title/title.directive.mjs +0 -37
  493. package/esm2022/index.mjs +0 -9
  494. package/esm2022/pipes/auto-color/auto-color.pipe.mjs +0 -19
  495. package/esm2022/pipes/auto-color/index.mjs +0 -2
  496. package/esm2022/pipes/auto-color/taiga-ui-core-pipes-auto-color.mjs +0 -5
  497. package/esm2022/pipes/calendar-sheet/calendar-sheet.pipe.mjs +0 -54
  498. package/esm2022/pipes/calendar-sheet/index.mjs +0 -2
  499. package/esm2022/pipes/calendar-sheet/taiga-ui-core-pipes-calendar-sheet.mjs +0 -5
  500. package/esm2022/pipes/calendar-sheet/utils.mjs +0 -36
  501. package/esm2022/pipes/fallback-src/fallback-src.pipe.mjs +0 -23
  502. package/esm2022/pipes/fallback-src/index.mjs +0 -2
  503. package/esm2022/pipes/fallback-src/taiga-ui-core-pipes-fallback-src.mjs +0 -5
  504. package/esm2022/pipes/flag/flag.pipe.mjs +0 -26
  505. package/esm2022/pipes/flag/index.mjs +0 -2
  506. package/esm2022/pipes/flag/taiga-ui-core-pipes-flag.mjs +0 -5
  507. package/esm2022/pipes/format-date/format-date.pipe.mjs +0 -22
  508. package/esm2022/pipes/format-date/index.mjs +0 -2
  509. package/esm2022/pipes/format-date/taiga-ui-core-pipes-format-date.mjs +0 -5
  510. package/esm2022/pipes/format-number/format-number.pipe.mjs +0 -36
  511. package/esm2022/pipes/format-number/index.mjs +0 -2
  512. package/esm2022/pipes/format-number/taiga-ui-core-pipes-format-number.mjs +0 -5
  513. package/esm2022/pipes/index.mjs +0 -10
  514. package/esm2022/pipes/initials/index.mjs +0 -2
  515. package/esm2022/pipes/initials/initials.pipe.mjs +0 -23
  516. package/esm2022/pipes/initials/taiga-ui-core-pipes-initials.mjs +0 -5
  517. package/esm2022/pipes/month/index.mjs +0 -2
  518. package/esm2022/pipes/month/month.pipe.mjs +0 -23
  519. package/esm2022/pipes/month/taiga-ui-core-pipes-month.mjs +0 -5
  520. package/esm2022/pipes/order-week-days/index.mjs +0 -2
  521. package/esm2022/pipes/order-week-days/order-week-days.pipe.mjs +0 -30
  522. package/esm2022/pipes/order-week-days/taiga-ui-core-pipes-order-week-days.mjs +0 -5
  523. package/esm2022/pipes/taiga-ui-core-pipes.mjs +0 -5
  524. package/esm2022/services/breakpoint.service.mjs +0 -31
  525. package/esm2022/services/dark-theme.service.mjs +0 -24
  526. package/esm2022/services/format-date.service.mjs +0 -24
  527. package/esm2022/services/index.mjs +0 -6
  528. package/esm2022/services/position.service.mjs +0 -26
  529. package/esm2022/services/taiga-ui-core-services.mjs +0 -5
  530. package/esm2022/services/visual-viewport.service.mjs +0 -29
  531. package/esm2022/taiga-ui-core.mjs +0 -5
  532. package/esm2022/tokens/animations-speed.mjs +0 -9
  533. package/esm2022/tokens/assets-path.mjs +0 -11
  534. package/esm2022/tokens/auxiliary.mjs +0 -9
  535. package/esm2022/tokens/common-icons.mjs +0 -18
  536. package/esm2022/tokens/dark-mode.mjs +0 -43
  537. package/esm2022/tokens/date-format.mjs +0 -20
  538. package/esm2022/tokens/day-type-handler.mjs +0 -8
  539. package/esm2022/tokens/first-day-of-week.mjs +0 -9
  540. package/esm2022/tokens/i18n.mjs +0 -51
  541. package/esm2022/tokens/icon-resolver.mjs +0 -44
  542. package/esm2022/tokens/icon.mjs +0 -8
  543. package/esm2022/tokens/icons.mjs +0 -21
  544. package/esm2022/tokens/index.mjs +0 -21
  545. package/esm2022/tokens/media.mjs +0 -12
  546. package/esm2022/tokens/number-format.mjs +0 -24
  547. package/esm2022/tokens/reduced-motion.mjs +0 -7
  548. package/esm2022/tokens/scroll-ref.mjs +0 -6
  549. package/esm2022/tokens/selection-stream.mjs +0 -14
  550. package/esm2022/tokens/spin-icons.mjs +0 -8
  551. package/esm2022/tokens/taiga-ui-core-tokens.mjs +0 -5
  552. package/esm2022/tokens/theme.mjs +0 -5
  553. package/esm2022/tokens/viewport.mjs +0 -35
  554. package/esm2022/types/direction.mjs +0 -2
  555. package/esm2022/types/index.mjs +0 -2
  556. package/esm2022/types/interactive-state.mjs +0 -2
  557. package/esm2022/types/orientation.mjs +0 -2
  558. package/esm2022/types/point.mjs +0 -2
  559. package/esm2022/types/portal-item.mjs +0 -2
  560. package/esm2022/types/range-state.mjs +0 -2
  561. package/esm2022/types/size.mjs +0 -13
  562. package/esm2022/types/taiga-ui-core-types.mjs +0 -5
  563. package/esm2022/types/value-content-context.mjs +0 -2
  564. package/esm2022/utils/dom/check-fixed-position.mjs +0 -9
  565. package/esm2022/utils/dom/get-viewport.mjs +0 -24
  566. package/esm2022/utils/dom/get-word-range.mjs +0 -51
  567. package/esm2022/utils/dom/index.mjs +0 -4
  568. package/esm2022/utils/dom/taiga-ui-core-utils-dom.mjs +0 -5
  569. package/esm2022/utils/format/format-number.mjs +0 -47
  570. package/esm2022/utils/format/get-fractional-part-padded.mjs +0 -16
  571. package/esm2022/utils/format/index.mjs +0 -5
  572. package/esm2022/utils/format/number-to-string-without-exp.mjs +0 -18
  573. package/esm2022/utils/format/string-hash-to-hsl.mjs +0 -21
  574. package/esm2022/utils/format/taiga-ui-core-utils-format.mjs +0 -5
  575. package/esm2022/utils/index.mjs +0 -4
  576. package/esm2022/utils/miscellaneous/font-scaling.mjs +0 -21
  577. package/esm2022/utils/miscellaneous/index.mjs +0 -7
  578. package/esm2022/utils/miscellaneous/is-editing-key.mjs +0 -18
  579. package/esm2022/utils/miscellaneous/is-obscured.mjs +0 -8
  580. package/esm2022/utils/miscellaneous/override-options.mjs +0 -11
  581. package/esm2022/utils/miscellaneous/size-bigger.mjs +0 -19
  582. package/esm2022/utils/miscellaneous/taiga-ui-core-utils-miscellaneous.mjs +0 -5
  583. package/esm2022/utils/miscellaneous/to-animation-options.mjs +0 -16
  584. package/esm2022/utils/taiga-ui-core-utils.mjs +0 -5
  585. package/fesm2022/taiga-ui-core-animations.mjs +0 -370
  586. package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
  587. package/fesm2022/taiga-ui-core-components-alert.mjs +0 -149
  588. package/fesm2022/taiga-ui-core-components-alert.mjs.map +0 -1
  589. package/fesm2022/taiga-ui-core-components-dialog.mjs +0 -230
  590. package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
  591. package/fesm2022/taiga-ui-core-components-fullscreen.mjs +0 -77
  592. package/fesm2022/taiga-ui-core-components-fullscreen.mjs.map +0 -1
  593. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +0 -1
  594. package/fesm2022/taiga-ui-core-directives-hint.mjs +0 -713
  595. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +0 -1
  596. package/fesm2022/taiga-ui-core-directives-popup.mjs +0 -63
  597. package/fesm2022/taiga-ui-core-directives-popup.mjs.map +0 -1
  598. package/fesm2022/taiga-ui-core-directives-surface.mjs +0 -50
  599. package/fesm2022/taiga-ui-core-directives-surface.mjs.map +0 -1
  600. package/fesm2022/taiga-ui-core-directives-title.mjs +0 -43
  601. package/fesm2022/taiga-ui-core-directives-title.mjs.map +0 -1
  602. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs +0 -25
  603. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs.map +0 -1
  604. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs +0 -94
  605. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs.map +0 -1
  606. package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs +0 -29
  607. package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs.map +0 -1
  608. package/fesm2022/taiga-ui-core-pipes-flag.mjs +0 -32
  609. package/fesm2022/taiga-ui-core-pipes-flag.mjs.map +0 -1
  610. package/fesm2022/taiga-ui-core-pipes-format-date.mjs +0 -28
  611. package/fesm2022/taiga-ui-core-pipes-format-date.mjs.map +0 -1
  612. package/fesm2022/taiga-ui-core-pipes-initials.mjs +0 -29
  613. package/fesm2022/taiga-ui-core-pipes-initials.mjs.map +0 -1
  614. package/fesm2022/taiga-ui-core-pipes-month.mjs +0 -29
  615. package/fesm2022/taiga-ui-core-pipes-month.mjs.map +0 -1
  616. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs +0 -36
  617. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs.map +0 -1
  618. package/pipes/auto-color/auto-color.pipe.d.ts +0 -7
  619. package/pipes/auto-color/index.d.ts +0 -1
  620. package/pipes/calendar-sheet/index.d.ts +0 -1
  621. package/pipes/calendar-sheet/utils.d.ts +0 -20
  622. package/pipes/fallback-src/fallback-src.pipe.d.ts +0 -9
  623. package/pipes/fallback-src/index.d.ts +0 -1
  624. package/pipes/flag/flag.pipe.d.ts +0 -14
  625. package/pipes/flag/index.d.ts +0 -1
  626. package/pipes/format-date/format-date.pipe.d.ts +0 -9
  627. package/pipes/format-date/index.d.ts +0 -1
  628. package/pipes/initials/index.d.ts +0 -1
  629. package/pipes/initials/initials.pipe.d.ts +0 -7
  630. package/pipes/month/index.d.ts +0 -1
  631. package/pipes/month/month.pipe.d.ts +0 -10
  632. package/pipes/order-week-days/index.d.ts +0 -1
  633. package/services/breakpoint.service.d.ts +0 -16
  634. package/services/dark-theme.service.d.ts +0 -10
  635. package/services/format-date.service.d.ts +0 -8
  636. package/styles/mixins/wrapper.less +0 -64
  637. package/styles/mixins/wrapper.scss +0 -61
  638. package/styles/theme/appearance/opposite.less +0 -17
  639. package/styles/theme/wrapper.less +0 -211
  640. package/tokens/day-type-handler.d.ts +0 -7
  641. package/tokens/first-day-of-week.d.ts +0 -5
  642. package/tokens/scroll-ref.d.ts +0 -2
  643. package/tokens/spin-icons.d.ts +0 -6
  644. package/tokens/theme.d.ts +0 -2
  645. package/types/portal-item.d.ts +0 -9
  646. package/types/range-state.d.ts +0 -4
  647. package/types/value-content-context.d.ts +0 -4
  648. package/utils/format/string-hash-to-hsl.d.ts +0 -6
  649. package/utils/miscellaneous/to-animation-options.d.ts +0 -4
  650. /package/{directives → components}/title/index.d.ts +0 -0
  651. /package/{directives → portals}/dropdown/dropdown-limit-width.d.ts +0 -0
  652. /package/{directives → portals}/dropdown/dropdown.component.d.ts +0 -0
  653. /package/{directives → portals}/dropdown/dropdown.driver.d.ts +0 -0
  654. /package/{directives → portals}/dropdown/dropdown.providers.d.ts +0 -0
  655. /package/{directives → portals}/dropdown/with-dropdown-open.directive.d.ts +0 -0
  656. /package/{directives → portals}/hint/hint-driver.directive.d.ts +0 -0
  657. /package/{directives → portals}/hint/hint-pointer.directive.d.ts +0 -0
  658. /package/{directives → portals}/hint/hint.providers.d.ts +0 -0
  659. /package/{directives → portals}/popup/index.d.ts +0 -0
@@ -1,81 +1,63 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, Input, EventEmitter, Output, ChangeDetectorRef, INJECTOR, signal, TemplateRef, computed, Component, ChangeDetectionStrategy, ElementRef, ContentChild, ViewContainerRef } from '@angular/core';
3
- import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
2
+ import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, ChangeDetectorRef, effect, signal, INJECTOR, input, computed, TemplateRef, forwardRef, ChangeDetectionStrategy, Component, PLATFORM_ID, contentChild, ElementRef, model, ViewContainerRef } from '@angular/core';
3
+ import { outputFromObservable, takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
4
4
  import { EMPTY_CLIENT_RECT, TUI_TRUE_HANDLER, CHAR_ZERO_WIDTH_SPACE, CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
5
5
  import * as i1 from '@taiga-ui/cdk/directives/active-zone';
6
6
  import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
7
7
  import * as i2 from '@taiga-ui/cdk/directives/animated';
8
8
  import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
9
- import { tuiInjectElement, tuiGetActualTarget, tuiPointToClientRect, tuiIsElement, tuiIsHTMLElement, tuiIsElementEditable, tuiIsTextNode, tuiIsTextfield } from '@taiga-ui/cdk/utils/dom';
9
+ import { tuiInjectElement, tuiGetActualTarget, tuiPointToClientRect, tuiIsElement, tuiIsElementEditable, tuiIsHTMLElement, tuiIsTextNode, tuiIsTextfield } from '@taiga-ui/cdk/utils/dom';
10
10
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
11
- import { tuiProvide, tuiPure, tuiPx, tuiProvideOptions, tuiIsString, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/miscellaneous';
12
- import { TuiDriverDirective, TuiPositionAccessor, tuiFallbackAccessor, TuiRectAccessor, tuiAsRectAccessor, tuiAsVehicle, tuiPositionAccessorFor, tuiRectAccessorFor, tuiAsDriver, TuiDriver, tuiAsPositionAccessor } from '@taiga-ui/core/classes';
11
+ import { tuiPx, tuiSetSignal, tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
12
+ import { TuiDriverDirective, TuiPositionAccessor, tuiFallbackAccessor, TuiRectAccessor, tuiAsVehicle, tuiPositionAccessorFor, tuiRectAccessorFor, tuiAsDriver, tuiAsRectAccessor, TuiDriver, tuiAsPositionAccessor } from '@taiga-ui/core/classes';
13
13
  import { TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
14
14
  import { TuiVisualViewportService, TuiPositionService } from '@taiga-ui/core/services';
15
15
  import { TUI_VIEWPORT, TUI_DARK_MODE, TUI_SELECTION_STREAM } from '@taiga-ui/core/tokens';
16
16
  import { PolymorpheusComponent, PolymorpheusTemplate, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
17
- import { BehaviorSubject, Subject, throttleTime, takeWhile, map, merge, filter, fromEvent, switchMap, delay, startWith, takeUntil, distinctUntilChanged, of, tap, share, combineLatest } from 'rxjs';
17
+ import { BehaviorSubject, Subject, distinctUntilChanged, throttleTime, takeWhile, map, merge, filter, EMPTY, switchMap, delay, startWith, takeUntil, fromEvent, of, tap, share, combineLatest } from 'rxjs';
18
18
  import { coerceArray } from '@angular/cdk/coercion';
19
- import { tuiZonefreeScheduler, tuiTypedFromEvent, tuiZonefree, tuiIfMap, tuiCloseWatcher, tuiZonefull, tuiWatch, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
20
- import { tuiOverrideOptions, tuiCheckFixedPosition, tuiGetWordRange } from '@taiga-ui/core/utils';
21
- import { TuiPortalService, TuiPortals, tuiAsPortal } from '@taiga-ui/cdk/classes';
22
- import { __decorate } from 'tslib';
23
- import { DOCUMENT } from '@angular/common';
24
- import { TUI_IS_TOUCH, TUI_RANGE } from '@taiga-ui/cdk/tokens';
25
- import { shouldCall } from '@taiga-ui/event-plugins';
19
+ import { tuiZonefreeScheduler, tuiTypedFromEvent, tuiZoneOptimized, tuiIfMap, tuiCloseWatcher, tuiStopPropagation } from '@taiga-ui/cdk/observables';
20
+ import { TuiPopupService } from '@taiga-ui/core/portals/popup';
21
+ import { tuiCheckFixedPosition, tuiGetWordRange } from '@taiga-ui/core/utils/dom';
22
+ import { tuiProvide, tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
23
+ import { tuiOverrideOptions, tuiIsEditingKey } from '@taiga-ui/core/utils/miscellaneous';
24
+ import { isPlatformBrowser, DOCUMENT } from '@angular/common';
25
+ import { WA_IS_TOUCH } from '@ng-web-apis/platform';
26
26
  import * as i1$1 from '@taiga-ui/cdk/directives/obscured';
27
27
  import { TuiObscured } from '@taiga-ui/cdk/directives/obscured';
28
- import { tuiIsNativeKeyboardFocusable, tuiGetClosestFocusable, tuiIsNativeFocusedIn, tuiGetNativeFocused } from '@taiga-ui/cdk/utils/focus';
29
- import { tuiIsEditingKey, tuiOverrideOptions as tuiOverrideOptions$1 } from '@taiga-ui/core/utils/miscellaneous';
28
+ import { tuiIsFocusable, tuiGetClosestFocusable, tuiIsFocusedIn, tuiGetFocused } from '@taiga-ui/cdk/utils/focus';
30
29
 
31
30
  class TuiDropdownDriver extends BehaviorSubject {
32
31
  constructor() {
33
32
  super(false);
34
33
  this.type = 'dropdown';
35
34
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
37
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDriver }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownDriver }); }
38
37
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDriver, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownDriver, decorators: [{
40
39
  type: Injectable
41
- }], ctorParameters: function () { return []; } });
40
+ }], ctorParameters: () => [] });
42
41
  class TuiDropdownDriverDirective extends TuiDriverDirective {
43
42
  constructor() {
44
43
  super(...arguments);
45
44
  this.type = 'dropdown';
46
45
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDriverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
48
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownDriverDirective, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownDriverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
47
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownDriverDirective, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
49
48
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDriverDirective, decorators: [{
51
- type: Directive,
52
- args: [{
53
- standalone: true,
54
- }]
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownDriverDirective, decorators: [{
50
+ type: Directive
55
51
  }] });
56
52
 
57
53
  /**
58
54
  * A component to display a dropdown
59
55
  */
60
- const TUI_DROPDOWN_COMPONENT = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_COMPONENT' : '', {
61
- factory: () => TuiDropdownComponent,
62
- });
56
+ const TUI_DROPDOWN_COMPONENT = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_COMPONENT' : '', { factory: () => TuiDropdownComponent });
63
57
  const TUI_DROPDOWN_CONTEXT = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_CONTEXT' : '');
64
58
 
65
- class TuiDropdownService extends TuiPortalService {
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownService, providedIn: 'root' }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownService, decorators: [{
70
- type: Injectable,
71
- args: [{
72
- providedIn: 'root',
73
- }]
74
- }] });
75
-
76
- /** Default values for dropdown options */
77
59
  const TUI_DROPDOWN_DEFAULT_OPTIONS = {
78
- align: 'left',
60
+ align: 'start',
79
61
  direction: null,
80
62
  limitWidth: 'auto',
81
63
  maxHeight: 400,
@@ -83,12 +65,7 @@ const TUI_DROPDOWN_DEFAULT_OPTIONS = {
83
65
  offset: 4,
84
66
  appearance: '',
85
67
  };
86
- /**
87
- * Default parameters for dropdown directive
88
- */
89
- const TUI_DROPDOWN_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_OPTIONS' : '', {
90
- factory: () => TUI_DROPDOWN_DEFAULT_OPTIONS,
91
- });
68
+ const TUI_DROPDOWN_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_OPTIONS' : '', { factory: () => TUI_DROPDOWN_DEFAULT_OPTIONS });
92
69
  const tuiDropdownOptionsProvider = (override) => ({
93
70
  provide: TUI_DROPDOWN_OPTIONS,
94
71
  deps: [
@@ -108,38 +85,25 @@ class TuiDropdownOptionsDirective {
108
85
  this.maxHeight = this.options.maxHeight;
109
86
  this.offset = this.options.offset;
110
87
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownOptionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
112
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownOptionsDirective, isStandalone: true, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: { align: ["tuiDropdownAlign", "align"], appearance: ["tuiDropdownAppearance", "appearance"], direction: ["tuiDropdownDirection", "direction"], limitWidth: ["tuiDropdownLimitWidth", "limitWidth"], minHeight: ["tuiDropdownMinHeight", "minHeight"], maxHeight: ["tuiDropdownMaxHeight", "maxHeight"], offset: ["tuiDropdownOffset", "offset"] }, providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)], ngImport: i0 }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownOptionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
89
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownOptionsDirective, isStandalone: true, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: { align: ["tuiDropdownAlign", "align"], appearance: ["tuiDropdownAppearance", "appearance"], direction: ["tuiDropdownDirection", "direction"], limitWidth: ["tuiDropdownLimitWidth", "limitWidth"], minHeight: ["tuiDropdownMinHeight", "minHeight"], maxHeight: ["tuiDropdownMaxHeight", "maxHeight"], offset: ["tuiDropdownOffset", "offset"] }, providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)], ngImport: i0 }); }
113
90
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownOptionsDirective, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownOptionsDirective, decorators: [{
115
92
  type: Directive,
116
93
  args: [{
117
- standalone: true,
118
94
  selector: '[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]',
95
+ inputs: [
96
+ 'align: tuiDropdownAlign',
97
+ 'appearance: tuiDropdownAppearance',
98
+ 'direction: tuiDropdownDirection',
99
+ 'limitWidth: tuiDropdownLimitWidth',
100
+ 'minHeight: tuiDropdownMinHeight',
101
+ 'maxHeight: tuiDropdownMaxHeight',
102
+ 'offset: tuiDropdownOffset',
103
+ ],
119
104
  providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)],
120
105
  }]
121
- }], propDecorators: { align: [{
122
- type: Input,
123
- args: ['tuiDropdownAlign']
124
- }], appearance: [{
125
- type: Input,
126
- args: ['tuiDropdownAppearance']
127
- }], direction: [{
128
- type: Input,
129
- args: ['tuiDropdownDirection']
130
- }], limitWidth: [{
131
- type: Input,
132
- args: ['tuiDropdownLimitWidth']
133
- }], minHeight: [{
134
- type: Input,
135
- args: ['tuiDropdownMinHeight']
136
- }], maxHeight: [{
137
- type: Input,
138
- args: ['tuiDropdownMaxHeight']
139
- }], offset: [{
140
- type: Input,
141
- args: ['tuiDropdownOffset']
142
- }] } });
106
+ }] });
143
107
 
144
108
  class TuiDropdownPosition extends TuiPositionAccessor {
145
109
  constructor() {
@@ -147,18 +111,16 @@ class TuiDropdownPosition extends TuiPositionAccessor {
147
111
  this.el = tuiInjectElement();
148
112
  this.options = inject(TUI_DROPDOWN_OPTIONS);
149
113
  this.viewport = inject(TUI_VIEWPORT);
150
- this.directionChange = new EventEmitter();
114
+ this.direction = new Subject();
151
115
  this.type = 'dropdown';
152
- this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor), inject(TuiDropdownDirective, { optional: true }));
153
- }
154
- emitDirection(direction) {
155
- this.directionChange.emit(direction);
116
+ this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor, { optional: true }), { getClientRect: () => this.el.getBoundingClientRect() });
117
+ this.tuiDropdownDirectionChange = outputFromObservable(this.direction.pipe(distinctUntilChanged()));
156
118
  }
157
119
  getPosition({ width, height }) {
158
120
  if (!width && !height) {
159
121
  this.previous = undefined;
160
122
  }
161
- const hostRect = this.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;
123
+ const hostRect = this.accessor.getClientRect();
162
124
  const viewportRect = this.viewport.getClientRect();
163
125
  const { minHeight, direction, offset, limitWidth } = this.options;
164
126
  const align = this.getAlign(this.options.align);
@@ -188,42 +150,38 @@ class TuiDropdownPosition extends TuiPositionAccessor {
188
150
  const better = available.top > available.bottom ? 'top' : 'bottom';
189
151
  if ((available[previous] > minHeight && direction) ||
190
152
  available[previous] > height) {
191
- this.emitDirection(previous);
192
- return [position[previous], position[align]];
153
+ this.direction.next(previous);
154
+ return [position[align], position[previous]];
193
155
  }
194
156
  this.previous = better;
195
- this.emitDirection(better);
196
- return [position[better], position[align]];
157
+ this.direction.next(better);
158
+ return [position[align], position[better]];
197
159
  }
198
160
  getAlign(align) {
199
161
  const rtl = this.el.matches('[dir="rtl"] :scope');
200
- if (rtl && align === 'left') {
162
+ if (rtl && align === 'start') {
201
163
  return 'right';
202
164
  }
203
- return rtl && align === 'right' ? 'left' : align;
165
+ if (rtl && align === 'end') {
166
+ return 'left';
167
+ }
168
+ if (align === 'center') {
169
+ return 'center';
170
+ }
171
+ return align === 'end' ? 'right' : 'left';
204
172
  }
205
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
206
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownPosition, isStandalone: true, outputs: { directionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
173
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
174
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownPosition, isStandalone: true, outputs: { tuiDropdownDirectionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
207
175
  }
208
- __decorate([
209
- tuiPure
210
- ], TuiDropdownPosition.prototype, "emitDirection", null);
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPosition, decorators: [{
212
- type: Directive,
213
- args: [{
214
- standalone: true,
215
- }]
216
- }], propDecorators: { directionChange: [{
217
- type: Output,
218
- args: ['tuiDropdownDirectionChange']
219
- }], emitDirection: [] } });
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownPosition, decorators: [{
177
+ type: Directive
178
+ }] });
220
179
 
221
180
  class TuiDropdownDirective {
222
181
  constructor() {
223
182
  this.refresh$ = new Subject();
224
- this.service = inject(TuiDropdownService);
183
+ this.service = inject(TuiPopupService);
225
184
  this.cdr = inject(ChangeDetectorRef);
226
- // TODO: think of a better solution later
227
185
  this.drivers = coerceArray(inject(TuiDropdownDriver, { self: true, optional: true }));
228
186
  this.sub = this.refresh$
229
187
  .pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())
@@ -231,33 +189,25 @@ class TuiDropdownDirective {
231
189
  this.ref()?.changeDetectorRef.detectChanges();
232
190
  this.ref()?.changeDetectorRef.markForCheck();
233
191
  });
192
+ this.autoClose = effect(() => {
193
+ if (!this.content()) {
194
+ this.toggle(false);
195
+ }
196
+ });
197
+ this.ref = signal(null);
234
198
  this.el = tuiInjectElement();
235
199
  this.type = 'dropdown';
236
200
  this.component = new PolymorpheusComponent(inject(TUI_DROPDOWN_COMPONENT), inject(INJECTOR));
237
- this.ref = signal(null);
238
- // TODO(v5): rename to `content`
239
- // eslint-disable-next-line @typescript-eslint/naming-convention
240
- this._content = signal(null);
241
- }
242
- set tuiDropdown(content) {
243
- this._content.set(content instanceof TemplateRef
244
- ? new PolymorpheusTemplate(content, this.cdr)
245
- : content);
246
- if (!this._content()) {
247
- this.toggle(false);
248
- }
201
+ this.tuiDropdown = input();
202
+ this.content = computed((content = this.tuiDropdown()) => {
203
+ return content instanceof TemplateRef
204
+ ? new PolymorpheusTemplate(content, this.cdr)
205
+ : content;
206
+ });
249
207
  }
250
208
  get position() {
251
209
  return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';
252
210
  }
253
- // TODO(v5): delete
254
- get content() {
255
- return this._content();
256
- }
257
- // TODO(v5): delete
258
- set content(x) {
259
- this._content.set(x);
260
- }
261
211
  ngAfterViewChecked() {
262
212
  this.refresh$.next();
263
213
  }
@@ -269,32 +219,25 @@ class TuiDropdownDirective {
269
219
  }
270
220
  toggle(show) {
271
221
  const ref = this.ref();
272
- if (show && this._content() && !ref) {
222
+ if (show && this.content() && !ref) {
273
223
  this.ref.set(this.service.add(this.component));
274
224
  }
275
225
  else if (!show && ref) {
276
226
  this.ref.set(null);
277
- this.service.remove(ref);
227
+ ref.destroy();
278
228
  }
279
- this.drivers.forEach((driver) => driver?.next(show));
280
229
  // TODO: Remove in v5, only needed in Angular 16
281
230
  this.cdr.markForCheck();
231
+ this.drivers.forEach((driver) => driver?.next(show));
282
232
  }
283
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
284
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownDirective, isStandalone: true, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: { tuiDropdown: "tuiDropdown" }, host: { properties: { "class.tui-dropdown-open": "ref()" } }, providers: [
285
- tuiAsRectAccessor(TuiDropdownDirective),
286
- tuiAsVehicle(TuiDropdownDirective),
287
- ], exportAs: ["tuiDropdown"], hostDirectives: [{ directive: TuiDropdownDriverDirective }, { directive: TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
234
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.18", type: TuiDropdownDirective, isStandalone: true, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: { tuiDropdown: { classPropertyName: "tuiDropdown", publicName: "tuiDropdown", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tui-dropdown-open": "ref()" } }, providers: [tuiAsVehicle(TuiDropdownDirective)], exportAs: ["tuiDropdown"], hostDirectives: [{ directive: TuiDropdownDriverDirective }, { directive: TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
288
235
  }
289
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownDirective, decorators: [{
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownDirective, decorators: [{
290
237
  type: Directive,
291
238
  args: [{
292
- standalone: true,
293
239
  selector: '[tuiDropdown]:not(ng-container):not(ng-template)',
294
- providers: [
295
- tuiAsRectAccessor(TuiDropdownDirective),
296
- tuiAsVehicle(TuiDropdownDirective),
297
- ],
240
+ providers: [tuiAsVehicle(TuiDropdownDirective)],
298
241
  exportAs: 'tuiDropdown',
299
242
  hostDirectives: [
300
243
  TuiDropdownDriverDirective,
@@ -303,13 +246,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
303
246
  outputs: ['tuiDropdownDirectionChange'],
304
247
  },
305
248
  ],
306
- host: {
307
- '[class.tui-dropdown-open]': 'ref()',
308
- },
249
+ host: { '[class.tui-dropdown-open]': 'ref()' },
309
250
  }]
310
- }], propDecorators: { tuiDropdown: [{
311
- type: Input
312
- }] } });
251
+ }] });
313
252
 
314
253
  /**
315
254
  * @description:
@@ -323,7 +262,7 @@ class TuiDropdownComponent {
323
262
  this.viewport = inject(TUI_VIEWPORT);
324
263
  this.vvs = inject(TuiVisualViewportService);
325
264
  this.styles$ = inject(TuiPositionService).pipe(takeWhile(() => this.directive.el.isConnected &&
326
- !!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map(([top, left]) => this.getStyles(left, top)), takeUntilDestroyed());
265
+ !!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map((point) => this.getStyles(...point)), takeUntilDestroyed());
327
266
  this.options = inject(TUI_DROPDOWN_OPTIONS);
328
267
  this.directive = inject(TuiDropdownDirective);
329
268
  this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
@@ -362,69 +301,81 @@ class TuiDropdownComponent {
362
301
  maxWidth: tuiPx(Math.round(viewport.width) - 16), // 8px min gap from each side
363
302
  };
364
303
  }
365
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
366
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownComponent, isStandalone: true, selector: "tui-dropdown", host: { properties: { "attr.data-appearance": "options.appearance", "attr.tuiTheme": "theme()" } }, providers: [
304
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
305
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownComponent, isStandalone: true, selector: "tui-dropdown", host: { properties: { "attr.data-appearance": "options.appearance", "attr.tuiTheme": "theme()" } }, providers: [
367
306
  TuiPositionService,
368
307
  tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
369
- tuiRectAccessorFor('dropdown', TuiDropdownDirective),
370
- ], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
308
+ tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
309
+ ], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
371
310
  }
372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownComponent, decorators: [{
311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownComponent, decorators: [{
373
312
  type: Component,
374
- args: [{ standalone: true, selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
313
+ args: [{ selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
375
314
  TuiPositionService,
376
315
  tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
377
- tuiRectAccessorFor('dropdown', TuiDropdownDirective),
316
+ tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
378
317
  ], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
379
318
  '[attr.data-appearance]': 'options.appearance',
380
319
  '[attr.tuiTheme]': 'theme()',
381
- }, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"] }]
320
+ }, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"] }]
382
321
  }] });
383
322
 
384
- function activeZoneFilter(event) {
385
- return (!event ||
386
- (this.driver.value && !this.activeZone.contains(tuiGetActualTarget(event))));
323
+ class TuiDropdownContent {
324
+ constructor() {
325
+ this.directive = inject(TuiDropdownDirective);
326
+ tuiSetSignal(this.directive.tuiDropdown, inject(TemplateRef));
327
+ if (isPlatformBrowser(inject(PLATFORM_ID)) &&
328
+ this.directive.el.matches(':focus-within')) {
329
+ this.directive.toggle(true);
330
+ }
331
+ }
332
+ ngOnDestroy() {
333
+ tuiSetSignal(this.directive.tuiDropdown, null);
334
+ }
335
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
336
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownContent, isStandalone: true, selector: "ng-template[tuiDropdown]", ngImport: i0 }); }
387
337
  }
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownContent, decorators: [{
339
+ type: Directive,
340
+ args: [{ selector: 'ng-template[tuiDropdown]' }]
341
+ }], ctorParameters: () => [] });
342
+
388
343
  class TuiDropdownContext extends TuiRectAccessor {
389
344
  constructor() {
390
345
  super(...arguments);
391
- this.isTouch = inject(TUI_IS_TOUCH);
346
+ this.isTouch = inject(WA_IS_TOUCH);
392
347
  this.currentRect = EMPTY_CLIENT_RECT;
393
348
  this.userSelect = computed(() => (this.isTouch() ? 'none' : null));
394
349
  this.activeZone = inject(TuiActiveZone);
395
350
  this.driver = inject(TuiDropdownDriver);
396
351
  this.doc = inject(DOCUMENT);
397
- this.sub = merge(tuiTypedFromEvent(this.doc, 'pointerdown'), tuiTypedFromEvent(this.doc, 'contextmenu', { capture: true }))
398
- .pipe(tuiZonefree(), takeUntilDestroyed())
399
- .subscribe((event) => this.closeDropdown(event));
352
+ this.sub = merge(tuiTypedFromEvent(this.doc, 'pointerdown'), tuiTypedFromEvent(this.doc, 'keydown').pipe(filter(({ key }) => key === 'Escape')), tuiTypedFromEvent(this.doc, 'contextmenu', { capture: true }))
353
+ .pipe(filter((event) => this.driver.value &&
354
+ !this.activeZone.contains(tuiGetActualTarget(event))), tuiZoneOptimized(), takeUntilDestroyed())
355
+ .subscribe(() => {
356
+ this.driver.next(false);
357
+ this.currentRect = EMPTY_CLIENT_RECT;
358
+ });
400
359
  this.type = 'dropdown';
401
360
  }
402
361
  getClientRect() {
403
362
  return this.currentRect;
404
363
  }
405
- closeDropdown(_event) {
406
- this.driver.next(false);
407
- this.currentRect = EMPTY_CLIENT_RECT;
408
- }
409
364
  onContextMenu(x, y) {
410
365
  this.currentRect = tuiPointToClientRect(x, y);
411
366
  this.driver.next(true);
412
367
  }
413
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownContext, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
414
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownContext, isStandalone: true, selector: "[tuiDropdownContext]", host: { listeners: { "document:keydown.esc": "closeDropdown()", "longtap": "onContextMenu($event.detail.clientX, $event.detail.clientY)" }, properties: { "style.user-select": "userSelect()", "style.-webkit-user-select": "userSelect()", "style.-webkit-touch-callout": "userSelect()" } }, providers: [
368
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownContext, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
369
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownContext, isStandalone: true, selector: "[tuiDropdownContext]", host: { listeners: { "longtap": "onContextMenu($event.detail.clientX, $event.detail.clientY)" }, properties: { "style.user-select": "userSelect()", "style.-webkit-user-select": "userSelect()", "style.-webkit-touch-callout": "userSelect()" } }, providers: [
415
370
  TuiActiveZone,
416
371
  TuiDropdownDriver,
417
372
  tuiAsDriver(TuiDropdownDriver),
418
373
  tuiAsRectAccessor(TuiDropdownContext),
419
374
  ], usesInheritance: true, ngImport: i0 }); }
420
375
  }
421
- __decorate([
422
- shouldCall(activeZoneFilter)
423
- ], TuiDropdownContext.prototype, "closeDropdown", null);
424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownContext, decorators: [{
376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownContext, decorators: [{
425
377
  type: Directive,
426
378
  args: [{
427
- standalone: true,
428
379
  selector: '[tuiDropdownContext]',
429
380
  providers: [
430
381
  TuiActiveZone,
@@ -436,11 +387,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
436
387
  '[style.user-select]': 'userSelect()',
437
388
  '[style.-webkit-user-select]': 'userSelect()',
438
389
  '[style.-webkit-touch-callout]': 'userSelect()',
439
- '(document:keydown.esc)': 'closeDropdown()',
440
390
  '(longtap)': 'onContextMenu($event.detail.clientX, $event.detail.clientY)',
441
391
  },
442
392
  }]
443
- }], propDecorators: { closeDropdown: [] } });
393
+ }] });
444
394
 
445
395
  /** Default values for hint options */
446
396
  const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS = {
@@ -450,48 +400,58 @@ const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS = {
450
400
  /**
451
401
  * Default parameters for dropdown hover directive
452
402
  */
453
- const TUI_DROPDOWN_HOVER_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_HOVER_OPTIONS' : '', {
454
- factory: () => TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,
455
- });
456
- function tuiDropdownHoverOptionsProvider(options) {
457
- return tuiProvideOptions(TUI_DROPDOWN_HOVER_OPTIONS, options, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
458
- }
403
+ const [TUI_DROPDOWN_HOVER_OPTIONS, tuiDropdownHoverOptionsProvider] = tuiCreateOptions(TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
459
404
 
460
- function shouldClose(event) {
461
- return (
462
- // @ts-ignore
463
- typeof CloseWatcher === 'undefined' &&
464
- // ?. for auto fill events
465
- event.key?.toLowerCase() === 'escape' &&
466
- this.tuiDropdownEnabled &&
467
- !!this.tuiDropdownOpen &&
468
- !this['dropdown']()?.nextElementSibling);
405
+ class TuiDropdownClose {
406
+ constructor() {
407
+ this.el = tuiInjectElement();
408
+ this.ref = inject(TuiDropdownDirective).ref;
409
+ this.open = inject(TuiDropdownOpen);
410
+ this.obscured = inject(TuiObscured);
411
+ this.activeZone = inject(TuiActiveZone);
412
+ this.tuiDropdownClose = outputFromObservable(merge(inject(TuiDropdownDriver).pipe(tuiIfMap(() => merge(tuiCloseWatcher(), this.obscured.tuiObscured$.pipe(filter(Boolean)), this.activeZone.tuiActiveZoneChange.pipe(filter((a) => !a)), tuiTypedFromEvent(this.el, 'focusin').pipe(filter((event) => !this.open.host.contains(tuiGetActualTarget(event)) ||
413
+ !this.ref()))))),
414
+ // @ts-ignore
415
+ typeof CloseWatcher === 'undefined'
416
+ ? tuiTypedFromEvent(inject(DOCUMENT), 'keydown', { capture: true }).pipe(filter(({ key }) => key === 'Escape' &&
417
+ this.open.open() &&
418
+ !this.ref()?.location.nativeElement?.nextElementSibling), tuiStopPropagation())
419
+ : EMPTY));
420
+ }
421
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
422
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownClose, isStandalone: true, outputs: { tuiDropdownClose: "tuiDropdownClose" }, ngImport: i0 }); }
469
423
  }
424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownClose, decorators: [{
425
+ type: Directive
426
+ }] });
427
+
470
428
  class TuiDropdownOpen {
471
429
  constructor() {
430
+ this.dropdownHost = contentChild('tuiDropdownHost', {
431
+ descendants: true,
432
+ read: ElementRef,
433
+ });
472
434
  this.directive = inject(TuiDropdownDirective);
473
435
  this.el = tuiInjectElement();
474
436
  this.obscured = inject(TuiObscured);
475
- this.activeZone = inject(TuiActiveZone);
476
- this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
477
- this.tuiDropdownEnabled = true;
478
- this.tuiDropdownOpen = false;
479
- this.tuiDropdownOpenChange = new EventEmitter();
480
- // TODO: make it private when all legacy controls will be deleted from @taiga-ui/legacy (5.0)
481
437
  this.driver = inject(TuiDropdownDriver);
482
- this.sub = this.driver
483
- .pipe(tuiIfMap(() => merge(tuiCloseWatcher(), this.obscured.tuiObscured.pipe(filter(Boolean)), this.activeZone.tuiActiveZoneChange.pipe(filter((a) => !a)), fromEvent(this.el, 'focusin').pipe(filter((event) => !this.host.contains(tuiGetActualTarget(event)) ||
484
- !this.directive.ref())))), tuiZonefull(), tuiWatch(), takeUntilDestroyed())
485
- .subscribe(() => this.toggle(false));
486
- this.sync = this.driver.pipe(takeUntilDestroyed()).subscribe((open) => {
487
- if (open !== this.tuiDropdownOpen) {
488
- this.update(open);
489
- }
490
- });
438
+ this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
439
+ this.enabled = input(true, { alias: 'tuiDropdownEnabled' });
440
+ this.open = model(false, { alias: 'tuiDropdownOpen' });
441
+ this.driveEffect = effect(() => this.drive(this.open()));
442
+ this.syncSub = this.driver
443
+ .pipe(filter((open) => open !== this.open()), takeUntilDestroyed())
444
+ .subscribe((open) => this.update(open));
445
+ this.keydownSub = tuiTypedFromEvent(inject(DOCUMENT), 'keydown')
446
+ .pipe(takeUntilDestroyed())
447
+ .subscribe((event) => this.onKeydown(event));
491
448
  }
492
- ngOnChanges() {
493
- this.drive(!!this.tuiDropdownOpen);
494
- this.tuiDropdownOpenChange.emit(!!this.tuiDropdownOpen);
449
+ get host() {
450
+ const initial = this.dropdownHost()?.nativeElement || this.el;
451
+ const focusable = tuiIsFocusable(initial)
452
+ ? initial
453
+ : tuiGetClosestFocusable({ initial, root: this.el });
454
+ return this.dropdownHost()?.nativeElement || focusable || this.el;
495
455
  }
496
456
  toggle(open) {
497
457
  if (this.focused && !open) {
@@ -499,25 +459,27 @@ class TuiDropdownOpen {
499
459
  }
500
460
  this.update(open);
501
461
  }
502
- onEsc(event) {
503
- event.preventDefault();
504
- this.toggle(false);
505
- }
506
462
  onClick(target) {
507
463
  if (!this.editable && this.host.contains(target)) {
508
- this.update(!this.tuiDropdownOpen);
464
+ this.update(!this.open());
509
465
  }
510
466
  }
511
467
  onArrow(event, up) {
512
468
  if (!tuiIsElement(event.target) ||
513
469
  !this.host.contains(event.target) ||
514
- !this.tuiDropdownEnabled ||
515
- !this.directive._content()) {
470
+ !this.enabled() ||
471
+ !this.directive.content()) {
516
472
  return;
517
473
  }
518
474
  event.preventDefault();
519
475
  this.focusDropdown(up);
520
476
  }
477
+ get editable() {
478
+ return tuiIsElementEditable(this.host);
479
+ }
480
+ get focused() {
481
+ return tuiIsFocusedIn(this.host) || tuiIsFocusedIn(this.dropdown());
482
+ }
521
483
  onKeydown(event) {
522
484
  const target = tuiGetActualTarget(event);
523
485
  if (!event.defaultPrevented &&
@@ -529,29 +491,15 @@ class TuiDropdownOpen {
529
491
  this.host.focus({ preventScroll: true });
530
492
  }
531
493
  }
532
- get host() {
533
- const initial = this.dropdownHost?.nativeElement || this.el;
534
- const focusable = tuiIsNativeKeyboardFocusable(initial)
535
- ? initial
536
- : tuiGetClosestFocusable({ initial, root: this.el });
537
- return this.dropdownHost?.nativeElement || focusable || this.el;
538
- }
539
- get editable() {
540
- return tuiIsElementEditable(this.host);
541
- }
542
- get focused() {
543
- return tuiIsNativeFocusedIn(this.host) || tuiIsNativeFocusedIn(this.dropdown());
544
- }
545
494
  update(open) {
546
- if (open && !this.tuiDropdownEnabled) {
495
+ if (open && !this.enabled()) {
547
496
  return this.drive();
548
497
  }
549
- this.tuiDropdownOpen = open;
550
- this.tuiDropdownOpenChange.emit(open);
498
+ this.open.set(open);
551
499
  this.drive();
552
500
  }
553
- drive(open = !!this.tuiDropdownOpen && this.tuiDropdownEnabled) {
554
- this.obscured.tuiObscuredEnabled = open;
501
+ drive(open = this.open() && this.enabled()) {
502
+ tuiSetSignal(this.obscured.tuiObscuredEnabled, open);
555
503
  this.driver.next(open);
556
504
  }
557
505
  focusDropdown(previous) {
@@ -567,20 +515,20 @@ class TuiDropdownOpen {
567
515
  child.remove();
568
516
  focusable?.focus();
569
517
  }
570
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
571
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownOpen, isStandalone: true, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: { tuiDropdownEnabled: "tuiDropdownEnabled", tuiDropdownOpen: "tuiDropdownOpen" }, outputs: { tuiDropdownOpenChange: "tuiDropdownOpenChange" }, host: { listeners: { "click": "onClick($event.target)", "keydown.arrowDown": "onArrow($event, false)", "keydown.arrowUp": "onArrow($event, true)", "document:keydown.zoneless.capture": "onEsc($event)", "document:keydown.zoneless": "onKeydown($event)", "tuiActiveZoneChange": "0" } }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef }], usesOnChanges: true, hostDirectives: [{ directive: i1$1.TuiObscured }, { directive: i1.TuiActiveZone, inputs: ["tuiActiveZoneParent", "tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange", "tuiActiveZoneChange"] }], ngImport: i0 }); }
518
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
519
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.18", type: TuiDropdownOpen, isStandalone: true, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: { enabled: { classPropertyName: "enabled", publicName: "tuiDropdownEnabled", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "tuiDropdownOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "tuiDropdownOpenChange" }, host: { listeners: { "click": "onClick($event.target)", "keydown.arrowDown": "onArrow($event, false)", "keydown.arrowUp": "onArrow($event, true)", "tuiActiveZoneChange": "0", "tuiDropdownClose": "toggle(false)" } }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1$1.TuiObscured }, { directive: TuiDropdownClose, outputs: ["tuiDropdownClose", "tuiDropdownClose"] }, { directive: i1.TuiActiveZone, inputs: ["tuiActiveZoneParent", "tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange", "tuiActiveZoneChange"] }], ngImport: i0 }); }
572
520
  }
573
- __decorate([
574
- shouldCall(shouldClose)
575
- ], TuiDropdownOpen.prototype, "onEsc", null);
576
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownOpen, decorators: [{
521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownOpen, decorators: [{
577
522
  type: Directive,
578
523
  args: [{
579
- standalone: true,
580
- selector: '[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
524
+ selector: '[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
581
525
  providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
582
526
  hostDirectives: [
583
527
  TuiObscured,
528
+ {
529
+ directive: TuiDropdownClose,
530
+ outputs: ['tuiDropdownClose'],
531
+ },
584
532
  {
585
533
  directive: TuiActiveZone,
586
534
  inputs: ['tuiActiveZoneParent'],
@@ -591,43 +539,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
591
539
  '(click)': 'onClick($event.target)',
592
540
  '(keydown.arrowDown)': 'onArrow($event, false)',
593
541
  '(keydown.arrowUp)': 'onArrow($event, true)',
594
- '(document:keydown.zoneless.capture)': 'onEsc($event)',
595
- '(document:keydown.zoneless)': 'onKeydown($event)',
596
542
  // TODO: Necessary because startWith(false) + distinctUntilChanged() in TuiActiveZone, think of better solution
597
543
  '(tuiActiveZoneChange)': '0',
544
+ '(tuiDropdownClose)': 'toggle(false)',
598
545
  },
599
546
  }]
600
- }], propDecorators: { dropdownHost: [{
601
- type: ContentChild,
602
- args: ['tuiDropdownHost', { descendants: true, read: ElementRef }]
603
- }], tuiDropdownEnabled: [{
604
- type: Input
605
- }], tuiDropdownOpen: [{
606
- type: Input
607
- }], tuiDropdownOpenChange: [{
608
- type: Output
609
- }], onEsc: [] } });
547
+ }] });
610
548
 
611
549
  class TuiDropdownHover extends TuiDriver {
612
550
  constructor() {
613
551
  super((subscriber) => this.stream$.subscribe(subscriber));
552
+ this.dropdownHost = contentChild('tuiDropdownHost', {
553
+ descendants: true,
554
+ read: ElementRef,
555
+ });
556
+ this.hovered = false;
614
557
  this.el = tuiInjectElement();
615
558
  this.doc = inject(DOCUMENT);
616
559
  this.options = inject(TUI_DROPDOWN_HOVER_OPTIONS);
617
560
  this.activeZone = inject(TuiActiveZone);
618
561
  this.open = inject(TuiDropdownOpen, { optional: true });
562
+ this.stream$ = merge(
619
563
  /**
620
564
  * Dropdown can be removed not only via click/touch –
621
565
  * swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
622
566
  */
623
- this.dropdownExternalRemoval$ = toObservable(inject(TuiDropdownDirective).ref).pipe(filter((x) => !x && this.hovered));
624
- this.stream$ = merge(this.dropdownExternalRemoval$.pipe(switchMap(() => tuiTypedFromEvent(this.doc, 'pointerdown').pipe(map(tuiGetActualTarget), delay(this.hideDelay), startWith(null), takeUntil(fromEvent(this.doc, 'mouseover'))))), tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)), tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget))).pipe(map((element) => tuiIsElement(element) && this.isHovered(element)), distinctUntilChanged(), switchMap((v) => of(v).pipe(delay(v ? this.showDelay : this.hideDelay))), tuiZoneOptimized(), tap((hovered) => {
567
+ toObservable(inject(TuiDropdownDirective).ref).pipe(filter((x) => !x && this.hovered), switchMap(() => tuiTypedFromEvent(this.doc, 'pointerdown').pipe(map(tuiGetActualTarget), delay(this.tuiDropdownHideDelay()), startWith(null), takeUntil(fromEvent(this.doc, 'mouseover'))))), tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)), tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget))).pipe(map((element) => tuiIsElement(element) && this.isHovered(element)), distinctUntilChanged(), switchMap((v) => of(v).pipe(delay(v ? this.tuiDropdownShowDelay() : this.tuiDropdownHideDelay()))), tuiZoneOptimized(), tap((hovered) => {
625
568
  this.hovered = hovered;
626
569
  this.open?.toggle(hovered);
627
570
  }), share());
628
- this.showDelay = this.options.showDelay;
629
- this.hideDelay = this.options.hideDelay;
630
- this.hovered = false;
571
+ this.tuiDropdownShowDelay = input(this.options.showDelay);
572
+ this.tuiDropdownHideDelay = input(this.options.hideDelay);
631
573
  this.type = 'dropdown';
632
574
  }
633
575
  onClick(event) {
@@ -636,115 +578,41 @@ class TuiDropdownHover extends TuiDriver {
636
578
  }
637
579
  }
638
580
  isHovered(element) {
639
- const host = this.dropdownHost?.nativeElement || this.el;
581
+ const host = this.dropdownHost()?.nativeElement || this.el;
640
582
  const hovered = host.contains(element);
641
583
  const child = !this.el.contains(element) && this.activeZone.contains(element);
642
584
  return hovered || child;
643
585
  }
644
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
645
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownHover, isStandalone: true, selector: "[tuiDropdownHover]", inputs: { showDelay: ["tuiDropdownShowDelay", "showDelay"], hideDelay: ["tuiDropdownHideDelay", "hideDelay"] }, host: { listeners: { "click.capture": "onClick($event)" } }, providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0 }); }
586
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
587
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.18", type: TuiDropdownHover, isStandalone: true, selector: "[tuiDropdownHover]", inputs: { tuiDropdownShowDelay: { classPropertyName: "tuiDropdownShowDelay", publicName: "tuiDropdownShowDelay", isSignal: true, isRequired: false, transformFunction: null }, tuiDropdownHideDelay: { classPropertyName: "tuiDropdownHideDelay", publicName: "tuiDropdownHideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click.capture": "onClick($event)" } }, providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
646
588
  }
647
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownHover, decorators: [{
589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownHover, decorators: [{
648
590
  type: Directive,
649
591
  args: [{
650
- standalone: true,
651
592
  selector: '[tuiDropdownHover]',
652
593
  providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)],
653
- host: {
654
- '(click.capture)': 'onClick($event)',
655
- },
594
+ host: { '(click.capture)': 'onClick($event)' },
656
595
  }]
657
- }], ctorParameters: function () { return []; }, propDecorators: { dropdownHost: [{
658
- type: ContentChild,
659
- args: ['tuiDropdownHost', { descendants: true, read: ElementRef }]
660
- }], showDelay: [{
661
- type: Input,
662
- args: ['tuiDropdownShowDelay']
663
- }], hideDelay: [{
664
- type: Input,
665
- args: ['tuiDropdownHideDelay']
666
- }] } });
596
+ }], ctorParameters: () => [] });
667
597
 
668
598
  class TuiDropdownManual {
669
599
  constructor() {
670
600
  this.driver = inject(TuiDropdownDriver);
671
- this.tuiDropdownManual = false;
601
+ this.tuiDropdownManual = input(false);
672
602
  }
673
603
  ngOnChanges() {
674
- this.driver.next(!!this.tuiDropdownManual);
604
+ this.driver.next(!!this.tuiDropdownManual());
675
605
  }
676
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownManual, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
677
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownManual, isStandalone: true, selector: "[tuiDropdownManual]", inputs: { tuiDropdownManual: "tuiDropdownManual" }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], usesOnChanges: true, ngImport: i0 }); }
606
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownManual, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
607
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.18", type: TuiDropdownManual, isStandalone: true, selector: "[tuiDropdownManual]", inputs: { tuiDropdownManual: { classPropertyName: "tuiDropdownManual", publicName: "tuiDropdownManual", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], usesOnChanges: true, ngImport: i0 }); }
678
608
  }
679
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownManual, decorators: [{
609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownManual, decorators: [{
680
610
  type: Directive,
681
611
  args: [{
682
- standalone: true,
683
612
  selector: '[tuiDropdownManual]',
684
613
  providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
685
614
  }]
686
- }], propDecorators: { tuiDropdownManual: [{
687
- type: Input
688
- }] } });
689
-
690
- /**
691
- * @deprecated TODO: remove in v.5 when legacy controls are dropped
692
- */
693
- class TuiDropdownOpenLegacy {
694
- constructor() {
695
- this.openStateSub = new Subject();
696
- this.tuiDropdownOpenChange = this.openStateSub.pipe(distinctUntilChanged());
697
- }
698
- set tuiDropdownOpen(open) {
699
- this.emitOpenChange(open);
700
- }
701
- emitOpenChange(open) {
702
- this.openStateSub.next(open);
703
- }
704
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownOpenLegacy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
705
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownOpenLegacy, isStandalone: true, selector: "[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])", inputs: { tuiDropdownOpen: "tuiDropdownOpen" }, outputs: { tuiDropdownOpenChange: "tuiDropdownOpenChange" }, ngImport: i0 }); }
706
- }
707
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownOpenLegacy, decorators: [{
708
- type: Directive,
709
- args: [{
710
- standalone: true,
711
- selector: '[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])',
712
- }]
713
- }], propDecorators: { tuiDropdownOpenChange: [{
714
- type: Output
715
- }], tuiDropdownOpen: [{
716
- type: Input
717
- }] } });
718
-
719
- /**
720
- * @deprecated use {@link TuiPopup} directive instead
721
- */
722
- class TuiDropdownPortal {
723
- constructor() {
724
- this.template = inject(TemplateRef);
725
- this.service = inject(TuiDropdownService);
726
- }
727
- set tuiDropdown(show) {
728
- this.viewRef?.destroy();
729
- if (show) {
730
- this.viewRef = this.service.addTemplate(this.template);
731
- }
732
- }
733
- ngOnDestroy() {
734
- this.viewRef?.destroy();
735
- }
736
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
737
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownPortal, isStandalone: true, selector: "ng-template[tuiDropdown]", inputs: { tuiDropdown: "tuiDropdown" }, ngImport: i0 }); }
738
- }
739
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPortal, decorators: [{
740
- type: Directive,
741
- args: [{
742
- standalone: true,
743
- selector: 'ng-template[tuiDropdown]',
744
- }]
745
- }], propDecorators: { tuiDropdown: [{
746
- type: Input
747
- }] } });
615
+ }] });
748
616
 
749
617
  class TuiDropdownPositionSided extends TuiPositionAccessor {
750
618
  constructor() {
@@ -753,12 +621,12 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
753
621
  this.viewport = inject(TUI_VIEWPORT);
754
622
  this.vertical = inject(TuiDropdownPosition);
755
623
  this.previous = this.options.direction || 'bottom';
756
- this.tuiDropdownSided = '';
757
- this.tuiDropdownSidedOffset = 4;
624
+ this.tuiDropdownSided = input('');
625
+ this.tuiDropdownSidedOffset = input(4);
758
626
  this.type = 'dropdown';
759
627
  }
760
628
  getPosition(rect) {
761
- if (this.tuiDropdownSided === false) {
629
+ if (this.tuiDropdownSided() === false) {
762
630
  return this.vertical.getPosition(rect);
763
631
  }
764
632
  const { height, width } = rect;
@@ -774,38 +642,33 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
774
642
  bottom: viewport.bottom - hostRect.top,
775
643
  };
776
644
  const position = {
777
- top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1,
645
+ top: hostRect.bottom - height + this.tuiDropdownSidedOffset() + 1, // 1 for border
778
646
  left: hostRect.left - width - offset,
779
647
  right: hostRect.right + offset,
780
- bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border
648
+ bottom: hostRect.top - this.tuiDropdownSidedOffset() - 1, // 1 for border
781
649
  };
782
650
  const better = available.top > available.bottom ? 'top' : 'bottom';
783
651
  const maxLeft = available.left > available.right ? position.left : position.right;
784
652
  const left = available[align] > width ? position[align] : maxLeft;
785
653
  if ((available[this.previous] > height && direction) ||
786
654
  this.previous === better) {
787
- this.vertical.emitDirection(this.previous);
788
- return [position[this.previous], left];
655
+ this.vertical.direction.next(this.previous);
656
+ return [left, position[this.previous]];
789
657
  }
790
658
  this.previous = better;
791
- this.vertical.emitDirection(better);
792
- return [position[better], left];
659
+ this.vertical.direction.next(better);
660
+ return [left, position[better]];
793
661
  }
794
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
795
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownPositionSided, isStandalone: true, selector: "[tuiDropdownSided]", inputs: { tuiDropdownSided: "tuiDropdownSided", tuiDropdownSidedOffset: "tuiDropdownSidedOffset" }, providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)], usesInheritance: true, ngImport: i0 }); }
662
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
663
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.18", type: TuiDropdownPositionSided, isStandalone: true, selector: "[tuiDropdownSided]", inputs: { tuiDropdownSided: { classPropertyName: "tuiDropdownSided", publicName: "tuiDropdownSided", isSignal: true, isRequired: false, transformFunction: null }, tuiDropdownSidedOffset: { classPropertyName: "tuiDropdownSidedOffset", publicName: "tuiDropdownSidedOffset", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)], usesInheritance: true, ngImport: i0 }); }
796
664
  }
797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
798
666
  type: Directive,
799
667
  args: [{
800
- standalone: true,
801
668
  selector: '[tuiDropdownSided]',
802
669
  providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],
803
670
  }]
804
- }], propDecorators: { tuiDropdownSided: [{
805
- type: Input
806
- }], tuiDropdownSidedOffset: [{
807
- type: Input
808
- }] } });
671
+ }] });
809
672
 
810
673
  class TuiDropdownSelection extends TuiDriver {
811
674
  constructor() {
@@ -814,9 +677,9 @@ class TuiDropdownSelection extends TuiDriver {
814
677
  this.vcr = inject(ViewContainerRef);
815
678
  this.dropdown = inject(TuiDropdownDirective);
816
679
  this.el = tuiInjectElement();
817
- this.handler$ = new BehaviorSubject(TUI_TRUE_HANDLER);
680
+ this.handler = computed((visible = this.tuiDropdownSelection()) => tuiIsString(visible) ? TUI_TRUE_HANDLER : visible);
818
681
  this.stream$ = combineLatest([
819
- this.handler$,
682
+ toObservable(this.handler),
820
683
  inject(TUI_SELECTION_STREAM).pipe(map(() => this.getRange()), filter((range) => this.isValid(range)), distinctUntilChanged((x, y) => x.startOffset === y.startOffset &&
821
684
  x.endOffset === y.endOffset &&
822
685
  x.commonAncestorContainer === y.commonAncestorContainer)),
@@ -828,17 +691,15 @@ class TuiDropdownSelection extends TuiDriver {
828
691
  : this.range;
829
692
  return (contained && handler(this.range)) || this.inDropdown(range);
830
693
  }));
831
- this.range = inject(TUI_RANGE);
832
- this.position = 'selection';
694
+ this.range = isPlatformBrowser(inject(PLATFORM_ID))
695
+ ? new Range()
696
+ : {};
833
697
  this.type = 'dropdown';
834
- }
835
- set tuiDropdownSelection(visible) {
836
- if (!tuiIsString(visible)) {
837
- this.handler$.next(visible);
838
- }
698
+ this.tuiDropdownSelection = input('');
699
+ this.tuiDropdownSelectionPosition = input('selection');
839
700
  }
840
701
  getClientRect() {
841
- switch (this.position) {
702
+ switch (this.tuiDropdownSelectionPosition()) {
842
703
  case 'tag': {
843
704
  const { commonAncestorContainer } = this.range;
844
705
  const element = tuiIsElement(commonAncestorContainer)
@@ -863,7 +724,7 @@ class TuiDropdownSelection extends TuiDriver {
863
724
  return this.el.querySelector('tui-textfield .t-ghost') || this.el;
864
725
  }
865
726
  getRange() {
866
- const active = tuiGetNativeFocused(this.doc);
727
+ const active = tuiGetFocused(this.doc);
867
728
  const selection = this.doc.getSelection();
868
729
  const range = active && tuiIsTextfield(active) && this.el.contains(active)
869
730
  ? this.veryVerySadInputFix(active)
@@ -929,28 +790,22 @@ class TuiDropdownSelection extends TuiDriver {
929
790
  this.ghost = ghost;
930
791
  return ghost;
931
792
  }
932
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
933
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownSelection, isStandalone: true, selector: "[tuiDropdownSelection]", inputs: { position: ["tuiDropdownSelectionPosition", "position"], tuiDropdownSelection: "tuiDropdownSelection" }, providers: [
793
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
794
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.18", type: TuiDropdownSelection, isStandalone: true, selector: "[tuiDropdownSelection]", inputs: { tuiDropdownSelection: { classPropertyName: "tuiDropdownSelection", publicName: "tuiDropdownSelection", isSignal: true, isRequired: false, transformFunction: null }, tuiDropdownSelectionPosition: { classPropertyName: "tuiDropdownSelectionPosition", publicName: "tuiDropdownSelectionPosition", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
934
795
  tuiAsDriver(TuiDropdownSelection),
935
796
  tuiAsRectAccessor(TuiDropdownSelection),
936
797
  ], usesInheritance: true, ngImport: i0 }); }
937
798
  }
938
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownSelection, decorators: [{
799
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownSelection, decorators: [{
939
800
  type: Directive,
940
801
  args: [{
941
- standalone: true,
942
802
  selector: '[tuiDropdownSelection]',
943
803
  providers: [
944
804
  tuiAsDriver(TuiDropdownSelection),
945
805
  tuiAsRectAccessor(TuiDropdownSelection),
946
806
  ],
947
807
  }]
948
- }], ctorParameters: function () { return []; }, propDecorators: { position: [{
949
- type: Input,
950
- args: ['tuiDropdownSelectionPosition']
951
- }], tuiDropdownSelection: [{
952
- type: Input
953
- }] } });
808
+ }], ctorParameters: () => [] });
954
809
 
955
810
  const TuiDropdown = [
956
811
  TuiDropdownOptionsDirective,
@@ -958,10 +813,9 @@ const TuiDropdown = [
958
813
  TuiDropdownDirective,
959
814
  TuiDropdownComponent,
960
815
  TuiDropdownOpen,
961
- TuiDropdownOpenLegacy,
962
- TuiDropdownPortal,
963
816
  TuiDropdownManual,
964
817
  TuiDropdownHover,
818
+ TuiDropdownContent,
965
819
  TuiDropdownContext,
966
820
  TuiDropdownPosition,
967
821
  TuiDropdownPositionSided,
@@ -972,31 +826,21 @@ function tuiDropdown(value) {
972
826
  return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});
973
827
  }
974
828
  function tuiDropdownEnabled(value) {
975
- return tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', value, {});
976
- }
977
- function tuiDropdownOpen() {
978
- const open = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownOpen', false, {});
979
- inject(TuiDropdownOpen)
980
- .tuiDropdownOpenChange.pipe(takeUntilDestroyed())
981
- .subscribe((value) => open.set(value));
982
- return open;
829
+ return tuiDirectiveBinding(TuiDropdownOpen, 'enabled', value, {});
983
830
  }
984
831
 
985
832
  class TuiDropdownFixed {
986
833
  constructor() {
987
- const override = tuiOverrideOptions$1({ limitWidth: 'fixed' }, TUI_DROPDOWN_DEFAULT_OPTIONS);
834
+ const override = tuiOverrideOptions({ limitWidth: 'fixed' }, TUI_DROPDOWN_DEFAULT_OPTIONS);
988
835
  override(inject(TUI_DROPDOWN_OPTIONS, { self: true, optional: true }), null);
989
836
  }
990
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownFixed, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
991
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownFixed, isStandalone: true, providers: [tuiDropdownOptionsProvider({})], ngImport: i0 }); }
837
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownFixed, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
838
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownFixed, isStandalone: true, providers: [tuiDropdownOptionsProvider({})], ngImport: i0 }); }
992
839
  }
993
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownFixed, decorators: [{
840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownFixed, decorators: [{
994
841
  type: Directive,
995
- args: [{
996
- standalone: true,
997
- providers: [tuiDropdownOptionsProvider({})],
998
- }]
999
- }], ctorParameters: function () { return []; } });
842
+ args: [{ providers: [tuiDropdownOptionsProvider({})] }]
843
+ }], ctorParameters: () => [] });
1000
844
  class TuiDropdownAuto {
1001
845
  constructor() {
1002
846
  /**
@@ -1005,41 +849,20 @@ class TuiDropdownAuto {
1005
849
  */
1006
850
  inject(TUI_DROPDOWN_OPTIONS).limitWidth = 'auto';
1007
851
  }
1008
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownAuto, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1009
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownAuto, isStandalone: true, ngImport: i0 }); }
1010
- }
1011
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownAuto, decorators: [{
1012
- type: Directive,
1013
- args: [{ standalone: true }]
1014
- }], ctorParameters: function () { return []; } });
1015
-
1016
- /**
1017
- * Host element for dynamically created portals, for example using {@link TuiDropdownDirective}.
1018
- */
1019
- class TuiDropdowns extends TuiPortals {
1020
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdowns, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1021
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdowns, isStandalone: true, selector: "tui-dropdowns", host: { styleAttribute: "position: absolute; width: 100%; top: 0" }, providers: [tuiAsPortal(TuiDropdownService)], usesInheritance: true, ngImport: i0, template: '<ng-container #viewContainer />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
852
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownAuto, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
853
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiDropdownAuto, isStandalone: true, ngImport: i0 }); }
1022
854
  }
1023
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdowns, decorators: [{
1024
- type: Component,
1025
- args: [{
1026
- standalone: true,
1027
- selector: 'tui-dropdowns',
1028
- template: '<ng-container #viewContainer />',
1029
- changeDetection: ChangeDetectionStrategy.OnPush,
1030
- providers: [tuiAsPortal(TuiDropdownService)],
1031
- host: { style: 'position: absolute; width: 100%; top: 0' },
1032
- }]
1033
- }] });
855
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiDropdownAuto, decorators: [{
856
+ type: Directive
857
+ }], ctorParameters: () => [] });
1034
858
 
1035
859
  class TuiWithDropdownOpen {
1036
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiWithDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1037
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiWithDropdownOpen, isStandalone: true, hostDirectives: [{ directive: TuiDropdownOpen, inputs: ["tuiDropdownOpen", "open", "tuiDropdownEnabled", "tuiDropdownEnabled"], outputs: ["tuiDropdownOpenChange", "openChange"] }], ngImport: i0 }); }
860
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiWithDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
861
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: TuiWithDropdownOpen, isStandalone: true, hostDirectives: [{ directive: TuiDropdownOpen, inputs: ["tuiDropdownOpen", "open", "tuiDropdownEnabled", "tuiDropdownEnabled"], outputs: ["tuiDropdownOpenChange", "openChange"] }], ngImport: i0 }); }
1038
862
  }
1039
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiWithDropdownOpen, decorators: [{
863
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiWithDropdownOpen, decorators: [{
1040
864
  type: Directive,
1041
865
  args: [{
1042
- standalone: true,
1043
866
  hostDirectives: [
1044
867
  {
1045
868
  directive: TuiDropdownOpen,
@@ -1054,5 +877,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1054
877
  * Generated bundle index. Do not edit.
1055
878
  */
1056
879
 
1057
- export { TUI_DROPDOWN_COMPONENT, TUI_DROPDOWN_CONTEXT, TUI_DROPDOWN_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_OPTIONS, TUI_DROPDOWN_OPTIONS, TuiDropdown, TuiDropdownAuto, TuiDropdownComponent, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen, TuiDropdownOpenLegacy, TuiDropdownOptionsDirective, TuiDropdownPortal, TuiDropdownPosition, TuiDropdownPositionSided, TuiDropdownSelection, TuiDropdownService, TuiDropdowns, TuiWithDropdownOpen, tuiDropdown, tuiDropdownEnabled, tuiDropdownHoverOptionsProvider, tuiDropdownOpen, tuiDropdownOptionsProvider };
1058
- //# sourceMappingURL=taiga-ui-core-directives-dropdown.mjs.map
880
+ export { TUI_DROPDOWN_COMPONENT, TUI_DROPDOWN_CONTEXT, TUI_DROPDOWN_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_OPTIONS, TUI_DROPDOWN_OPTIONS, TuiDropdown, TuiDropdownAuto, TuiDropdownClose, TuiDropdownComponent, TuiDropdownContent, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen, TuiDropdownOptionsDirective, TuiDropdownPosition, TuiDropdownPositionSided, TuiDropdownSelection, TuiWithDropdownOpen, tuiDropdown, tuiDropdownEnabled, tuiDropdownHoverOptionsProvider, tuiDropdownOptionsProvider };
881
+ //# sourceMappingURL=taiga-ui-core-portals-dropdown.mjs.map