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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/README.md +1 -1
  2. package/classes/accessors.d.ts +1 -1
  3. package/components/calendar/calendar-sheet.options.d.ts +1 -3
  4. package/{pipes/calendar-sheet → components/calendar}/calendar-sheet.pipe.d.ts +1 -1
  5. package/components/calendar/calendar-spin.component.d.ts +1 -0
  6. package/components/calendar/calendar-year.component.d.ts +1 -1
  7. package/components/calendar/index.d.ts +2 -0
  8. package/components/data-list/data-list.component.d.ts +7 -11
  9. package/components/data-list/data-list.d.ts +2 -4
  10. package/components/data-list/data-list.tokens.d.ts +1 -5
  11. package/components/data-list/index.d.ts +0 -2
  12. package/components/data-list/opt-group.directive.d.ts +2 -2
  13. package/components/data-list/option/option-content.d.ts +6 -8
  14. package/components/data-list/option/option.directive.d.ts +7 -8
  15. package/components/index.d.ts +2 -4
  16. package/components/input/index.d.ts +2 -0
  17. package/components/input/input.d.ts +2 -0
  18. package/components/input/input.directive.d.ts +30 -0
  19. package/components/link/link.options.d.ts +1 -3
  20. package/components/loader/loader.options.d.ts +1 -3
  21. package/components/notification/index.d.ts +3 -0
  22. package/components/notification/notification.component.d.ts +14 -0
  23. package/components/notification/notification.d.ts +3 -0
  24. package/components/notification/notification.directive.d.ts +4 -5
  25. package/components/notification/notification.options.d.ts +10 -7
  26. package/components/notification/notification.service.d.ts +17 -0
  27. package/components/root/root.component.d.ts +1 -1
  28. package/components/textfield/index.d.ts +0 -1
  29. package/components/textfield/textfield-multi/textfield-item.component.d.ts +3 -2
  30. package/components/textfield/textfield-multi/textfield-multi.component.d.ts +8 -12
  31. package/components/textfield/textfield.component.d.ts +23 -35
  32. package/components/textfield/textfield.d.ts +2 -3
  33. package/directives/group/group.directive.d.ts +7 -7
  34. package/directives/group/group.options.d.ts +1 -3
  35. package/directives/index.d.ts +0 -5
  36. package/fesm2022/taiga-ui-core-classes.mjs +6 -8
  37. package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-core-components-calendar.mjs +120 -21
  39. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-core-components-data-list.mjs +44 -197
  41. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-core-components-error.mjs +2 -1
  43. package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-core-components-input.mjs +95 -0
  45. package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -0
  46. package/fesm2022/taiga-ui-core-components-link.mjs +6 -10
  47. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-core-components-loader.mjs +3 -8
  49. package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-core-components-notification.mjs +92 -20
  51. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-core-components-root.mjs +6 -8
  53. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +1 -2
  55. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-core-components-textfield.mjs +82 -237
  57. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  58. package/fesm2022/{taiga-ui-core-directives-title.mjs → taiga-ui-core-components-title.mjs} +1 -1
  59. package/fesm2022/{taiga-ui-core-directives-title.mjs.map → taiga-ui-core-components-title.mjs.map} +1 -1
  60. package/fesm2022/taiga-ui-core-components.mjs +2 -4
  61. package/fesm2022/taiga-ui-core-components.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-core-directives-appearance.mjs +6 -5
  63. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-core-directives-group.mjs +17 -29
  65. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-core-directives-icons.mjs +2 -1
  67. package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +1 -1
  69. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-core-directives.mjs +0 -5
  71. package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-core-pipes-format-number.mjs +19 -13
  73. package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-core-pipes.mjs +0 -7
  75. package/fesm2022/taiga-ui-core-pipes.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-core-portals-alert.mjs +73 -0
  77. package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -0
  78. package/fesm2022/taiga-ui-core-portals-dialog.mjs +158 -0
  79. package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -0
  80. package/fesm2022/{taiga-ui-core-directives-dropdown.mjs → taiga-ui-core-portals-dropdown.mjs} +109 -205
  81. package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
  82. package/fesm2022/{taiga-ui-core-directives-hint.mjs → taiga-ui-core-portals-hint.mjs} +9 -10
  83. package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -0
  84. package/fesm2022/taiga-ui-core-portals-modal.mjs +89 -0
  85. package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -0
  86. package/fesm2022/{taiga-ui-core-directives-popup.mjs → taiga-ui-core-portals-popup.mjs} +2 -2
  87. package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -0
  88. package/fesm2022/taiga-ui-core-portals.mjs +11 -0
  89. package/fesm2022/taiga-ui-core-portals.mjs.map +1 -0
  90. package/fesm2022/taiga-ui-core-services.mjs +3 -23
  91. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-core-tokens.mjs +4 -13
  93. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-core-utils-format.mjs +1 -22
  95. package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +7 -16
  97. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-core.mjs +1 -0
  99. package/fesm2022/taiga-ui-core.mjs.map +1 -1
  100. package/index.d.ts +1 -0
  101. package/package.json +38 -66
  102. package/pipes/format-number/format-number.pipe.d.ts +6 -4
  103. package/pipes/index.d.ts +0 -7
  104. package/{directives/notification/notification.directive.d.ts → portals/alert/alert.directive.d.ts} +3 -3
  105. package/{directives/notification/notification.service.d.ts → portals/alert/alert.service.d.ts} +3 -3
  106. package/portals/alert/index.d.ts +2 -0
  107. package/{components → portals}/dialog/dialog.component.d.ts +2 -3
  108. package/{components → portals}/dialog/dialog.options.d.ts +2 -3
  109. package/{components → portals}/dialog/dialog.providers.d.ts +1 -2
  110. package/{components → portals}/dialog/dialog.service.d.ts +1 -1
  111. package/{components → portals}/dialog/index.d.ts +0 -1
  112. package/{directives → portals}/dropdown/dropdown-hover.directive.d.ts +5 -10
  113. package/{directives → portals}/dropdown/dropdown-hover.options.d.ts +1 -3
  114. package/{directives → portals}/dropdown/dropdown-manual.directive.d.ts +2 -2
  115. package/portals/dropdown/dropdown-open.directive.d.ts +30 -0
  116. package/{directives → portals}/dropdown/dropdown-position-sided.directive.d.ts +3 -3
  117. package/{directives → portals}/dropdown/dropdown-position.directive.d.ts +5 -5
  118. package/{directives → portals}/dropdown/dropdown-selection.directive.d.ts +4 -5
  119. package/{directives → portals}/dropdown/dropdown.bindings.d.ts +0 -1
  120. package/{directives → portals}/dropdown/dropdown.d.ts +1 -2
  121. package/{directives → portals}/dropdown/dropdown.directive.d.ts +5 -6
  122. package/{directives → portals}/dropdown/index.d.ts +0 -1
  123. package/portals/index.d.ts +6 -0
  124. package/{components → portals}/modal/modal.component.d.ts +3 -3
  125. package/{components → portals}/modal/modal.service.d.ts +3 -3
  126. package/services/index.d.ts +0 -1
  127. package/styles/components/link.less +1 -0
  128. package/styles/components/textfield.less +0 -1
  129. package/styles/mixins/appearance.less +1 -1
  130. package/styles/mixins/mixins.less +0 -5
  131. package/styles/mixins/mixins.scss +0 -5
  132. package/styles/mixins/slider.scss +1 -2
  133. package/styles/theme/variables.less +2 -4
  134. package/tokens/common-icons.d.ts +1 -3
  135. package/tokens/icons.d.ts +0 -4
  136. package/types/index.d.ts +0 -2
  137. package/types/size.d.ts +0 -11
  138. package/utils/format/index.d.ts +0 -1
  139. package/utils/miscellaneous/get-duration.d.ts +2 -0
  140. package/utils/miscellaneous/index.d.ts +1 -1
  141. package/components/alert/alert.component.d.ts +0 -14
  142. package/components/alert/alert.directive.d.ts +0 -8
  143. package/components/alert/alert.interfaces.d.ts +0 -13
  144. package/components/alert/alert.service.d.ts +0 -11
  145. package/components/alert/alert.tokens.d.ts +0 -6
  146. package/components/alert/index.d.ts +0 -5
  147. package/components/data-list/data-list.directive.d.ts +0 -7
  148. package/components/data-list/option/option-legacy.component.d.ts +0 -24
  149. package/components/dialog/active-zone-adapter.directive.d.ts +0 -11
  150. package/components/dialog/dialogs.component.d.ts +0 -8
  151. package/components/header/header.directive.d.ts +0 -17
  152. package/components/header/index.d.ts +0 -1
  153. package/components/textfield/textfield.directive.d.ts +0 -35
  154. package/directives/dropdown/dropdown-open-legacy.directive.d.ts +0 -12
  155. package/directives/dropdown/dropdown-open.directive.d.ts +0 -33
  156. package/directives/notification/index.d.ts +0 -2
  157. package/fesm2022/taiga-ui-core-components-alert.mjs +0 -110
  158. package/fesm2022/taiga-ui-core-components-alert.mjs.map +0 -1
  159. package/fesm2022/taiga-ui-core-components-dialog.mjs +0 -226
  160. package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
  161. package/fesm2022/taiga-ui-core-components-header.mjs +0 -42
  162. package/fesm2022/taiga-ui-core-components-header.mjs.map +0 -1
  163. package/fesm2022/taiga-ui-core-components-modal.mjs +0 -89
  164. package/fesm2022/taiga-ui-core-components-modal.mjs.map +0 -1
  165. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +0 -1
  166. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +0 -1
  167. package/fesm2022/taiga-ui-core-directives-notification.mjs +0 -73
  168. package/fesm2022/taiga-ui-core-directives-notification.mjs.map +0 -1
  169. package/fesm2022/taiga-ui-core-directives-popup.mjs.map +0 -1
  170. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs +0 -24
  171. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs.map +0 -1
  172. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs +0 -93
  173. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs.map +0 -1
  174. package/fesm2022/taiga-ui-core-pipes-flag.mjs +0 -31
  175. package/fesm2022/taiga-ui-core-pipes-flag.mjs.map +0 -1
  176. package/fesm2022/taiga-ui-core-pipes-format-date.mjs +0 -27
  177. package/fesm2022/taiga-ui-core-pipes-format-date.mjs.map +0 -1
  178. package/fesm2022/taiga-ui-core-pipes-initials.mjs +0 -28
  179. package/fesm2022/taiga-ui-core-pipes-initials.mjs.map +0 -1
  180. package/fesm2022/taiga-ui-core-pipes-month.mjs +0 -29
  181. package/fesm2022/taiga-ui-core-pipes-month.mjs.map +0 -1
  182. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs +0 -35
  183. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs.map +0 -1
  184. package/pipes/auto-color/auto-color.pipe.d.ts +0 -7
  185. package/pipes/auto-color/index.d.ts +0 -1
  186. package/pipes/calendar-sheet/index.d.ts +0 -1
  187. package/pipes/calendar-sheet/utils.d.ts +0 -20
  188. package/pipes/flag/flag.pipe.d.ts +0 -14
  189. package/pipes/flag/index.d.ts +0 -1
  190. package/pipes/format-date/format-date.pipe.d.ts +0 -9
  191. package/pipes/format-date/index.d.ts +0 -1
  192. package/pipes/initials/index.d.ts +0 -1
  193. package/pipes/initials/initials.pipe.d.ts +0 -7
  194. package/pipes/month/index.d.ts +0 -1
  195. package/pipes/month/month.pipe.d.ts +0 -10
  196. package/pipes/order-week-days/index.d.ts +0 -1
  197. package/services/format-date.service.d.ts +0 -8
  198. package/types/range-state.d.ts +0 -4
  199. package/types/value-content-context.d.ts +0 -4
  200. package/utils/format/string-hash-to-hsl.d.ts +0 -6
  201. package/utils/miscellaneous/to-animation-options.d.ts +0 -4
  202. /package/{pipes/order-week-days → components/calendar}/order-week-days.pipe.d.ts +0 -0
  203. /package/{directives → components}/title/index.d.ts +0 -0
  204. /package/{directives → components}/title/title.directive.d.ts +0 -0
  205. /package/{components → portals}/dialog/dialog.directive.d.ts +0 -0
  206. /package/{components → portals}/dialog/dialog.factory.d.ts +0 -0
  207. /package/{directives → portals}/dropdown/dropdown-content.directive.d.ts +0 -0
  208. /package/{directives → portals}/dropdown/dropdown-context.directive.d.ts +0 -0
  209. /package/{directives → portals}/dropdown/dropdown-limit-width.d.ts +0 -0
  210. /package/{directives → portals}/dropdown/dropdown-options.directive.d.ts +0 -0
  211. /package/{directives → portals}/dropdown/dropdown.component.d.ts +0 -0
  212. /package/{directives → portals}/dropdown/dropdown.driver.d.ts +0 -0
  213. /package/{directives → portals}/dropdown/dropdown.providers.d.ts +0 -0
  214. /package/{directives → portals}/dropdown/with-dropdown-open.directive.d.ts +0 -0
  215. /package/{directives → portals}/hint/hint-describe.directive.d.ts +0 -0
  216. /package/{directives → portals}/hint/hint-driver.directive.d.ts +0 -0
  217. /package/{directives → portals}/hint/hint-host.directive.d.ts +0 -0
  218. /package/{directives → portals}/hint/hint-hover.directive.d.ts +0 -0
  219. /package/{directives → portals}/hint/hint-manual.directive.d.ts +0 -0
  220. /package/{directives → portals}/hint/hint-options.directive.d.ts +0 -0
  221. /package/{directives → portals}/hint/hint-overflow.directive.d.ts +0 -0
  222. /package/{directives → portals}/hint/hint-pointer.directive.d.ts +0 -0
  223. /package/{directives → portals}/hint/hint-position.directive.d.ts +0 -0
  224. /package/{directives → portals}/hint/hint-unstyled.component.d.ts +0 -0
  225. /package/{directives → portals}/hint/hint.component.d.ts +0 -0
  226. /package/{directives → portals}/hint/hint.d.ts +0 -0
  227. /package/{directives → portals}/hint/hint.directive.d.ts +0 -0
  228. /package/{directives → portals}/hint/hint.providers.d.ts +0 -0
  229. /package/{directives → portals}/hint/index.d.ts +0 -0
  230. /package/{components → portals}/modal/index.d.ts +0 -0
  231. /package/{directives → portals}/popup/index.d.ts +0 -0
  232. /package/{directives → portals}/popup/popup.directive.d.ts +0 -0
  233. /package/{directives → portals}/popup/popup.service.d.ts +0 -0
  234. /package/{directives → portals}/popup/popups.component.d.ts +0 -0
@@ -1,6 +1,6 @@
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, ChangeDetectionStrategy, Component, PLATFORM_ID, ElementRef, ContentChild, ViewContainerRef } from '@angular/core';
3
- import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
2
+ import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, Input, 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';
@@ -8,24 +8,25 @@ import * as i2 from '@taiga-ui/cdk/directives/animated';
8
8
  import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
9
9
  import { tuiInjectElement, tuiGetActualTarget, tuiPointToClientRect, tuiIsElement, tuiIsHTMLElement, tuiIsElementEditable, 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, fromEvent, switchMap, delay, startWith, takeUntil, of, tap, share, combineLatest } from 'rxjs';
18
18
  import { coerceArray } from '@angular/cdk/coercion';
19
19
  import { tuiZonefreeScheduler, tuiTypedFromEvent, tuiZonefree, tuiIfMap, tuiCloseWatcher, tuiZonefull, tuiWatch, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
20
- import { TuiPopupService } from '@taiga-ui/core/directives/popup';
20
+ import { TuiPopupService } from '@taiga-ui/core/portals/popup';
21
21
  import { tuiOverrideOptions, tuiCheckFixedPosition, tuiGetWordRange } from '@taiga-ui/core/utils';
22
- import { __decorate } from 'tslib';
22
+ import { tuiProvide, tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
23
23
  import { isPlatformBrowser, DOCUMENT } from '@angular/common';
24
- import { TUI_IS_TOUCH, TUI_RANGE } from '@taiga-ui/cdk/tokens';
24
+ import { __decorate } from 'tslib';
25
+ import { TUI_IS_TOUCH } from '@taiga-ui/cdk/tokens';
25
26
  import { shouldCall } from '@taiga-ui/event-plugins';
26
27
  import * as i1$1 from '@taiga-ui/cdk/directives/obscured';
27
28
  import { TuiObscured } from '@taiga-ui/cdk/directives/obscured';
28
- import { tuiIsKeyboardFocusable, tuiGetClosestFocusable, tuiIsFocusedIn, tuiGetFocused } from '@taiga-ui/cdk/utils/focus';
29
+ import { tuiIsFocusable, tuiGetClosestFocusable, tuiIsFocusedIn, tuiGetFocused } from '@taiga-ui/cdk/utils/focus';
29
30
  import { tuiIsEditingKey, tuiOverrideOptions as tuiOverrideOptions$1 } from '@taiga-ui/core/utils/miscellaneous';
30
31
 
31
32
  class TuiDropdownDriver extends BehaviorSubject {
@@ -132,18 +133,16 @@ class TuiDropdownPosition extends TuiPositionAccessor {
132
133
  this.el = tuiInjectElement();
133
134
  this.options = inject(TUI_DROPDOWN_OPTIONS);
134
135
  this.viewport = inject(TUI_VIEWPORT);
135
- this.directionChange = new EventEmitter();
136
+ this.direction = new Subject();
136
137
  this.type = 'dropdown';
137
- this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor), inject(TuiDropdownDirective, { optional: true }));
138
- }
139
- emitDirection(direction) {
140
- this.directionChange.emit(direction);
138
+ this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor, { optional: true }), { getClientRect: () => this.el.getBoundingClientRect() });
139
+ this.tuiDropdownDirectionChange = outputFromObservable(this.direction.pipe(distinctUntilChanged()));
141
140
  }
142
141
  getPosition({ width, height }) {
143
142
  if (!width && !height) {
144
143
  this.previous = undefined;
145
144
  }
146
- const hostRect = this.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;
145
+ const hostRect = this.accessor.getClientRect();
147
146
  const viewportRect = this.viewport.getClientRect();
148
147
  const { minHeight, direction, offset, limitWidth } = this.options;
149
148
  const align = this.getAlign(this.options.align);
@@ -173,11 +172,11 @@ class TuiDropdownPosition extends TuiPositionAccessor {
173
172
  const better = available.top > available.bottom ? 'top' : 'bottom';
174
173
  if ((available[previous] > minHeight && direction) ||
175
174
  available[previous] > height) {
176
- this.emitDirection(previous);
175
+ this.direction.next(previous);
177
176
  return [position[previous], position[align]];
178
177
  }
179
178
  this.previous = better;
180
- this.emitDirection(better);
179
+ this.direction.next(better);
181
180
  return [position[better], position[align]];
182
181
  }
183
182
  getAlign(align) {
@@ -188,24 +187,17 @@ class TuiDropdownPosition extends TuiPositionAccessor {
188
187
  return rtl && align === 'right' ? 'left' : align;
189
188
  }
190
189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
191
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownPosition, isStandalone: true, outputs: { directionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
190
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownPosition, isStandalone: true, outputs: { tuiDropdownDirectionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
192
191
  }
193
- __decorate([
194
- tuiPure
195
- ], TuiDropdownPosition.prototype, "emitDirection", null);
196
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPosition, decorators: [{
197
193
  type: Directive
198
- }], propDecorators: { directionChange: [{
199
- type: Output,
200
- args: ['tuiDropdownDirectionChange']
201
- }], emitDirection: [] } });
194
+ }] });
202
195
 
203
196
  class TuiDropdownDirective {
204
197
  constructor() {
205
198
  this.refresh$ = new Subject();
206
199
  this.service = inject(TuiPopupService);
207
200
  this.cdr = inject(ChangeDetectorRef);
208
- // TODO: think of a better solution later
209
201
  this.drivers = coerceArray(inject(TuiDropdownDriver, { self: true, optional: true }));
210
202
  this.sub = this.refresh$
211
203
  .pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())
@@ -213,33 +205,25 @@ class TuiDropdownDirective {
213
205
  this.ref()?.changeDetectorRef.detectChanges();
214
206
  this.ref()?.changeDetectorRef.markForCheck();
215
207
  });
208
+ this.autoClose = effect(() => {
209
+ if (!this.content()) {
210
+ this.toggle(false);
211
+ }
212
+ });
213
+ this.ref = signal(null);
216
214
  this.el = tuiInjectElement();
217
215
  this.type = 'dropdown';
218
216
  this.component = new PolymorpheusComponent(inject(TUI_DROPDOWN_COMPONENT), inject(INJECTOR));
219
- this.ref = signal(null);
220
- // TODO(v5): rename to `content`
221
- // eslint-disable-next-line @typescript-eslint/naming-convention
222
- this._content = signal(null);
223
- }
224
- set tuiDropdown(content) {
225
- this._content.set(content instanceof TemplateRef
226
- ? new PolymorpheusTemplate(content, this.cdr)
227
- : content);
228
- if (!this._content()) {
229
- this.toggle(false);
230
- }
217
+ this.tuiDropdown = input();
218
+ this.content = computed((content = this.tuiDropdown()) => {
219
+ return content instanceof TemplateRef
220
+ ? new PolymorpheusTemplate(content, this.cdr)
221
+ : content;
222
+ });
231
223
  }
232
224
  get position() {
233
225
  return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';
234
226
  }
235
- // TODO(v5): delete
236
- get content() {
237
- return this._content();
238
- }
239
- // TODO(v5): delete
240
- set content(x) {
241
- this._content.set(x);
242
- }
243
227
  ngAfterViewChecked() {
244
228
  this.refresh$.next();
245
229
  }
@@ -251,31 +235,25 @@ class TuiDropdownDirective {
251
235
  }
252
236
  toggle(show) {
253
237
  const ref = this.ref();
254
- if (show && this._content() && !ref) {
238
+ if (show && this.content() && !ref) {
255
239
  this.ref.set(this.service.add(this.component));
256
240
  }
257
241
  else if (!show && ref) {
258
242
  this.ref.set(null);
259
243
  ref.destroy();
260
244
  }
261
- this.drivers.forEach((driver) => driver?.next(show));
262
245
  // TODO: Remove in v5, only needed in Angular 16
263
246
  this.cdr.markForCheck();
247
+ this.drivers.forEach((driver) => driver?.next(show));
264
248
  }
265
249
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
266
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownDirective, isStandalone: true, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: { tuiDropdown: "tuiDropdown" }, host: { properties: { "class.tui-dropdown-open": "ref()" } }, providers: [
267
- tuiAsRectAccessor(TuiDropdownDirective),
268
- tuiAsVehicle(TuiDropdownDirective),
269
- ], exportAs: ["tuiDropdown"], hostDirectives: [{ directive: TuiDropdownDriverDirective }, { directive: TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
250
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", 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 }); }
270
251
  }
271
252
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownDirective, decorators: [{
272
253
  type: Directive,
273
254
  args: [{
274
255
  selector: '[tuiDropdown]:not(ng-container):not(ng-template)',
275
- providers: [
276
- tuiAsRectAccessor(TuiDropdownDirective),
277
- tuiAsVehicle(TuiDropdownDirective),
278
- ],
256
+ providers: [tuiAsVehicle(TuiDropdownDirective)],
279
257
  exportAs: 'tuiDropdown',
280
258
  hostDirectives: [
281
259
  TuiDropdownDriverDirective,
@@ -288,9 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
288
266
  '[class.tui-dropdown-open]': 'ref()',
289
267
  },
290
268
  }]
291
- }], propDecorators: { tuiDropdown: [{
292
- type: Input
293
- }] } });
269
+ }] });
294
270
 
295
271
  /**
296
272
  * @description:
@@ -347,32 +323,32 @@ class TuiDropdownComponent {
347
323
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownComponent, isStandalone: true, selector: "tui-dropdown", host: { properties: { "attr.data-appearance": "options.appearance", "attr.tuiTheme": "theme()" } }, providers: [
348
324
  TuiPositionService,
349
325
  tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
350
- tuiRectAccessorFor('dropdown', TuiDropdownDirective),
351
- ], 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", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
326
+ tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
327
+ ], 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", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
352
328
  }
353
329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownComponent, decorators: [{
354
330
  type: Component,
355
331
  args: [{ selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
356
332
  TuiPositionService,
357
333
  tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
358
- tuiRectAccessorFor('dropdown', TuiDropdownDirective),
334
+ tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
359
335
  ], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
360
336
  '[attr.data-appearance]': 'options.appearance',
361
337
  '[attr.tuiTheme]': 'theme()',
362
- }, 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"] }]
338
+ }, 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"] }]
363
339
  }] });
364
340
 
365
341
  class TuiDropdownContent {
366
342
  constructor() {
367
343
  this.directive = inject(TuiDropdownDirective);
368
- this.directive.tuiDropdown = inject(TemplateRef);
344
+ tuiSetSignal(this.directive.tuiDropdown, inject(TemplateRef));
369
345
  if (isPlatformBrowser(inject(PLATFORM_ID)) &&
370
346
  this.directive.el.matches(':focus-within')) {
371
347
  this.directive.toggle(true);
372
348
  }
373
349
  }
374
350
  ngOnDestroy() {
375
- this.directive.tuiDropdown = null;
351
+ tuiSetSignal(this.directive.tuiDropdown, null);
376
352
  }
377
353
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
378
354
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownContent, isStandalone: true, selector: "ng-template[tuiDropdown]", ngImport: i0 }); }
@@ -452,48 +428,40 @@ const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS = {
452
428
  /**
453
429
  * Default parameters for dropdown hover directive
454
430
  */
455
- const TUI_DROPDOWN_HOVER_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_HOVER_OPTIONS' : '', {
456
- factory: () => TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,
457
- });
458
- function tuiDropdownHoverOptionsProvider(options) {
459
- return tuiProvideOptions(TUI_DROPDOWN_HOVER_OPTIONS, options, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
460
- }
431
+ const [TUI_DROPDOWN_HOVER_OPTIONS, tuiDropdownHoverOptionsProvider] = tuiCreateOptions(TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
461
432
 
462
433
  function shouldClose(event) {
463
434
  return (
464
435
  // @ts-ignore
465
436
  typeof CloseWatcher === 'undefined' &&
466
- // ?. for auto fill events
437
+ // ?. for autofill events
467
438
  event.key?.toLowerCase() === 'escape' &&
468
- this.tuiDropdownEnabled &&
469
- !!this.tuiDropdownOpen &&
439
+ this.enabled() &&
440
+ this.open() &&
470
441
  !this['dropdown']()?.nextElementSibling);
471
442
  }
472
443
  class TuiDropdownOpen {
473
444
  constructor() {
445
+ this.dropdownHost = contentChild('tuiDropdownHost', {
446
+ descendants: true,
447
+ read: ElementRef,
448
+ });
474
449
  this.directive = inject(TuiDropdownDirective);
475
450
  this.el = tuiInjectElement();
476
451
  this.obscured = inject(TuiObscured);
477
452
  this.activeZone = inject(TuiActiveZone);
478
- this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
479
- this.tuiDropdownEnabled = true;
480
- this.tuiDropdownOpen = false;
481
- this.tuiDropdownOpenChange = new EventEmitter();
482
- // TODO: make it private when all legacy controls will be deleted from @taiga-ui/legacy (5.0)
483
453
  this.driver = inject(TuiDropdownDriver);
484
- this.sub = this.driver
485
- .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)) ||
454
+ this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
455
+ this.enabled = input(true, { alias: 'tuiDropdownEnabled' });
456
+ this.open = model(false, { alias: 'tuiDropdownOpen' });
457
+ this.driveEffect = effect(() => this.drive(this.open()));
458
+ this.syncSub = this.driver
459
+ .pipe(filter((open) => open !== this.open()), takeUntilDestroyed())
460
+ .subscribe((open) => this.update(open));
461
+ this.closeSub = this.driver
462
+ .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)) ||
486
463
  !this.directive.ref())))), tuiZonefull(), tuiWatch(), takeUntilDestroyed())
487
464
  .subscribe(() => this.toggle(false));
488
- this.sync = this.driver.pipe(takeUntilDestroyed()).subscribe((open) => {
489
- if (open !== this.tuiDropdownOpen) {
490
- this.update(open);
491
- }
492
- });
493
- }
494
- ngOnChanges() {
495
- this.drive(!!this.tuiDropdownOpen);
496
- this.tuiDropdownOpenChange.emit(!!this.tuiDropdownOpen);
497
465
  }
498
466
  toggle(open) {
499
467
  if (this.focused && !open) {
@@ -507,14 +475,14 @@ class TuiDropdownOpen {
507
475
  }
508
476
  onClick(target) {
509
477
  if (!this.editable && this.host.contains(target)) {
510
- this.update(!this.tuiDropdownOpen);
478
+ this.update(!this.open());
511
479
  }
512
480
  }
513
481
  onArrow(event, up) {
514
482
  if (!tuiIsElement(event.target) ||
515
483
  !this.host.contains(event.target) ||
516
- !this.tuiDropdownEnabled ||
517
- !this.directive._content()) {
484
+ !this.enabled() ||
485
+ !this.directive.content()) {
518
486
  return;
519
487
  }
520
488
  event.preventDefault();
@@ -532,11 +500,11 @@ class TuiDropdownOpen {
532
500
  }
533
501
  }
534
502
  get host() {
535
- const initial = this.dropdownHost?.nativeElement || this.el;
536
- const focusable = tuiIsKeyboardFocusable(initial)
503
+ const initial = this.dropdownHost()?.nativeElement || this.el;
504
+ const focusable = tuiIsFocusable(initial)
537
505
  ? initial
538
506
  : tuiGetClosestFocusable({ initial, root: this.el });
539
- return this.dropdownHost?.nativeElement || focusable || this.el;
507
+ return this.dropdownHost()?.nativeElement || focusable || this.el;
540
508
  }
541
509
  get editable() {
542
510
  return tuiIsElementEditable(this.host);
@@ -545,15 +513,14 @@ class TuiDropdownOpen {
545
513
  return tuiIsFocusedIn(this.host) || tuiIsFocusedIn(this.dropdown());
546
514
  }
547
515
  update(open) {
548
- if (open && !this.tuiDropdownEnabled) {
516
+ if (open && !this.enabled()) {
549
517
  return this.drive();
550
518
  }
551
- this.tuiDropdownOpen = open;
552
- this.tuiDropdownOpenChange.emit(open);
519
+ this.open.set(open);
553
520
  this.drive();
554
521
  }
555
- drive(open = !!this.tuiDropdownOpen && this.tuiDropdownEnabled) {
556
- this.obscured.tuiObscuredEnabled = open;
522
+ drive(open = this.open() && this.enabled()) {
523
+ tuiSetSignal(this.obscured.tuiObscuredEnabled, open);
557
524
  this.driver.next(open);
558
525
  }
559
526
  focusDropdown(previous) {
@@ -570,7 +537,7 @@ class TuiDropdownOpen {
570
537
  focusable?.focus();
571
538
  }
572
539
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
573
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", 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 }); }
540
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.15", 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)", "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, isSignal: true }], hostDirectives: [{ directive: i1$1.TuiObscured }, { directive: i1.TuiActiveZone, inputs: ["tuiActiveZoneParent", "tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange", "tuiActiveZoneChange"] }], ngImport: i0 }); }
574
541
  }
575
542
  __decorate([
576
543
  shouldCall(shouldClose)
@@ -578,7 +545,7 @@ __decorate([
578
545
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpen, decorators: [{
579
546
  type: Directive,
580
547
  args: [{
581
- selector: '[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
548
+ selector: '[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
582
549
  providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
583
550
  hostDirectives: [
584
551
  TuiObscured,
@@ -598,37 +565,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
598
565
  '(tuiActiveZoneChange)': '0',
599
566
  },
600
567
  }]
601
- }], propDecorators: { dropdownHost: [{
602
- type: ContentChild,
603
- args: ['tuiDropdownHost', { descendants: true, read: ElementRef }]
604
- }], tuiDropdownEnabled: [{
605
- type: Input
606
- }], tuiDropdownOpen: [{
607
- type: Input
608
- }], tuiDropdownOpenChange: [{
609
- type: Output
610
- }], onEsc: [] } });
568
+ }], propDecorators: { onEsc: [] } });
611
569
 
612
570
  class TuiDropdownHover extends TuiDriver {
613
571
  constructor() {
614
572
  super((subscriber) => this.stream$.subscribe(subscriber));
573
+ this.dropdownHost = contentChild('tuiDropdownHost', {
574
+ descendants: true,
575
+ read: ElementRef,
576
+ });
577
+ this.hovered = false;
615
578
  this.el = tuiInjectElement();
616
579
  this.doc = inject(DOCUMENT);
617
580
  this.options = inject(TUI_DROPDOWN_HOVER_OPTIONS);
618
581
  this.activeZone = inject(TuiActiveZone);
619
582
  this.open = inject(TuiDropdownOpen, { optional: true });
583
+ this.stream$ = merge(
620
584
  /**
621
585
  * Dropdown can be removed not only via click/touch –
622
586
  * swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
623
587
  */
624
- this.dropdownExternalRemoval$ = toObservable(inject(TuiDropdownDirective).ref).pipe(filter((x) => !x && this.hovered));
625
- 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) => {
588
+ 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) => {
626
589
  this.hovered = hovered;
627
590
  this.open?.toggle(hovered);
628
591
  }), share());
629
- this.showDelay = this.options.showDelay;
630
- this.hideDelay = this.options.hideDelay;
631
- this.hovered = false;
592
+ this.tuiDropdownShowDelay = input(this.options.showDelay);
593
+ this.tuiDropdownHideDelay = input(this.options.hideDelay);
632
594
  this.type = 'dropdown';
633
595
  }
634
596
  onClick(event) {
@@ -637,13 +599,13 @@ class TuiDropdownHover extends TuiDriver {
637
599
  }
638
600
  }
639
601
  isHovered(element) {
640
- const host = this.dropdownHost?.nativeElement || this.el;
602
+ const host = this.dropdownHost()?.nativeElement || this.el;
641
603
  const hovered = host.contains(element);
642
604
  const child = !this.el.contains(element) && this.activeZone.contains(element);
643
605
  return hovered || child;
644
606
  }
645
607
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
646
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", 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 }); }
608
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.15", 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 }); }
647
609
  }
648
610
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownHover, decorators: [{
649
611
  type: Directive,
@@ -654,27 +616,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
654
616
  '(click.capture)': 'onClick($event)',
655
617
  },
656
618
  }]
657
- }], ctorParameters: () => [], 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
- }] } });
619
+ }], ctorParameters: () => [] });
667
620
 
668
621
  class TuiDropdownManual {
669
622
  constructor() {
670
623
  this.driver = inject(TuiDropdownDriver);
671
- this.tuiDropdownManual = false;
624
+ this.tuiDropdownManual = input(false);
672
625
  }
673
626
  ngOnChanges() {
674
- this.driver.next(!!this.tuiDropdownManual);
627
+ this.driver.next(!!this.tuiDropdownManual());
675
628
  }
676
629
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownManual, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
677
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownManual, isStandalone: true, selector: "[tuiDropdownManual]", inputs: { tuiDropdownManual: "tuiDropdownManual" }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], usesOnChanges: true, ngImport: i0 }); }
630
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", 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
631
  }
679
632
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownManual, decorators: [{
680
633
  type: Directive,
@@ -682,37 +635,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
682
635
  selector: '[tuiDropdownManual]',
683
636
  providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
684
637
  }]
685
- }], propDecorators: { tuiDropdownManual: [{
686
- type: Input
687
- }] } });
688
-
689
- /**
690
- * @deprecated TODO: remove in v.5 when legacy controls are dropped
691
- */
692
- class TuiDropdownOpenLegacy {
693
- constructor() {
694
- this.openStateSub = new Subject();
695
- this.tuiDropdownOpenChange = this.openStateSub.pipe(distinctUntilChanged());
696
- }
697
- set tuiDropdownOpen(open) {
698
- this.emitOpenChange(open);
699
- }
700
- emitOpenChange(open) {
701
- this.openStateSub.next(open);
702
- }
703
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpenLegacy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
704
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownOpenLegacy, isStandalone: true, selector: "[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])", inputs: { tuiDropdownOpen: "tuiDropdownOpen" }, outputs: { tuiDropdownOpenChange: "tuiDropdownOpenChange" }, ngImport: i0 }); }
705
- }
706
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpenLegacy, decorators: [{
707
- type: Directive,
708
- args: [{
709
- selector: '[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])',
710
- }]
711
- }], propDecorators: { tuiDropdownOpenChange: [{
712
- type: Output
713
- }], tuiDropdownOpen: [{
714
- type: Input
715
- }] } });
638
+ }] });
716
639
 
717
640
  class TuiDropdownPositionSided extends TuiPositionAccessor {
718
641
  constructor() {
@@ -721,12 +644,12 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
721
644
  this.viewport = inject(TUI_VIEWPORT);
722
645
  this.vertical = inject(TuiDropdownPosition);
723
646
  this.previous = this.options.direction || 'bottom';
724
- this.tuiDropdownSided = '';
725
- this.tuiDropdownSidedOffset = 4;
647
+ this.tuiDropdownSided = input('');
648
+ this.tuiDropdownSidedOffset = input(4);
726
649
  this.type = 'dropdown';
727
650
  }
728
651
  getPosition(rect) {
729
- if (this.tuiDropdownSided === false) {
652
+ if (this.tuiDropdownSided() === false) {
730
653
  return this.vertical.getPosition(rect);
731
654
  }
732
655
  const { height, width } = rect;
@@ -742,25 +665,25 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
742
665
  bottom: viewport.bottom - hostRect.top,
743
666
  };
744
667
  const position = {
745
- top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1, // 1 for border
668
+ top: hostRect.bottom - height + this.tuiDropdownSidedOffset() + 1, // 1 for border
746
669
  left: hostRect.left - width - offset,
747
670
  right: hostRect.right + offset,
748
- bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border
671
+ bottom: hostRect.top - this.tuiDropdownSidedOffset() - 1, // 1 for border
749
672
  };
750
673
  const better = available.top > available.bottom ? 'top' : 'bottom';
751
674
  const maxLeft = available.left > available.right ? position.left : position.right;
752
675
  const left = available[align] > width ? position[align] : maxLeft;
753
676
  if ((available[this.previous] > height && direction) ||
754
677
  this.previous === better) {
755
- this.vertical.emitDirection(this.previous);
678
+ this.vertical.direction.next(this.previous);
756
679
  return [position[this.previous], left];
757
680
  }
758
681
  this.previous = better;
759
- this.vertical.emitDirection(better);
682
+ this.vertical.direction.next(better);
760
683
  return [position[better], left];
761
684
  }
762
685
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
763
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownPositionSided, isStandalone: true, selector: "[tuiDropdownSided]", inputs: { tuiDropdownSided: "tuiDropdownSided", tuiDropdownSidedOffset: "tuiDropdownSidedOffset" }, providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)], usesInheritance: true, ngImport: i0 }); }
686
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", 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 }); }
764
687
  }
765
688
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
766
689
  type: Directive,
@@ -768,11 +691,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
768
691
  selector: '[tuiDropdownSided]',
769
692
  providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],
770
693
  }]
771
- }], propDecorators: { tuiDropdownSided: [{
772
- type: Input
773
- }], tuiDropdownSidedOffset: [{
774
- type: Input
775
- }] } });
694
+ }] });
776
695
 
777
696
  class TuiDropdownSelection extends TuiDriver {
778
697
  constructor() {
@@ -781,9 +700,9 @@ class TuiDropdownSelection extends TuiDriver {
781
700
  this.vcr = inject(ViewContainerRef);
782
701
  this.dropdown = inject(TuiDropdownDirective);
783
702
  this.el = tuiInjectElement();
784
- this.handler$ = new BehaviorSubject(TUI_TRUE_HANDLER);
703
+ this.handler = computed((visible = this.tuiDropdownSelection()) => tuiIsString(visible) ? TUI_TRUE_HANDLER : visible);
785
704
  this.stream$ = combineLatest([
786
- this.handler$,
705
+ toObservable(this.handler),
787
706
  inject(TUI_SELECTION_STREAM).pipe(map(() => this.getRange()), filter((range) => this.isValid(range)), distinctUntilChanged((x, y) => x.startOffset === y.startOffset &&
788
707
  x.endOffset === y.endOffset &&
789
708
  x.commonAncestorContainer === y.commonAncestorContainer)),
@@ -795,17 +714,15 @@ class TuiDropdownSelection extends TuiDriver {
795
714
  : this.range;
796
715
  return (contained && handler(this.range)) || this.inDropdown(range);
797
716
  }));
798
- this.range = inject(TUI_RANGE);
799
- this.position = 'selection';
717
+ this.range = isPlatformBrowser(inject(PLATFORM_ID))
718
+ ? new Range()
719
+ : {};
800
720
  this.type = 'dropdown';
801
- }
802
- set tuiDropdownSelection(visible) {
803
- if (!tuiIsString(visible)) {
804
- this.handler$.next(visible);
805
- }
721
+ this.tuiDropdownSelection = input('');
722
+ this.tuiDropdownSelectionPosition = input('selection');
806
723
  }
807
724
  getClientRect() {
808
- switch (this.position) {
725
+ switch (this.tuiDropdownSelectionPosition()) {
809
726
  case 'tag': {
810
727
  const { commonAncestorContainer } = this.range;
811
728
  const element = tuiIsElement(commonAncestorContainer)
@@ -897,7 +814,7 @@ class TuiDropdownSelection extends TuiDriver {
897
814
  return ghost;
898
815
  }
899
816
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
900
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownSelection, isStandalone: true, selector: "[tuiDropdownSelection]", inputs: { position: ["tuiDropdownSelectionPosition", "position"], tuiDropdownSelection: "tuiDropdownSelection" }, providers: [
817
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", 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: [
901
818
  tuiAsDriver(TuiDropdownSelection),
902
819
  tuiAsRectAccessor(TuiDropdownSelection),
903
820
  ], usesInheritance: true, ngImport: i0 }); }
@@ -911,12 +828,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
911
828
  tuiAsRectAccessor(TuiDropdownSelection),
912
829
  ],
913
830
  }]
914
- }], ctorParameters: () => [], propDecorators: { position: [{
915
- type: Input,
916
- args: ['tuiDropdownSelectionPosition']
917
- }], tuiDropdownSelection: [{
918
- type: Input
919
- }] } });
831
+ }], ctorParameters: () => [] });
920
832
 
921
833
  const TuiDropdown = [
922
834
  TuiDropdownOptionsDirective,
@@ -924,7 +836,6 @@ const TuiDropdown = [
924
836
  TuiDropdownDirective,
925
837
  TuiDropdownComponent,
926
838
  TuiDropdownOpen,
927
- TuiDropdownOpenLegacy,
928
839
  TuiDropdownManual,
929
840
  TuiDropdownHover,
930
841
  TuiDropdownContent,
@@ -938,14 +849,7 @@ function tuiDropdown(value) {
938
849
  return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});
939
850
  }
940
851
  function tuiDropdownEnabled(value) {
941
- return tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', value, {});
942
- }
943
- function tuiDropdownOpen() {
944
- const open = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownOpen', false, {});
945
- inject(TuiDropdownOpen)
946
- .tuiDropdownOpenChange.pipe(takeUntilDestroyed())
947
- .subscribe((value) => open.set(value));
948
- return open;
852
+ return tuiDirectiveBinding(TuiDropdownOpen, 'enabled', value, {});
949
853
  }
950
854
 
951
855
  class TuiDropdownFixed {
@@ -998,5 +902,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
998
902
  * Generated bundle index. Do not edit.
999
903
  */
1000
904
 
1001
- 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, TuiDropdownContent, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen, TuiDropdownOpenLegacy, TuiDropdownOptionsDirective, TuiDropdownPosition, TuiDropdownPositionSided, TuiDropdownSelection, TuiWithDropdownOpen, tuiDropdown, tuiDropdownEnabled, tuiDropdownHoverOptionsProvider, tuiDropdownOpen, tuiDropdownOptionsProvider };
1002
- //# sourceMappingURL=taiga-ui-core-directives-dropdown.mjs.map
905
+ 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, TuiDropdownContent, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen, TuiDropdownOptionsDirective, TuiDropdownPosition, TuiDropdownPositionSided, TuiDropdownSelection, TuiWithDropdownOpen, tuiDropdown, tuiDropdownEnabled, tuiDropdownHoverOptionsProvider, tuiDropdownOptionsProvider };
906
+ //# sourceMappingURL=taiga-ui-core-portals-dropdown.mjs.map