@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-core-portals-dropdown.mjs","sources":["../../../projects/core/portals/dropdown/dropdown.driver.ts","../../../projects/core/portals/dropdown/dropdown.providers.ts","../../../projects/core/portals/dropdown/dropdown-options.directive.ts","../../../projects/core/portals/dropdown/dropdown-position.directive.ts","../../../projects/core/portals/dropdown/dropdown.directive.ts","../../../projects/core/portals/dropdown/dropdown.component.ts","../../../projects/core/portals/dropdown/dropdown.template.html","../../../projects/core/portals/dropdown/dropdown-content.directive.ts","../../../projects/core/portals/dropdown/dropdown-context.directive.ts","../../../projects/core/portals/dropdown/dropdown-hover.options.ts","../../../projects/core/portals/dropdown/dropdown-open.directive.ts","../../../projects/core/portals/dropdown/dropdown-hover.directive.ts","../../../projects/core/portals/dropdown/dropdown-manual.directive.ts","../../../projects/core/portals/dropdown/dropdown-position-sided.directive.ts","../../../projects/core/portals/dropdown/dropdown-selection.directive.ts","../../../projects/core/portals/dropdown/dropdown.ts","../../../projects/core/portals/dropdown/dropdown.bindings.ts","../../../projects/core/portals/dropdown/dropdown-limit-width.ts","../../../projects/core/portals/dropdown/with-dropdown-open.directive.ts","../../../projects/core/portals/dropdown/taiga-ui-core-portals-dropdown.ts"],"sourcesContent":["import {Directive, Injectable} from '@angular/core';\nimport {type TuiDriver, TuiDriverDirective} from '@taiga-ui/core/classes';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable()\nexport class TuiDropdownDriver extends BehaviorSubject<boolean> implements TuiDriver {\n public readonly type = 'dropdown';\n\n constructor() {\n super(false);\n }\n}\n\n@Directive()\nexport class TuiDropdownDriverDirective extends TuiDriverDirective {\n public readonly type = 'dropdown';\n}\n","import {InjectionToken, type Type} from '@angular/core';\n\nimport {TuiDropdownComponent} from './dropdown.component';\n\n/**\n * A component to display a dropdown\n */\nexport const TUI_DROPDOWN_COMPONENT = new InjectionToken<Type<any>>(\n ngDevMode ? 'TUI_DROPDOWN_COMPONENT' : '',\n {\n factory: () => TuiDropdownComponent,\n },\n);\n\nexport const TUI_DROPDOWN_CONTEXT = new InjectionToken<Record<any, any>>(\n ngDevMode ? 'TUI_DROPDOWN_CONTEXT' : '',\n);\n","import {\n Directive,\n type FactoryProvider,\n inject,\n InjectionToken,\n Input,\n Optional,\n Self,\n SkipSelf,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {type TuiVerticalDirection} from '@taiga-ui/core/types';\nimport {tuiOverrideOptions} from '@taiga-ui/core/utils';\n\nexport type TuiDropdownAlign = 'center' | 'left' | 'right';\nexport type TuiDropdownWidth = 'auto' | 'fixed' | 'min';\n\nexport interface TuiDropdownOptions {\n readonly align: TuiDropdownAlign;\n readonly appearance: string;\n readonly direction: TuiVerticalDirection | null;\n readonly limitWidth: TuiDropdownWidth;\n readonly maxHeight: number;\n readonly minHeight: number;\n readonly offset: number;\n}\n\n/** Default values for dropdown options */\nexport const TUI_DROPDOWN_DEFAULT_OPTIONS: TuiDropdownOptions = {\n align: 'left',\n direction: null,\n limitWidth: 'auto',\n maxHeight: 400,\n minHeight: 80,\n offset: 4,\n appearance: '',\n};\n\n/**\n * Default parameters for dropdown directive\n */\nexport const TUI_DROPDOWN_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_DROPDOWN_OPTIONS' : '',\n {\n factory: () => TUI_DROPDOWN_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiDropdownOptionsProvider: (\n options: Partial<TuiDropdownOptions>,\n) => FactoryProvider = (override: Partial<TuiDropdownOptions>) => ({\n provide: TUI_DROPDOWN_OPTIONS,\n deps: [\n [new Optional(), new Self(), TuiDropdownOptionsDirective],\n [new Optional(), new SkipSelf(), TUI_DROPDOWN_OPTIONS],\n ],\n useFactory: tuiOverrideOptions(override, TUI_DROPDOWN_DEFAULT_OPTIONS),\n});\n\n@Directive({\n selector:\n '[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]',\n providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)],\n})\nexport class TuiDropdownOptionsDirective implements TuiDropdownOptions {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS, {skipSelf: true});\n\n @Input('tuiDropdownAlign')\n public align = this.options.align;\n\n @Input('tuiDropdownAppearance')\n public appearance = this.options.appearance;\n\n @Input('tuiDropdownDirection')\n public direction = this.options.direction;\n\n @Input('tuiDropdownLimitWidth')\n public limitWidth = this.options.limitWidth;\n\n @Input('tuiDropdownMinHeight')\n public minHeight = this.options.minHeight;\n\n @Input('tuiDropdownMaxHeight')\n public maxHeight = this.options.maxHeight;\n\n @Input('tuiDropdownOffset')\n public offset = this.options.offset;\n}\n","import {Directive, inject} from '@angular/core';\nimport {outputFromObservable} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiFallbackAccessor,\n TuiPositionAccessor,\n TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {type TuiPoint, type TuiVerticalDirection} from '@taiga-ui/core/types';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\nimport {TUI_DROPDOWN_OPTIONS, type TuiDropdownAlign} from './dropdown-options.directive';\n\n@Directive()\nexport class TuiDropdownPosition extends TuiPositionAccessor {\n private readonly el = tuiInjectElement();\n private readonly options = inject(TUI_DROPDOWN_OPTIONS);\n private readonly viewport = inject(TUI_VIEWPORT);\n private previous?: TuiVerticalDirection;\n\n public readonly direction = new Subject<TuiVerticalDirection>();\n public readonly type = 'dropdown';\n public readonly accessor = tuiFallbackAccessor<TuiRectAccessor>('dropdown')(\n inject<any>(TuiRectAccessor, {optional: true}),\n {getClientRect: () => this.el.getBoundingClientRect()},\n );\n\n public readonly tuiDropdownDirectionChange = outputFromObservable(\n this.direction.pipe(distinctUntilChanged()),\n );\n\n public getPosition({width, height}: DOMRect): TuiPoint {\n if (!width && !height) {\n this.previous = undefined;\n }\n\n const hostRect = this.accessor.getClientRect();\n const viewportRect = this.viewport.getClientRect();\n const {minHeight, direction, offset, limitWidth} = this.options;\n const align = this.getAlign(this.options.align);\n const viewport = {\n top: viewportRect.top - offset,\n bottom: viewportRect.bottom + offset,\n right: viewportRect.right - offset,\n left: viewportRect.left + offset,\n } as const;\n const previous = this.previous || direction || 'bottom';\n const available = {\n top: hostRect.top - 2 * offset - viewport.top,\n bottom: viewport.bottom - hostRect.bottom - 2 * offset,\n } as const;\n const rectWidth = limitWidth === 'fixed' ? hostRect.width : width;\n const right = Math.max(hostRect.right - rectWidth, offset);\n const left = hostRect.left + width < viewport.right ? hostRect.left : right;\n const position = {\n top: hostRect.top - offset - height,\n bottom: hostRect.bottom + offset,\n right: Math.max(viewport.left, right),\n center:\n hostRect.left + hostRect.width / 2 + width / 2 < viewport.right\n ? hostRect.left + hostRect.width / 2 - width / 2\n : right,\n left: Math.max(viewport.left, left),\n } as const;\n const better: TuiVerticalDirection =\n available.top > available.bottom ? 'top' : 'bottom';\n\n if (\n (available[previous] > minHeight && direction) ||\n available[previous] > height\n ) {\n this.direction.next(previous);\n\n return [position[previous], position[align]];\n }\n\n this.previous = better;\n this.direction.next(better);\n\n return [position[better], position[align]];\n }\n\n public getAlign(align: TuiDropdownAlign): TuiDropdownAlign {\n const rtl = this.el.matches('[dir=\"rtl\"] :scope');\n\n if (rtl && align === 'left') {\n return 'right';\n }\n\n return rtl && align === 'right' ? 'left' : align;\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {\n type AfterViewChecked,\n ChangeDetectorRef,\n type ComponentRef,\n computed,\n Directive,\n effect,\n inject,\n INJECTOR,\n input,\n type OnDestroy,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAsVehicle,\n type TuiRectAccessor,\n type TuiVehicle,\n} from '@taiga-ui/core/classes';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {tuiCheckFixedPosition} from '@taiga-ui/core/utils';\nimport {\n PolymorpheusComponent,\n type PolymorpheusContent,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\nimport {Subject, throttleTime} from 'rxjs';\n\nimport {TuiDropdownDriver, TuiDropdownDriverDirective} from './dropdown.driver';\nimport {TUI_DROPDOWN_COMPONENT} from './dropdown.providers';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n@Directive({\n selector: '[tuiDropdown]:not(ng-container):not(ng-template)',\n providers: [tuiAsVehicle(TuiDropdownDirective)],\n exportAs: 'tuiDropdown',\n hostDirectives: [\n TuiDropdownDriverDirective,\n {\n directive: TuiDropdownPosition,\n outputs: ['tuiDropdownDirectionChange'],\n },\n ],\n host: {\n '[class.tui-dropdown-open]': 'ref()',\n },\n})\nexport class TuiDropdownDirective\n implements AfterViewChecked, OnDestroy, TuiRectAccessor, TuiVehicle\n{\n private readonly refresh$ = new Subject<void>();\n private readonly service = inject(TuiPopupService);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly drivers = coerceArray(\n inject(TuiDropdownDriver, {self: true, optional: true}),\n );\n\n protected readonly sub = this.refresh$\n .pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())\n .subscribe(() => {\n this.ref()?.changeDetectorRef.detectChanges();\n this.ref()?.changeDetectorRef.markForCheck();\n });\n\n protected readonly autoClose = effect(() => {\n if (!this.content()) {\n this.toggle(false);\n }\n });\n\n public readonly ref = signal<ComponentRef<unknown> | null>(null);\n public readonly el = tuiInjectElement();\n public readonly type = 'dropdown';\n public readonly component = new PolymorpheusComponent(\n inject(TUI_DROPDOWN_COMPONENT),\n inject(INJECTOR),\n );\n\n public readonly tuiDropdown = input<PolymorpheusContent<TuiContext<() => void>>>();\n public readonly content = computed<PolymorpheusContent<TuiContext<() => void>>>(\n (content = this.tuiDropdown()) => {\n return content instanceof TemplateRef\n ? new PolymorpheusTemplate(content, this.cdr)\n : content;\n },\n );\n\n public get position(): 'absolute' | 'fixed' {\n return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';\n }\n\n public ngAfterViewChecked(): void {\n this.refresh$.next();\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n const ref = this.ref();\n\n if (show && this.content() && !ref) {\n this.ref.set(this.service.add(this.component));\n } else if (!show && ref) {\n this.ref.set(null);\n ref.destroy();\n }\n\n // TODO: Remove in v5, only needed in Angular 16\n this.cdr.markForCheck();\n this.drivers.forEach((driver) => driver?.next(show));\n }\n}\n","import {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiPositionAccessorFor,\n TuiRectAccessor,\n tuiRectAccessorFor,\n} from '@taiga-ui/core/classes';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiPositionService, TuiVisualViewportService} from '@taiga-ui/core/services';\nimport {TUI_DARK_MODE, TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, takeWhile} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_CONTEXT} from './dropdown.providers';\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n/**\n * @description:\n * This component is used to show template in a portal\n * using default style of white rounded box with a shadow\n */\n@Component({\n selector: 'tui-dropdown',\n imports: [PolymorpheusOutlet, TuiScrollbar],\n templateUrl: './dropdown.template.html',\n styleUrl: './dropdown.style.less',\n // @bad TODO: OnPush\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n TuiPositionService,\n tuiPositionAccessorFor('dropdown', TuiDropdownPosition),\n tuiRectAccessorFor(\n 'dropdown',\n forwardRef(() => TuiDropdownDirective),\n ),\n ],\n hostDirectives: [TuiActiveZone, TuiAnimated],\n host: {\n '[attr.data-appearance]': 'options.appearance',\n '[attr.tuiTheme]': 'theme()',\n },\n})\nexport class TuiDropdownComponent implements AfterViewInit {\n private readonly el = tuiInjectElement();\n private readonly accessor = inject(TuiRectAccessor);\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly vvs = inject(TuiVisualViewportService);\n\n private readonly styles$ = inject(TuiPositionService).pipe(\n takeWhile(\n () =>\n this.directive.el.isConnected &&\n !!this.directive.el.getBoundingClientRect().height,\n ),\n map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)),\n map(([top, left]) => this.getStyles(left, top)),\n takeUntilDestroyed(),\n );\n\n protected readonly options = inject(TUI_DROPDOWN_OPTIONS);\n protected readonly directive = inject(TuiDropdownDirective);\n protected readonly context = inject(TUI_DROPDOWN_CONTEXT, {optional: true});\n protected readonly darkMode = inject(TUI_DARK_MODE);\n protected readonly position = this.directive.position;\n protected readonly theme = computed((_ = this.darkMode()) =>\n this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme'),\n );\n\n public ngAfterViewInit(): void {\n this.styles$.subscribe({\n next: (styles) => Object.assign(this.el.style, styles),\n complete: () => this.close?.(),\n });\n }\n\n protected readonly close = (): void => this.directive.toggle(false);\n\n private getStyles(x: number, y: number): Record<string, string> {\n const {maxHeight, minHeight, offset, limitWidth} = this.options;\n const parent = this.el.offsetParent?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\n const {left = 0, top = 0} = this.position === 'fixed' ? {} : parent;\n const rect = this.accessor.getClientRect();\n const viewport = this.viewport.getClientRect();\n const above = rect.top - viewport.top - 2 * offset;\n const below = viewport.top + viewport.height - y - offset;\n const available = y > rect.bottom ? below : above;\n const height =\n this.el.getBoundingClientRect().right <= rect.left || x >= rect.right\n ? maxHeight\n : tuiClamp(available, minHeight, maxHeight);\n\n y -= top;\n x -= left;\n\n return {\n position: this.position,\n top: tuiPx(Math.round(Math.max(y, offset - top))),\n left: tuiPx(Math.round(x)),\n maxHeight: tuiPx(Math.round(height)),\n width: limitWidth === 'fixed' ? tuiPx(Math.round(rect.width)) : '',\n minWidth: limitWidth === 'min' ? tuiPx(Math.round(rect.width)) : '',\n maxWidth: tuiPx(Math.round(viewport.width) - 16), // 8px min gap from each side\n };\n }\n}\n","<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","import {isPlatformBrowser} from '@angular/common';\nimport {Directive, inject, type OnDestroy, PLATFORM_ID, TemplateRef} from '@angular/core';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\n\n@Directive({\n selector: 'ng-template[tuiDropdown]',\n})\nexport class TuiDropdownContent implements OnDestroy {\n private readonly directive = inject(TuiDropdownDirective);\n\n constructor() {\n tuiSetSignal(this.directive.tuiDropdown, inject(TemplateRef));\n\n if (\n isPlatformBrowser(inject(PLATFORM_ID)) &&\n this.directive.el.matches(':focus-within')\n ) {\n this.directive.toggle(true);\n }\n }\n\n public ngOnDestroy(): void {\n tuiSetSignal(this.directive.tuiDropdown, null);\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {computed, Directive, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiTypedFromEvent, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {TUI_IS_TOUCH} from '@taiga-ui/cdk/tokens';\nimport {tuiGetActualTarget, tuiPointToClientRect} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, tuiAsRectAccessor, TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {shouldCall} from '@taiga-ui/event-plugins';\nimport {merge} from 'rxjs';\n\nimport {TuiDropdownDriver} from './dropdown.driver';\n\nfunction activeZoneFilter(this: TuiDropdownContext, event?: Event): boolean {\n return (\n !event ||\n (this.driver.value && !this.activeZone.contains(tuiGetActualTarget(event)))\n );\n}\n\n@Directive({\n selector: '[tuiDropdownContext]',\n providers: [\n TuiActiveZone,\n TuiDropdownDriver,\n tuiAsDriver(TuiDropdownDriver),\n tuiAsRectAccessor(TuiDropdownContext),\n ],\n host: {\n '[style.user-select]': 'userSelect()',\n '[style.-webkit-user-select]': 'userSelect()',\n '[style.-webkit-touch-callout]': 'userSelect()',\n '(document:keydown.esc)': 'closeDropdown()',\n '(longtap)': 'onContextMenu($event.detail.clientX, $event.detail.clientY)',\n },\n})\nexport class TuiDropdownContext extends TuiRectAccessor {\n private readonly isTouch = inject(TUI_IS_TOUCH);\n private currentRect = EMPTY_CLIENT_RECT;\n\n protected readonly userSelect = computed(() => (this.isTouch() ? 'none' : null));\n protected readonly activeZone = inject(TuiActiveZone);\n protected readonly driver = inject(TuiDropdownDriver);\n protected readonly doc = inject(DOCUMENT);\n\n protected readonly sub = merge(\n tuiTypedFromEvent(this.doc, 'pointerdown'),\n tuiTypedFromEvent(this.doc, 'contextmenu', {capture: true}),\n )\n .pipe(tuiZonefree(), takeUntilDestroyed())\n .subscribe((event: Event) => this.closeDropdown(event));\n\n public readonly type = 'dropdown';\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n @shouldCall(activeZoneFilter)\n protected closeDropdown(_event?: Event): void {\n this.driver.next(false);\n this.currentRect = EMPTY_CLIENT_RECT;\n }\n\n protected onContextMenu(x: number, y: number): void {\n this.currentRect = tuiPointToClientRect(x, y);\n this.driver.next(true);\n }\n}\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiDropdownHoverOptions {\n readonly hideDelay: number;\n readonly showDelay: number;\n}\n\n/** Default values for hint options */\nexport const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS: TuiDropdownHoverOptions = {\n showDelay: 200,\n hideDelay: 500,\n};\n\n/**\n * Default parameters for dropdown hover directive\n */\nexport const [TUI_DROPDOWN_HOVER_OPTIONS, tuiDropdownHoverOptionsProvider] =\n tuiCreateOptions(TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);\n","import {\n computed,\n contentChild,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiObscured} from '@taiga-ui/cdk/directives/obscured';\nimport {\n tuiCloseWatcher,\n tuiIfMap,\n tuiWatch,\n tuiZonefull,\n} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiInjectElement,\n tuiIsElement,\n tuiIsElementEditable,\n tuiIsHTMLElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiGetClosestFocusable,\n tuiIsFocusable,\n tuiIsFocusedIn,\n} from '@taiga-ui/cdk/utils/focus';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsDriver} from '@taiga-ui/core/classes';\nimport {tuiIsEditingKey} from '@taiga-ui/core/utils/miscellaneous';\nimport {shouldCall} from '@taiga-ui/event-plugins';\nimport {filter, fromEvent, merge} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownDriver} from './dropdown.driver';\n\nfunction shouldClose(this: TuiDropdownOpen, event: KeyboardEvent): boolean {\n return (\n // @ts-ignore\n typeof CloseWatcher === 'undefined' &&\n // ?. for autofill events\n event.key?.toLowerCase() === 'escape' &&\n this.enabled() &&\n this.open() &&\n !this['dropdown']()?.nextElementSibling\n );\n}\n\n@Directive({\n selector:\n '[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',\n providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],\n hostDirectives: [\n TuiObscured,\n {\n directive: TuiActiveZone,\n inputs: ['tuiActiveZoneParent'],\n outputs: ['tuiActiveZoneChange'],\n },\n ],\n host: {\n '(click)': 'onClick($event.target)',\n '(keydown.arrowDown)': 'onArrow($event, false)',\n '(keydown.arrowUp)': 'onArrow($event, true)',\n '(document:keydown.zoneless.capture)': 'onEsc($event)',\n '(document:keydown.zoneless)': 'onKeydown($event)',\n // TODO: Necessary because startWith(false) + distinctUntilChanged() in TuiActiveZone, think of better solution\n '(tuiActiveZoneChange)': '0',\n },\n})\nexport class TuiDropdownOpen {\n private readonly dropdownHost = contentChild('tuiDropdownHost', {\n descendants: true,\n read: ElementRef,\n });\n\n private readonly directive = inject(TuiDropdownDirective);\n private readonly el = tuiInjectElement();\n private readonly obscured = inject(TuiObscured);\n private readonly activeZone = inject(TuiActiveZone);\n private readonly driver = inject(TuiDropdownDriver);\n private readonly dropdown = computed(\n () => this.directive.ref()?.location.nativeElement,\n );\n\n public readonly enabled = input(true, {alias: 'tuiDropdownEnabled'});\n public readonly open = model(false, {alias: 'tuiDropdownOpen'});\n\n protected readonly driveEffect = effect(() => this.drive(this.open()));\n protected readonly syncSub = this.driver\n .pipe(\n filter((open) => open !== this.open()),\n takeUntilDestroyed(),\n )\n .subscribe((open) => this.update(open));\n\n protected readonly closeSub = this.driver\n .pipe(\n tuiIfMap(() =>\n merge(\n tuiCloseWatcher(),\n this.obscured.tuiObscured$.pipe(filter(Boolean)),\n this.activeZone.tuiActiveZoneChange.pipe(filter((a) => !a)),\n fromEvent(this.el, 'focusin').pipe(\n filter(\n (event) =>\n !this.host.contains(tuiGetActualTarget(event)) ||\n !this.directive.ref(),\n ),\n ),\n ),\n ),\n tuiZonefull(),\n tuiWatch(),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.toggle(false));\n\n public toggle(open: boolean): void {\n if (this.focused && !open) {\n this.host.focus({preventScroll: true});\n }\n\n this.update(open);\n }\n\n @shouldCall(shouldClose)\n protected onEsc(event: KeyboardEvent): void {\n event.preventDefault();\n this.toggle(false);\n }\n\n protected onClick(target: HTMLElement): void {\n if (!this.editable && this.host.contains(target)) {\n this.update(!this.open());\n }\n }\n\n protected onArrow(event: KeyboardEvent, up: boolean): void {\n if (\n !tuiIsElement(event.target) ||\n !this.host.contains(event.target) ||\n !this.enabled() ||\n !this.directive.content()\n ) {\n return;\n }\n\n event.preventDefault();\n this.focusDropdown(up);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const target = tuiGetActualTarget(event);\n\n if (\n !event.defaultPrevented &&\n tuiIsEditingKey(event.key) &&\n this.editable &&\n this.focused &&\n tuiIsHTMLElement(target) &&\n !tuiIsElementEditable(target)\n ) {\n this.host.focus({preventScroll: true});\n }\n }\n\n private get host(): HTMLElement {\n const initial = this.dropdownHost()?.nativeElement || this.el;\n const focusable = tuiIsFocusable(initial)\n ? initial\n : tuiGetClosestFocusable({initial, root: this.el});\n\n return this.dropdownHost()?.nativeElement || focusable || this.el;\n }\n\n private get editable(): boolean {\n return tuiIsElementEditable(this.host);\n }\n\n private get focused(): boolean {\n return tuiIsFocusedIn(this.host) || tuiIsFocusedIn(this.dropdown());\n }\n\n private update(open: boolean): void {\n if (open && !this.enabled()) {\n return this.drive();\n }\n\n this.open.set(open);\n this.drive();\n }\n\n private drive(open = this.open() && this.enabled()): void {\n tuiSetSignal(this.obscured.tuiObscuredEnabled, open);\n this.driver.next(open);\n }\n\n private focusDropdown(previous: boolean): void {\n const root = this.dropdown();\n\n if (!root) {\n this.update(true);\n\n return;\n }\n\n const doc = this.el.ownerDocument;\n const child = root.appendChild(doc.createElement('div'));\n const initial = previous ? child : root;\n const focusable = tuiGetClosestFocusable({initial, previous, root});\n\n child.remove();\n focusable?.focus();\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {contentChild, Directive, ElementRef, inject, input} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiInjectElement,\n tuiIsElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {\n delay,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n share,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TUI_DROPDOWN_HOVER_OPTIONS} from './dropdown-hover.options';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\n@Directive({\n selector: '[tuiDropdownHover]',\n providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)],\n host: {\n '(click.capture)': 'onClick($event)',\n },\n})\nexport class TuiDropdownHover extends TuiDriver {\n private readonly dropdownHost = contentChild('tuiDropdownHost', {\n descendants: true,\n read: ElementRef,\n });\n\n private hovered = false;\n private readonly el = tuiInjectElement();\n private readonly doc = inject(DOCUMENT);\n private readonly options = inject(TUI_DROPDOWN_HOVER_OPTIONS);\n private readonly activeZone = inject(TuiActiveZone);\n private readonly open = inject(TuiDropdownOpen, {optional: true});\n private readonly stream$ = merge(\n /**\n * Dropdown can be removed not only via click/touch –\n * swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.\n */\n toObservable(inject(TuiDropdownDirective).ref).pipe(\n filter((x) => !x && this.hovered),\n switchMap(() =>\n tuiTypedFromEvent(this.doc, 'pointerdown').pipe(\n map(tuiGetActualTarget),\n delay(this.tuiDropdownHideDelay()),\n startWith(null),\n takeUntil(fromEvent(this.doc, 'mouseover')),\n ),\n ),\n ),\n tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)),\n tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget)),\n ).pipe(\n map((element) => tuiIsElement(element) && this.isHovered(element)),\n distinctUntilChanged(),\n switchMap((v) =>\n of(v).pipe(\n delay(v ? this.tuiDropdownShowDelay() : this.tuiDropdownHideDelay()),\n ),\n ),\n tuiZoneOptimized(),\n tap((hovered) => {\n this.hovered = hovered;\n this.open?.toggle(hovered);\n }),\n share(),\n );\n\n public readonly tuiDropdownShowDelay = input(this.options.showDelay);\n public readonly tuiDropdownHideDelay = input(this.options.hideDelay);\n public readonly type = 'dropdown';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.hovered && this.open) {\n event.preventDefault();\n }\n }\n\n private isHovered(element: Element): boolean {\n const host = this.dropdownHost()?.nativeElement || this.el;\n const hovered = host.contains(element);\n const child = !this.el.contains(element) && this.activeZone.contains(element);\n\n return hovered || child;\n }\n}\n","import {Directive, inject, input, type OnChanges} from '@angular/core';\nimport {tuiAsDriver} from '@taiga-ui/core/classes';\n\nimport {TuiDropdownDriver} from './dropdown.driver';\n\n@Directive({\n selector: '[tuiDropdownManual]',\n providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],\n})\nexport class TuiDropdownManual implements OnChanges {\n private readonly driver = inject(TuiDropdownDriver);\n\n public readonly tuiDropdownManual = input<boolean | ''>(false);\n\n public ngOnChanges(): void {\n this.driver.next(!!this.tuiDropdownManual());\n }\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiAsPositionAccessor, TuiPositionAccessor} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\nimport {TUI_DROPDOWN_OPTIONS} from './dropdown-options.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\n\n@Directive({\n selector: '[tuiDropdownSided]',\n providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],\n})\nexport class TuiDropdownPositionSided extends TuiPositionAccessor {\n private readonly options = inject(TUI_DROPDOWN_OPTIONS);\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly vertical = inject(TuiDropdownPosition);\n private previous = this.options.direction || 'bottom';\n\n public readonly tuiDropdownSided = input<boolean | string>('');\n public readonly tuiDropdownSidedOffset = input(4);\n public readonly type = 'dropdown';\n\n public getPosition(rect: DOMRect): TuiPoint {\n if (this.tuiDropdownSided() === false) {\n return this.vertical.getPosition(rect);\n }\n\n const {height, width} = rect;\n const hostRect = this.vertical.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;\n const viewport = this.viewport.getClientRect();\n const {direction, offset} = this.options;\n const adjusted = this.vertical.getAlign(this.options.align);\n const align = adjusted === 'center' ? 'left' : adjusted;\n const available = {\n top: hostRect.bottom - viewport.top,\n left: hostRect.left - offset - viewport.left,\n right: viewport.right - hostRect.right - offset,\n bottom: viewport.bottom - hostRect.top,\n } as const;\n const position = {\n top: hostRect.bottom - height + this.tuiDropdownSidedOffset() + 1, // 1 for border\n left: hostRect.left - width - offset,\n right: hostRect.right + offset,\n bottom: hostRect.top - this.tuiDropdownSidedOffset() - 1, // 1 for border\n } as const;\n const better = available.top > available.bottom ? 'top' : 'bottom';\n const maxLeft = available.left > available.right ? position.left : position.right;\n const left = available[align] > width ? position[align] : maxLeft;\n\n if (\n (available[this.previous] > height && direction) ||\n this.previous === better\n ) {\n this.vertical.direction.next(this.previous);\n\n return [position[this.previous], left];\n }\n\n this.previous = better;\n this.vertical.direction.next(better);\n\n return [position[better], left];\n }\n}\n","import {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {\n computed,\n Directive,\n inject,\n input,\n type OnDestroy,\n PLATFORM_ID,\n ViewContainerRef,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_SPACE,\n EMPTY_CLIENT_RECT,\n TUI_TRUE_HANDLER,\n} from '@taiga-ui/cdk/constants';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {\n tuiInjectElement,\n tuiIsElement,\n tuiIsTextfield,\n tuiIsTextNode,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsString, tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDriver,\n tuiAsRectAccessor,\n TuiDriver,\n type TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TUI_SELECTION_STREAM} from '@taiga-ui/core/tokens';\nimport {tuiGetWordRange} from '@taiga-ui/core/utils';\nimport {combineLatest, distinctUntilChanged, filter, map} from 'rxjs';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\n\n@Directive({\n selector: '[tuiDropdownSelection]',\n providers: [\n tuiAsDriver(TuiDropdownSelection),\n tuiAsRectAccessor(TuiDropdownSelection),\n ],\n})\nexport class TuiDropdownSelection\n extends TuiDriver\n implements TuiRectAccessor, OnDestroy\n{\n private ghost?: HTMLElement;\n\n protected readonly doc = inject(DOCUMENT);\n protected readonly vcr = inject(ViewContainerRef);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly el = tuiInjectElement();\n protected readonly handler = computed((visible = this.tuiDropdownSelection()) =>\n tuiIsString(visible) ? TUI_TRUE_HANDLER : visible,\n );\n\n protected readonly stream$ = combineLatest([\n toObservable(this.handler),\n inject(TUI_SELECTION_STREAM).pipe(\n map(() => this.getRange()),\n filter((range) => this.isValid(range)),\n distinctUntilChanged(\n (x, y) =>\n x.startOffset === y.startOffset &&\n x.endOffset === y.endOffset &&\n x.commonAncestorContainer === y.commonAncestorContainer,\n ),\n ),\n ]).pipe(\n map(([handler, range]) => {\n const contained = this.el.contains(range.commonAncestorContainer);\n\n this.range =\n contained && tuiIsTextNode(range.commonAncestorContainer)\n ? range\n : this.range;\n\n return (contained && handler(this.range)) || this.inDropdown(range);\n }),\n );\n\n protected range = isPlatformBrowser(inject(PLATFORM_ID))\n ? new Range()\n : ({} as unknown as Range);\n\n public readonly type = 'dropdown';\n public readonly tuiDropdownSelection = input<TuiBooleanHandler<Range> | string>('');\n public readonly tuiDropdownSelectionPosition = input<'selection' | 'tag' | 'word'>(\n 'selection',\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n public getClientRect(): DOMRect {\n switch (this.tuiDropdownSelectionPosition()) {\n case 'tag': {\n const {commonAncestorContainer} = this.range;\n const element = tuiIsElement(commonAncestorContainer)\n ? commonAncestorContainer\n : commonAncestorContainer.parentNode;\n\n return element && tuiIsElement(element)\n ? element.getBoundingClientRect()\n : EMPTY_CLIENT_RECT;\n }\n case 'word':\n return tuiGetWordRange(this.range).getBoundingClientRect();\n default:\n return this.range.getBoundingClientRect();\n }\n }\n\n public ngOnDestroy(): void {\n if (this.ghost) {\n this.ghostHost.removeChild(this.ghost);\n }\n }\n\n private get ghostHost(): HTMLElement {\n return this.el.querySelector('tui-textfield .t-ghost') || this.el;\n }\n\n private getRange(): Range {\n const active = tuiGetFocused(this.doc);\n const selection = this.doc.getSelection();\n const range =\n active && tuiIsTextfield(active) && this.el.contains(active)\n ? this.veryVerySadInputFix(active)\n : (selection?.rangeCount && selection.getRangeAt(0)) || this.range;\n\n return range.cloneRange();\n }\n\n /**\n * Check if given range is at least partially inside dropdown\n */\n private inDropdown(range: Range): boolean {\n const {startContainer, endContainer} = range;\n const inDropdown = this.boxContains(range.commonAncestorContainer);\n const hostToDropdown =\n this.boxContains(endContainer) && this.el.contains(startContainer);\n const dropdownToHost =\n this.boxContains(startContainer) && this.el.contains(endContainer);\n\n return inDropdown || hostToDropdown || dropdownToHost;\n }\n\n /**\n * Check if Node is inside dropdown\n */\n private boxContains(node: Node): boolean {\n return !!this.dropdown.ref()?.location.nativeElement.contains(node);\n }\n\n /**\n * Check if range is not inside tui-textfield's DOM elements\n */\n private isValid(range: Range): boolean {\n return (\n !this.el.contains(range.commonAncestorContainer) ||\n !this.el.closest('tui-textfield') ||\n range.intersectsNode(this.ghost || this.el)\n );\n }\n\n private veryVerySadInputFix(element: HTMLInputElement | HTMLTextAreaElement): Range {\n const {ghost = this.initGhost(this.ghostHost)} = this;\n const {top, left, width, height} = this.ghostHost.getBoundingClientRect();\n const {selectionStart, selectionEnd, value} = element;\n const range = this.doc.createRange();\n const hostRect = this.ghostHost.getBoundingClientRect();\n\n ghost.style.top = tuiPx(top - hostRect.top);\n ghost.style.left = tuiPx(left - hostRect.left);\n ghost.style.width = tuiPx(width);\n ghost.style.height = tuiPx(height);\n ghost.textContent = CHAR_ZERO_WIDTH_SPACE + value + CHAR_NO_BREAK_SPACE;\n\n range.setStart(ghost.firstChild as Node, selectionStart || 0);\n range.setEnd(ghost.firstChild as Node, selectionEnd || 0);\n\n return range;\n }\n\n /**\n * Create an invisible DIV styled exactly like input/textarea element inside directive\n */\n private initGhost(\n element: HTMLElement | HTMLInputElement | HTMLTextAreaElement,\n ): HTMLElement {\n const ghost = this.doc.createElement('div');\n const {font, letterSpacing, textTransform, padding, borderTop} =\n getComputedStyle(element);\n\n ghost.style.position = 'absolute';\n ghost.style.pointerEvents = 'none';\n ghost.style.opacity = '0';\n ghost.style.whiteSpace = 'pre-wrap';\n ghost.style.boxSizing = 'border-box';\n ghost.style.borderTop = borderTop;\n ghost.style.font = font;\n ghost.style.letterSpacing = letterSpacing;\n ghost.style.textTransform = textTransform;\n ghost.style.padding = padding;\n\n this.ghostHost.appendChild(ghost);\n this.ghost = ghost;\n\n return ghost;\n }\n}\n","import {TuiDropdownComponent} from './dropdown.component';\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownDriverDirective} from './dropdown.driver';\nimport {TuiDropdownContent} from './dropdown-content.directive';\nimport {TuiDropdownContext} from './dropdown-context.directive';\nimport {TuiDropdownHover} from './dropdown-hover.directive';\nimport {TuiDropdownManual} from './dropdown-manual.directive';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\nimport {TuiDropdownOptionsDirective} from './dropdown-options.directive';\nimport {TuiDropdownPosition} from './dropdown-position.directive';\nimport {TuiDropdownPositionSided} from './dropdown-position-sided.directive';\nimport {TuiDropdownSelection} from './dropdown-selection.directive';\n\nexport const TuiDropdown = [\n TuiDropdownOptionsDirective,\n TuiDropdownDriverDirective,\n TuiDropdownDirective,\n TuiDropdownComponent,\n TuiDropdownOpen,\n TuiDropdownManual,\n TuiDropdownHover,\n TuiDropdownContent,\n TuiDropdownContext,\n TuiDropdownPosition,\n TuiDropdownPositionSided,\n TuiDropdownSelection,\n] as const;\n","import {type Signal, type WritableSignal} from '@angular/core';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiDropdownDirective} from './dropdown.directive';\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\ntype C = PolymorpheusContent;\n\nexport function tuiDropdown(value: C | WritableSignal<C>): WritableSignal<C>;\nexport function tuiDropdown(value: Signal<C>): Signal<C>;\nexport function tuiDropdown(value: C | Signal<C>): Signal<C> {\n return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});\n}\n\nexport function tuiDropdownEnabled(\n value: WritableSignal<boolean> | boolean,\n): WritableSignal<boolean>;\nexport function tuiDropdownEnabled(value: Signal<boolean>): Signal<boolean>;\nexport function tuiDropdownEnabled(value: Signal<boolean> | boolean): Signal<boolean> {\n return tuiDirectiveBinding(TuiDropdownOpen, 'enabled', value, {});\n}\n","import {Directive, inject} from '@angular/core';\nimport {tuiOverrideOptions} from '@taiga-ui/core/utils/miscellaneous';\n\nimport {\n TUI_DROPDOWN_DEFAULT_OPTIONS,\n TUI_DROPDOWN_OPTIONS,\n tuiDropdownOptionsProvider,\n} from './dropdown-options.directive';\n\n@Directive({\n providers: [tuiDropdownOptionsProvider({})],\n})\nexport class TuiDropdownFixed {\n constructor() {\n const override = tuiOverrideOptions(\n {limitWidth: 'fixed'},\n TUI_DROPDOWN_DEFAULT_OPTIONS,\n );\n\n override(inject(TUI_DROPDOWN_OPTIONS, {self: true, optional: true}), null);\n }\n}\n\n@Directive()\nexport class TuiDropdownAuto {\n constructor() {\n /**\n * Update directive props with new defaults before inputs are processed\n * TODO: find better way to override TuiDropdownFixed host directive from parent component\n */\n (inject(TUI_DROPDOWN_OPTIONS) as any).limitWidth = 'auto';\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {TuiDropdownOpen} from './dropdown-open.directive';\n\n@Directive({\n hostDirectives: [\n {\n directive: TuiDropdownOpen,\n inputs: ['tuiDropdownOpen: open', 'tuiDropdownEnabled'],\n outputs: ['tuiDropdownOpenChange: openChange'],\n },\n ],\n})\nexport class TuiWithDropdownOpen {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiDropdownDriverDirective","i2.TuiDropdownPosition","i1","i2","tuiOverrideOptions","i1.TuiDropdownOpen"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, Directive, Optional, Self, SkipSelf, inject, Input, input, output, INJECTOR, ChangeDetectionStrategy, Component, TemplateRef, signal, computed } from '@angular/core';
3
+ import { InjectionToken, Directive, Optional, Self, SkipSelf, inject, Input, input, output, INJECTOR, ChangeDetectionStrategy, Component, TemplateRef, forwardRef, signal, computed } from '@angular/core';
4
4
  import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
5
5
  import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
6
6
  import * as i3 from '@taiga-ui/cdk/directives/active-zone';
@@ -11,8 +11,8 @@ import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
11
11
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
12
12
  import { tuiInjectElement, tuiPointToClientRect } from '@taiga-ui/cdk/utils/dom';
13
13
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
14
- import { tuiProvide, tuiPure, tuiSetSignal, tuiPx, tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
15
- import { TuiDriverDirective, TuiDriver, tuiAsDriver, TuiPositionAccessor, tuiFallbackAccessor, TuiRectAccessor, tuiAsRectAccessor, tuiAsVehicle, tuiPositionAccessorFor, tuiRectAccessorFor } from '@taiga-ui/core/classes';
14
+ import { tuiPure, tuiSetSignal, tuiPx, tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
15
+ import { TuiDriverDirective, TuiDriver, tuiAsDriver, TuiPositionAccessor, tuiFallbackAccessor, TuiRectAccessor, tuiAsVehicle, tuiAsRectAccessor, tuiPositionAccessorFor, tuiRectAccessorFor } from '@taiga-ui/core/classes';
16
16
  import { tuiButtonOptionsProvider } from '@taiga-ui/core/components/button';
17
17
  import * as i1 from '@taiga-ui/core/directives/appearance';
18
18
  import { tuiAppearance, TuiAppearance } from '@taiga-ui/core/directives/appearance';
@@ -21,7 +21,8 @@ import { TUI_VIEWPORT } from '@taiga-ui/core/tokens';
21
21
  import { tuiOverrideOptions, tuiIsObscured } from '@taiga-ui/core/utils';
22
22
  import { PolymorpheusComponent, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
23
23
  import { Subject, merge, switchMap, of, delay, takeUntil, repeat, filter, map, tap, takeWhile, distinctUntilChanged, fromEvent, debounce, timer, startWith, skip, BehaviorSubject } from 'rxjs';
24
- import { TuiPopupService } from '@taiga-ui/core/directives/popup';
24
+ import { TuiPopupService } from '@taiga-ui/core/portals/popup';
25
+ import { tuiProvide } from '@taiga-ui/cdk/utils/di';
25
26
  import { DOCUMENT } from '@angular/common';
26
27
  import { tuiIfMap, tuiTypedFromEvent, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
27
28
  import { tuiIsFocused } from '@taiga-ui/cdk/utils/focus';
@@ -182,7 +183,7 @@ class TuiHintPosition extends TuiPositionAccessor {
182
183
  this.el = tuiInjectElement();
183
184
  this.offset = inject(TUI_IS_MOBILE) ? 16 : 8;
184
185
  this.viewport = inject(TUI_VIEWPORT);
185
- this.accessor = tuiFallbackAccessor('hint')(inject(TuiRectAccessor), inject(TuiHintDirective));
186
+ this.accessor = tuiFallbackAccessor('hint')(inject(TuiRectAccessor, { optional: true }), { getClientRect: () => this.el.getBoundingClientRect() });
186
187
  this.points = TUI_HINT_DIRECTIONS.reduce((acc, direction) => ({ ...acc, [direction]: [0, 0] }), {});
187
188
  this.direction = input(inject(TUI_HINT_OPTIONS).direction, {
188
189
  alias: 'tuiHintDirection',
@@ -199,7 +200,7 @@ class TuiHintPosition extends TuiPositionAccessor {
199
200
  const direction = this.direction();
200
201
  const width = el?.clientWidth ?? rect.width;
201
202
  const height = el?.clientHeight ?? rect.height;
202
- const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;
203
+ const hostRect = this.accessor.getClientRect();
203
204
  const leftCenter = hostRect.left + hostRect.width / 2;
204
205
  const topCenter = hostRect.top + hostRect.height / 2;
205
206
  const rtl = this.el.matches('[dir="rtl"] :scope');
@@ -305,7 +306,6 @@ class TuiHintDirective {
305
306
  }
306
307
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
307
308
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: TuiHintDirective, isStandalone: true, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: { content: { classPropertyName: "content", publicName: "tuiHint", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "tuiHintContext", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "tuiHintAppearance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "tuiHintVisible" }, providers: [
308
- tuiAsRectAccessor(TuiHintDirective),
309
309
  tuiAsVehicle(TuiHintDirective),
310
310
  {
311
311
  provide: PolymorpheusComponent,
@@ -319,7 +319,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
319
319
  args: [{
320
320
  selector: '[tuiHint]:not(ng-container):not(ng-template)',
321
321
  providers: [
322
- tuiAsRectAccessor(TuiHintDirective),
323
322
  tuiAsVehicle(TuiHintDirective),
324
323
  {
325
324
  provide: PolymorpheusComponent,
@@ -402,7 +401,7 @@ const TUI_HINT_PROVIDERS = [
402
401
  TuiPositionService,
403
402
  TuiHoveredService,
404
403
  tuiPositionAccessorFor('hint', TuiHintPosition),
405
- tuiRectAccessorFor('hint', TuiHintDirective),
404
+ tuiRectAccessorFor('hint', forwardRef(() => TuiHintDirective)),
406
405
  ];
407
406
  const GAP = 8;
408
407
  class TuiHintComponent {
@@ -607,4 +606,4 @@ const TuiHint = [
607
606
  */
608
607
 
609
608
  export { TUI_HINT_COMPONENT, TUI_HINT_DEFAULT_OPTIONS, TUI_HINT_DIRECTIONS, TUI_HINT_OPTIONS, TUI_HINT_PROVIDERS, TuiHint, TuiHintComponent, TuiHintDescribe, TuiHintDirective, TuiHintDriver, TuiHintHost, TuiHintHover, TuiHintManual, TuiHintOptionsDirective, TuiHintOverflow, TuiHintPointer, TuiHintPosition, TuiHintUnstyled, TuiHintUnstyledComponent, tuiHintOptionsProvider };
610
- //# sourceMappingURL=taiga-ui-core-directives-hint.mjs.map
609
+ //# sourceMappingURL=taiga-ui-core-portals-hint.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-core-portals-hint.mjs","sources":["../../../projects/core/portals/hint/hint.providers.ts","../../../projects/core/portals/hint/hint-driver.directive.ts","../../../projects/core/portals/hint/hint-options.directive.ts","../../../projects/core/portals/hint/hint-hover.directive.ts","../../../projects/core/portals/hint/hint-position.directive.ts","../../../projects/core/portals/hint/hint.directive.ts","../../../projects/core/portals/hint/hint-pointer.directive.ts","../../../projects/core/portals/hint/hint-unstyled.component.ts","../../../projects/core/portals/hint/hint.component.ts","../../../projects/core/portals/hint/hint-describe.directive.ts","../../../projects/core/portals/hint/hint-host.directive.ts","../../../projects/core/portals/hint/hint-manual.directive.ts","../../../projects/core/portals/hint/hint-overflow.directive.ts","../../../projects/core/portals/hint/hint.ts","../../../projects/core/portals/hint/taiga-ui-core-portals-hint.ts"],"sourcesContent":["import {InjectionToken, type Type} from '@angular/core';\n\nimport {TuiHintComponent} from './hint.component';\n\n/**\n * A component to display a hint\n */\nexport const TUI_HINT_COMPONENT = new InjectionToken<Type<unknown>>(\n ngDevMode ? 'TUI_HINT_COMPONENT' : '',\n {\n factory: () => TuiHintComponent,\n },\n);\n","import {Directive} from '@angular/core';\nimport {TuiDriverDirective} from '@taiga-ui/core/classes';\n\n@Directive()\nexport class TuiHintDriver extends TuiDriverDirective {\n public readonly type = 'hint';\n}\n","import {\n Directive,\n type FactoryProvider,\n inject,\n InjectionToken,\n Input,\n type OnChanges,\n Optional,\n Self,\n SkipSelf,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {tuiOverrideOptions} from '@taiga-ui/core/utils';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {Subject} from 'rxjs';\n\nexport type TuiHintDirection =\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom'\n | 'left-bottom'\n | 'left-top'\n | 'left'\n | 'right-bottom'\n | 'right-top'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'top';\n\nexport const TUI_HINT_DIRECTIONS: readonly TuiHintDirection[] = [\n 'bottom-left',\n 'bottom',\n 'bottom-right',\n 'top-left',\n 'top',\n 'top-right',\n 'left-top',\n 'left',\n 'left-bottom',\n 'right-top',\n 'right',\n 'right-bottom',\n];\n\nexport interface TuiHintOptions extends TuiAppearanceOptions {\n readonly direction: TuiHintDirection | TuiHintDirection[];\n readonly hideDelay: number;\n readonly icon: string;\n readonly showDelay: number;\n}\n\n/** Default values for hint options */\nexport const TUI_HINT_DEFAULT_OPTIONS: TuiHintOptions = {\n direction: 'bottom-left',\n showDelay: 500,\n hideDelay: 200,\n appearance: '',\n /** TODO @deprecated use {@link TUI_TOOLTIP_OPTIONS} instead **/\n icon: '@tui.circle-help',\n};\n\n/**\n * Default parameters for hint directive\n */\nexport const TUI_HINT_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_HINT_OPTIONS' : '', {\n factory: () => TUI_HINT_DEFAULT_OPTIONS,\n});\n\nexport const tuiHintOptionsProvider: (\n options: Partial<TuiHintOptions>,\n) => FactoryProvider = (override: Partial<TuiHintOptions>) => ({\n provide: TUI_HINT_OPTIONS,\n deps: [\n [new Optional(), new Self(), TuiHintOptionsDirective],\n [new Optional(), new SkipSelf(), TUI_HINT_OPTIONS],\n ],\n useFactory: tuiOverrideOptions(override, TUI_HINT_DEFAULT_OPTIONS),\n});\n\n/**\n * @deprecated: drop in 5.0\n */\n@Directive({\n selector: '[tuiHintContent]',\n providers: [tuiProvide(TUI_HINT_OPTIONS, TuiHintOptionsDirective)],\n})\nexport class TuiHintOptionsDirective implements TuiHintOptions, OnChanges {\n private readonly options = inject(TUI_HINT_OPTIONS, {skipSelf: true});\n\n @Input('tuiHintContent')\n public content: PolymorpheusContent;\n\n @Input('tuiHintDirection')\n public direction = this.options.direction;\n\n @Input('tuiHintAppearance')\n public appearance = this.options.appearance;\n\n @Input('tuiHintShowDelay')\n public showDelay = this.options.showDelay;\n\n @Input('tuiHintHideDelay')\n public hideDelay = this.options.hideDelay;\n\n public icon = this.options.icon;\n\n public readonly change$ = new Subject<void>();\n\n public ngOnChanges(): void {\n this.change$.next();\n }\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {tuiIsObscured} from '@taiga-ui/core/utils';\nimport {\n delay,\n filter,\n map,\n merge,\n of,\n repeat,\n Subject,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport {TUI_HINT_OPTIONS} from './hint-options.directive';\n\n@Directive({\n providers: [tuiAsDriver(TuiHintHover), TuiHoveredService],\n exportAs: 'tuiHintHover',\n})\nexport class TuiHintHover extends TuiDriver {\n private readonly isMobile = inject(TUI_IS_MOBILE);\n private readonly el = tuiInjectElement();\n private readonly hovered$ = inject(TuiHoveredService);\n private readonly options = inject(TUI_HINT_OPTIONS);\n private visible = false;\n private readonly toggle$ = new Subject<boolean>();\n private readonly stream$ = merge(\n this.toggle$.pipe(\n switchMap((show) =>\n this.isMobile\n ? of(show)\n : of(show).pipe(delay(show ? 0 : this.hideDelay())),\n ),\n takeUntil(this.hovered$),\n repeat(),\n ),\n this.hovered$.pipe(\n switchMap((show) =>\n this.isMobile\n ? of(show)\n : of(show).pipe(delay(show ? this.showDelay() : this.hideDelay())),\n ),\n takeUntil(this.toggle$),\n repeat(),\n ),\n ).pipe(\n filter(() => this.enabled),\n map(\n (value) =>\n value &&\n (this.el.hasAttribute('tuiHintPointer') || !tuiIsObscured(this.el)),\n ),\n tap((visible) => {\n this.visible = visible;\n }),\n );\n\n private readonly parent = inject(TuiHintHover, {\n optional: true,\n skipSelf: true,\n });\n\n public readonly showDelay = input(this.options.showDelay, {\n alias: 'tuiHintShowDelay',\n });\n\n public readonly hideDelay = input(this.options.hideDelay, {\n alias: 'tuiHintHideDelay',\n });\n\n public readonly type = 'hint';\n\n public enabled = true;\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n public toggle(visible = !this.visible): void {\n this.toggle$.next(visible);\n this.parent?.toggle(visible);\n }\n\n public close(): void {\n this.toggle$.next(false);\n }\n}\n","import {Directive, inject, input, output} from '@angular/core';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiFallbackAccessor,\n TuiPositionAccessor,\n TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\nimport {\n TUI_HINT_DIRECTIONS,\n TUI_HINT_OPTIONS,\n type TuiHintDirection,\n} from './hint-options.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 24;\nconst TOP = 0;\nconst LEFT = 1;\n\n@Directive()\nexport class TuiHintPosition extends TuiPositionAccessor {\n private readonly el = tuiInjectElement();\n private readonly offset = inject(TUI_IS_MOBILE) ? 16 : 8;\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly accessor = tuiFallbackAccessor<TuiRectAccessor>('hint')(\n inject<any>(TuiRectAccessor, {optional: true}),\n {getClientRect: () => this.el.getBoundingClientRect()},\n );\n\n private readonly points: Record<TuiHintDirection, [number, number]> =\n TUI_HINT_DIRECTIONS.reduce(\n (acc, direction) => ({...acc, [direction]: [0, 0]}),\n {} as Record<TuiHintDirection, [number, number]>,\n );\n\n public readonly direction = input(inject(TUI_HINT_OPTIONS).direction, {\n alias: 'tuiHintDirection',\n });\n\n public readonly directionChange = output<TuiHintDirection>({\n alias: 'tuiHintDirectionChange',\n });\n\n public readonly type = 'hint';\n\n @tuiPure\n public emitDirection(direction: TuiHintDirection): void {\n this.directionChange.emit(direction);\n }\n\n public getPosition(rect: DOMRect, el?: HTMLElement): TuiPoint {\n const direction = this.direction();\n const width = el?.clientWidth ?? rect.width;\n const height = el?.clientHeight ?? rect.height;\n const hostRect = this.accessor.getClientRect();\n const leftCenter = hostRect.left + hostRect.width / 2;\n const topCenter = hostRect.top + hostRect.height / 2;\n const rtl = this.el.matches('[dir=\"rtl\"] :scope');\n\n this.points['top-left'][TOP] = hostRect.top - height - this.offset;\n this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\n this.points.top[TOP] = this.points['top-left'][TOP];\n this.points.top[LEFT] = leftCenter - width / 2;\n this.points['top-right'][TOP] = this.points['top-left'][TOP];\n this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\n\n this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\n this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\n this.points.bottom[TOP] = this.points['bottom-left'][TOP];\n this.points.bottom[LEFT] = this.points.top[LEFT];\n this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\n this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\n\n this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\n this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\n this.points.left[TOP] = topCenter - height / 2;\n this.points.left[LEFT] = this.points['left-top'][LEFT];\n this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\n this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\n\n this.points['right-top'][TOP] = this.points['left-top'][TOP];\n this.points['right-top'][LEFT] = hostRect.right + this.offset;\n this.points.right[TOP] = this.points.left[TOP];\n this.points.right[LEFT] = this.points['right-top'][LEFT];\n this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\n this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\n\n const array = Array.isArray(direction) ? direction : [direction];\n const priority = array.map((direction) => adjust(direction, rtl));\n const updated =\n priority\n .concat(TUI_HINT_DIRECTIONS)\n .find((dir) => this.checkPosition(this.points[dir], width, height)) ||\n this.fallback;\n\n this.emitDirection(adjust(updated, rtl));\n\n return this.points[updated];\n }\n\n private get fallback(): TuiHintDirection {\n return this.points.top[TOP] >\n this.viewport.getClientRect().bottom - this.points.bottom[TOP]\n ? 'top'\n : 'bottom';\n }\n\n private checkPosition([top, left]: TuiPoint, width: number, height: number): boolean {\n const viewport = this.viewport.getClientRect();\n\n return (\n top > viewport.top + GAP &&\n left > viewport.left + GAP &&\n top + height < viewport.bottom - GAP &&\n left + width < viewport.right - GAP\n );\n }\n}\n\nfunction adjust(direction: TuiHintDirection, rtl: boolean): TuiHintDirection {\n if (rtl && direction.includes('left')) {\n return direction.replace('left', 'right') as TuiHintDirection;\n }\n\n if (rtl && direction.includes('right')) {\n return direction.replace('right', 'left') as TuiHintDirection;\n }\n\n return direction;\n}\n","import {\n type ComponentRef,\n Directive,\n inject,\n INJECTOR,\n input,\n type OnChanges,\n type OnDestroy,\n output,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAsVehicle,\n type TuiRectAccessor,\n type TuiVehicle,\n} from '@taiga-ui/core/classes';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent, type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_HINT_COMPONENT} from './hint.providers';\nimport {TuiHintDriver} from './hint-driver.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TUI_HINT_OPTIONS} from './hint-options.directive';\nimport {TuiHintPosition} from './hint-position.directive';\n\n@Directive({\n selector: '[tuiHint]:not(ng-container):not(ng-template)',\n providers: [\n tuiAsVehicle(TuiHintDirective),\n {\n provide: PolymorpheusComponent,\n deps: [TUI_HINT_COMPONENT, INJECTOR],\n useClass: PolymorpheusComponent,\n },\n ],\n hostDirectives: [\n TuiHintDriver,\n {\n directive: TuiHintHover,\n inputs: ['tuiHintHideDelay', 'tuiHintShowDelay'],\n },\n {\n directive: TuiHintPosition,\n inputs: ['tuiHintDirection'],\n outputs: ['tuiHintDirectionChange'],\n },\n ],\n})\nexport class TuiHintDirective<C>\n implements OnDestroy, OnChanges, TuiRectAccessor, TuiVehicle\n{\n private readonly service = inject(TuiPopupService);\n private ref?: ComponentRef<unknown>;\n\n public readonly content = input<PolymorpheusContent<C>>(null, {alias: 'tuiHint'});\n public readonly context = input<C>(undefined, {alias: 'tuiHintContext'});\n public readonly appearance = input(inject(TUI_HINT_OPTIONS).appearance, {\n alias: 'tuiHintAppearance',\n });\n\n public readonly visible = output<boolean>({alias: 'tuiHintVisible'});\n\n public component = inject(PolymorpheusComponent<unknown>);\n public readonly el = tuiInjectElement();\n public readonly type = 'hint';\n\n public ngOnChanges(): void {\n if (!this.content()) {\n this.toggle(false);\n }\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n if (show && this.content() && !this.ref) {\n this.ref = this.service.add(this.component);\n this.visible.emit(true);\n } else if (this.ref) {\n this.ref.destroy();\n this.ref = undefined;\n this.visible.emit(false);\n }\n }\n}\n","import {Directive} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiPointToClientRect} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAsDriver,\n tuiAsRectAccessor,\n type TuiRectAccessor,\n} from '@taiga-ui/core/classes';\n\nimport {TuiHintHover} from './hint-hover.directive';\n\n@Directive({\n selector: '[tuiHint][tuiHintPointer]',\n providers: [tuiAsRectAccessor(TuiHintPointer), tuiAsDriver(TuiHintPointer)],\n host: {\n '(mousemove.zoneless)': 'onMove($event)',\n },\n})\nexport class TuiHintPointer extends TuiHintHover implements TuiRectAccessor {\n private currentRect = EMPTY_CLIENT_RECT;\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n protected onMove({clientX, clientY}: MouseEvent): void {\n this.currentRect = tuiPointToClientRect(clientX, clientY);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n INJECTOR,\n TemplateRef,\n} from '@angular/core';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {PolymorpheusComponent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiHintDirective} from './hint.directive';\n\n@Component({\n imports: [PolymorpheusOutlet],\n template: '<ng-container *polymorpheusOutlet=\"hint.content()\" />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiHintUnstyledComponent {\n protected readonly hint = inject(TuiHintDirective);\n}\n\n@Directive({\n selector: 'ng-template[tuiHint]',\n})\nexport class TuiHintUnstyled<C> {\n constructor() {\n const hint = inject(TuiHintDirective<C>);\n\n tuiSetSignal(hint.content, inject(TemplateRef<C>));\n hint.component = new PolymorpheusComponent(\n TuiHintUnstyledComponent,\n inject(INJECTOR),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure, tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiPositionAccessorFor,\n TuiRectAccessor,\n tuiRectAccessorFor,\n} from '@taiga-ui/core/classes';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiAppearance, tuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {TuiPositionService, TuiVisualViewportService} from '@taiga-ui/core/services';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {tuiIsObscured} from '@taiga-ui/core/utils';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {map, takeWhile} from 'rxjs';\n\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TuiHintPointer} from './hint-pointer.directive';\nimport {TuiHintPosition} from './hint-position.directive';\nimport {TuiHintUnstyledComponent} from './hint-unstyled.component';\n\nexport const TUI_HINT_PROVIDERS = [\n TuiPositionService,\n TuiHoveredService,\n tuiPositionAccessorFor('hint', TuiHintPosition),\n tuiRectAccessorFor(\n 'hint',\n forwardRef(() => TuiHintDirective),\n ),\n];\n\nconst GAP = 8;\n\n@Component({\n selector: 'tui-hint',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"content() as text; context: hint.context()\"\n [innerHTML]=\"text\"\n ></span>\n `,\n styleUrl: './hint.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TUI_HINT_PROVIDERS, tuiButtonOptionsProvider({size: 's'})],\n hostDirectives: [TuiAppearance, TuiAnimated, TuiActiveZone],\n host: {\n role: 'tooltip',\n '[class._untouchable]': 'pointer',\n '[class._mobile]': 'isMobile',\n '[attr.tuiTheme]': 'theme',\n '(document:click)': 'onClick($event.target)',\n },\n})\nexport class TuiHintComponent {\n private readonly el = tuiInjectElement();\n private readonly hover = inject(TuiHintHover);\n private readonly vvs = inject(TuiVisualViewportService);\n private readonly viewport = inject(TUI_VIEWPORT);\n\n protected readonly pointer = inject(TuiHintPointer, {optional: true});\n protected readonly accessor = inject(TuiRectAccessor);\n protected readonly hint = inject(TuiHintDirective);\n protected readonly isMobile = inject(TUI_IS_MOBILE);\n\n protected readonly content =\n this.hint.component.component === TuiHintUnstyledComponent\n ? signal('')\n : this.hint.content;\n\n protected readonly theme = this.hint.el\n .closest('[tuiTheme]')\n ?.getAttribute('tuiTheme');\n\n protected readonly appearance = tuiAppearance(this.hint.appearance);\n\n constructor() {\n inject(TuiPositionService)\n .pipe(\n takeWhile(() => this.hint.el.isConnected),\n map((point) => this.vvs.correct(point)),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: ([top, left]) => this.update(top, left),\n complete: () => this.hover.close(),\n });\n\n inject(TuiHoveredService)\n .pipe(takeUntilDestroyed())\n .subscribe((hover) => this.hover.toggle(hover));\n }\n\n protected onClick(target: HTMLElement): void {\n if (\n (!target.closest(this.el.tagName) && !this.hint.el.contains(target)) ||\n tuiIsObscured(this.hint.el)\n ) {\n this.hover.toggle(false);\n }\n }\n\n @tuiPure\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\n this.el.style.top = top;\n this.el.style.left = left;\n this.el.style.setProperty('--t-top', `${beakTop}%`);\n this.el.style.setProperty('--t-left', `${beakLeft}%`);\n this.el.style.setProperty(\n '--t-rotate',\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\n );\n }\n\n private update(top: number, left: number): void {\n const {clientHeight, clientWidth} = this.el;\n const rect = this.accessor.getClientRect();\n\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\n return;\n }\n\n const viewport = this.viewport.getClientRect();\n const safeLeft = tuiClamp(\n Math.max(GAP, left),\n viewport.left + GAP,\n Math.max(GAP, viewport.width + viewport.left - clientWidth - GAP),\n );\n\n const [beakTop, beakLeft] = this.vvs.correct([\n rect.top + rect.height / 2 - top,\n rect.left + rect.width / 2 - safeLeft,\n ]);\n\n this.apply(\n tuiPx(Math.round(top)),\n tuiPx(Math.round(safeLeft)),\n Math.round((tuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\n Math.round((tuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100),\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {computed, Directive, inject, input} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {tuiIfMap, tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {\n debounce,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n of,\n skip,\n startWith,\n switchMap,\n timer,\n} from 'rxjs';\n\n@Directive({\n selector: '[tuiHintDescribe]',\n providers: [tuiAsDriver(TuiHintDescribe)],\n})\nexport class TuiHintDescribe extends TuiDriver {\n private readonly doc = inject(DOCUMENT);\n private readonly el = tuiInjectElement();\n\n protected readonly element = computed((id = this.id()) =>\n id ? this.doc.querySelector(`#${id}`) || this.el : this.el,\n );\n\n public readonly id = input<string | null | undefined>('', {alias: 'tuiHintDescribe'});\n public readonly type = 'hint';\n\n protected readonly stream$ = toObservable(this.id).pipe(\n distinctUntilChanged(),\n tuiIfMap(() => fromEvent(this.doc, 'keydown', {capture: true}), tuiIsPresent),\n switchMap(() =>\n this.focused\n ? of(false)\n : merge(\n tuiTypedFromEvent(this.doc, 'keyup'),\n tuiTypedFromEvent(this.element(), 'blur'),\n ).pipe(map(() => this.focused)),\n ),\n debounce((visible) => (visible ? timer(1000) : of(null))),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get focused(): boolean {\n return tuiIsFocused(this.element());\n }\n}\n","import {Directive, input} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiAsRectAccessor, TuiRectAccessor} from '@taiga-ui/core/classes';\n\n@Directive({\n selector: '[tuiHint][tuiHintHost]',\n providers: [tuiAsRectAccessor(TuiHintHost)],\n})\nexport class TuiHintHost extends TuiRectAccessor {\n public readonly tuiHintHost = input<HTMLElement>();\n public readonly type = 'hint';\n\n public getClientRect(): DOMRect {\n return this.tuiHintHost()?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\n }\n}\n","import {Directive, inject, input, type OnChanges} from '@angular/core';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {BehaviorSubject} from 'rxjs';\n\nimport {TuiHintHover} from './hint-hover.directive';\n\n@Directive({\n selector: '[tuiHint][tuiHintManual]',\n providers: [tuiAsDriver(TuiHintManual)],\n})\nexport class TuiHintManual extends TuiDriver implements OnChanges {\n private readonly hover = inject(TuiHintHover);\n private readonly stream$ = new BehaviorSubject(false);\n\n public readonly visible = input<boolean | null>(false, {alias: 'tuiHintManual'});\n public readonly type = 'hint';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n this.hover.enabled = false;\n }\n\n public ngOnChanges(): void {\n this.stream$.next(!!this.visible());\n this.hover.enabled = this.visible() === null;\n }\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiHintDirective} from './hint.directive';\n\n@Directive({\n selector: '[tuiHintOverflow]',\n hostDirectives: [\n {\n directive: TuiHintDirective,\n inputs: ['tuiHintAppearance'],\n },\n ],\n host: {\n '(mouseenter)': 'onMouseEnter($event.currentTarget)',\n },\n})\nexport class TuiHintOverflow {\n private readonly hint = inject(TuiHintDirective);\n\n public readonly content = input<string | null>('', {alias: 'tuiHintOverflow'});\n\n protected onMouseEnter({scrollWidth, clientWidth, textContent}: Element): void {\n tuiSetSignal(\n this.hint.content,\n scrollWidth > clientWidth && this.content() !== null\n ? this.content() || textContent\n : '',\n );\n }\n}\n","import {TuiHintComponent} from './hint.component';\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintDescribe} from './hint-describe.directive';\nimport {TuiHintDriver} from './hint-driver.directive';\nimport {TuiHintHost} from './hint-host.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TuiHintManual} from './hint-manual.directive';\nimport {TuiHintOptionsDirective} from './hint-options.directive';\nimport {TuiHintOverflow} from './hint-overflow.directive';\nimport {TuiHintPointer} from './hint-pointer.directive';\nimport {TuiHintPosition} from './hint-position.directive';\nimport {TuiHintUnstyled} from './hint-unstyled.component';\n\nexport const TuiHint = [\n TuiHintComponent,\n TuiHintDirective,\n TuiHintOptionsDirective,\n TuiHintUnstyled,\n TuiHintDriver,\n TuiHintPosition,\n TuiHintHover,\n TuiHintOverflow,\n TuiHintDescribe,\n TuiHintHost,\n TuiHintManual,\n TuiHintPointer,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["GAP","i1.TuiHintDriver","i2.TuiHintHover","i3.TuiHintPosition","i1.TuiHintDirective"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, signal, ChangeDetectionStrategy, ViewEncapsulation, Component, Injectable } from '@angular/core';
4
+ import * as i1 from '@taiga-ui/cdk/directives/active-zone';
5
+ import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
6
+ import * as i2 from '@taiga-ui/cdk/directives/focus-trap';
7
+ import { TuiFocusTrap } from '@taiga-ui/cdk/directives/focus-trap';
8
+ import { tuiGetFocused } from '@taiga-ui/cdk/utils/focus';
9
+ import * as i3 from '@taiga-ui/core/components/scrollbar';
10
+ import { TuiScrollControls, TuiScrollRef } from '@taiga-ui/core/components/scrollbar';
11
+ import { injectContext, PolymorpheusOutlet, PolymorpheusComponent } from '@taiga-ui/polymorpheus';
12
+ import { TUI_LEAVE } from '@taiga-ui/cdk/directives/animated';
13
+ import { TuiPortal } from '@taiga-ui/cdk/portals';
14
+ import { TuiPopupService } from '@taiga-ui/core/portals/popup';
15
+
16
+ class TuiModalComponent {
17
+ constructor() {
18
+ this.current = inject(TuiActiveZone);
19
+ this.parent = findActive(inject(TuiActiveZone, { skipSelf: true }), tuiGetFocused(inject(DOCUMENT)));
20
+ this.context = injectContext();
21
+ this.component = signal(null);
22
+ }
23
+ ngOnInit() {
24
+ this.current.tuiActiveZoneParentSetter = this.parent;
25
+ }
26
+ ngOnDestroy() {
27
+ this.current.tuiActiveZoneParentSetter = null;
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiModalComponent, isStandalone: true, selector: "tui-modal", host: { attributes: { "role": "dialog", "aria-modal": "true" }, listeners: { "animationend.self": "$event.target.classList.remove(\"tui-enter\")" }, properties: { "attr.aria-labelledby": "context.id" }, classAttribute: "tui-enter" }, hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiFocusTrap }, { directive: i3.TuiScrollRef }], ngImport: i0, template: `
31
+ <ng-container *polymorpheusOutlet="component(); context: context" />
32
+ <tui-scroll-controls class="t-scrollbars" />
33
+ `, isInline: true, styles: ["@keyframes tui-modal-backdrop{0%{-webkit-backdrop-filter:none;backdrop-filter:none}to{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}}tui-modal{transition-property:backdrop-filter;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;scrollbar-width:none;-ms-overflow-style:none;position:fixed;display:grid;inset:0;grid-template-rows:0;place-items:center;outline:none;overflow:auto;overscroll-behavior:none contain;transition-timing-function:linear;animation-timing-function:cubic-bezier(.14,.52,.35,.84);perspective:10rem;transform:translateY(var(--t-root-top))}tui-modal::-webkit-scrollbar,tui-modal::-webkit-scrollbar-thumb{display:none}@supports not (selector(:has(*))) or not (selector(:nth-child(1 of *))){tui-modal:last-of-type:not(.tui-leave){-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:last-of-type.tui-enter,tui-modal:last-of-type.tui-leave{animation-name:tui-modal-backdrop}}@supports (selector(:has(*))) and (selector(:nth-child(1 of *))){tui-modal:nth-last-child(1 of tui-modal:not(.tui-leave):not(:has(.tui-backdrop-hidden))){-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:nth-last-child(1 of tui-modal:not(:has(.tui-backdrop-hidden))):is(.tui-enter,.tui-leave){animation-name:tui-modal-backdrop}}tui-modal:before{content:\"\";block-size:1px;inline-size:calc(100% + 1px)}tui-modal>.t-scrollbars{position:fixed;inset:0;margin:0;color:#747474}tui-modal>.t-scrollbars .t-bar_horizontal,tui-modal>.t-scrollbars .t-bar_vertical .t-thumb[style*=\"height: 100%\"]{display:none}tui-modal>.tui-enter+.t-scrollbars .t-bar_vertical,tui-modal>.tui-leave+.t-scrollbars .t-bar_vertical{display:none}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiScrollControls, selector: "tui-scroll-controls" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiModalComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'tui-modal', imports: [PolymorpheusOutlet, TuiScrollControls], template: `
38
+ <ng-container *polymorpheusOutlet="component(); context: context" />
39
+ <tui-scroll-controls class="t-scrollbars" />
40
+ `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [TuiActiveZone, TuiFocusTrap, TuiScrollRef], host: {
41
+ role: 'dialog',
42
+ class: 'tui-enter',
43
+ 'aria-modal': 'true',
44
+ '[attr.aria-labelledby]': 'context.id',
45
+ '(animationend.self)': '$event.target.classList.remove("tui-enter")',
46
+ }, styles: ["@keyframes tui-modal-backdrop{0%{-webkit-backdrop-filter:none;backdrop-filter:none}to{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}}tui-modal{transition-property:backdrop-filter;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;scrollbar-width:none;-ms-overflow-style:none;position:fixed;display:grid;inset:0;grid-template-rows:0;place-items:center;outline:none;overflow:auto;overscroll-behavior:none contain;transition-timing-function:linear;animation-timing-function:cubic-bezier(.14,.52,.35,.84);perspective:10rem;transform:translateY(var(--t-root-top))}tui-modal::-webkit-scrollbar,tui-modal::-webkit-scrollbar-thumb{display:none}@supports not (selector(:has(*))) or not (selector(:nth-child(1 of *))){tui-modal:last-of-type:not(.tui-leave){-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:last-of-type.tui-enter,tui-modal:last-of-type.tui-leave{animation-name:tui-modal-backdrop}}@supports (selector(:has(*))) and (selector(:nth-child(1 of *))){tui-modal:nth-last-child(1 of tui-modal:not(.tui-leave):not(:has(.tui-backdrop-hidden))){-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:nth-last-child(1 of tui-modal:not(:has(.tui-backdrop-hidden))):is(.tui-enter,.tui-leave){animation-name:tui-modal-backdrop}}tui-modal:before{content:\"\";block-size:1px;inline-size:calc(100% + 1px)}tui-modal>.t-scrollbars{position:fixed;inset:0;margin:0;color:#747474}tui-modal>.t-scrollbars .t-bar_horizontal,tui-modal>.t-scrollbars .t-bar_vertical .t-thumb[style*=\"height: 100%\"]{display:none}tui-modal>.tui-enter+.t-scrollbars .t-bar_vertical,tui-modal>.tui-leave+.t-scrollbars .t-bar_vertical{display:none}\n"] }]
47
+ }] });
48
+ function findActive(zone, el) {
49
+ if (!el || !zone.contains(el)) {
50
+ return null;
51
+ }
52
+ const active = zone.children.find((child) => !child['el'].matches('[tuiActiveZoneAdapter]') && child.contains(el));
53
+ return active ? findActive(active, el) : zone;
54
+ }
55
+
56
+ class TuiModalService extends TuiPortal {
57
+ constructor() {
58
+ super(inject(TuiPopupService));
59
+ this.component = TuiModalComponent;
60
+ }
61
+ add(component) {
62
+ const ref = this.service.add(component);
63
+ const el = ref.location.nativeElement;
64
+ ref.instance.component.set(new PolymorpheusComponent(this.content));
65
+ return () => {
66
+ ref.instance.component.set(null);
67
+ ref.changeDetectorRef.detectChanges();
68
+ el.classList.add(TUI_LEAVE);
69
+ Promise.allSettled(getAnimations(el))
70
+ .then(async () => Promise.allSettled(getAnimations(el.firstElementChild)))
71
+ .then(() => ref.destroy());
72
+ };
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
75
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiModalService }); }
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiModalService, decorators: [{
78
+ type: Injectable
79
+ }], ctorParameters: () => [] });
80
+ function getAnimations(el) {
81
+ return el?.getAnimations().map(async ({ finished }) => finished) || [];
82
+ }
83
+
84
+ /**
85
+ * Generated bundle index. Do not edit.
86
+ */
87
+
88
+ export { TuiModalComponent, TuiModalService };
89
+ //# sourceMappingURL=taiga-ui-core-portals-modal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-core-portals-modal.mjs","sources":["../../../projects/core/portals/modal/modal.component.ts","../../../projects/core/portals/modal/modal.service.ts","../../../projects/core/portals/modal/taiga-ui-core-portals-modal.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnDestroy,\n type OnInit,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiFocusTrap} from '@taiga-ui/cdk/directives/focus-trap';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {TuiScrollControls, TuiScrollRef} from '@taiga-ui/core/components/scrollbar';\nimport {\n injectContext,\n type PolymorpheusContent,\n PolymorpheusOutlet,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-modal',\n imports: [PolymorpheusOutlet, TuiScrollControls],\n template: `\n <ng-container *polymorpheusOutlet=\"component(); context: context\" />\n <tui-scroll-controls class=\"t-scrollbars\" />\n `,\n styleUrl: './modal.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiActiveZone, TuiFocusTrap, TuiScrollRef],\n host: {\n role: 'dialog',\n class: 'tui-enter',\n 'aria-modal': 'true',\n '[attr.aria-labelledby]': 'context.id',\n '(animationend.self)': '$event.target.classList.remove(\"tui-enter\")',\n },\n})\nexport class TuiModalComponent<T> implements OnDestroy, OnInit {\n private readonly current = inject(TuiActiveZone);\n private readonly parent = findActive(\n inject(TuiActiveZone, {skipSelf: true}),\n tuiGetFocused(inject(DOCUMENT)),\n );\n\n public readonly context = injectContext<TuiPortalContext<T>>();\n public readonly component = signal<PolymorpheusContent<TuiPortalContext<T>>>(null);\n\n public ngOnInit(): void {\n this.current.tuiActiveZoneParentSetter = this.parent;\n }\n\n public ngOnDestroy(): void {\n this.current.tuiActiveZoneParentSetter = null;\n }\n}\n\nfunction findActive(zone: TuiActiveZone, el: Element | null): TuiActiveZone | null {\n if (!el || !zone.contains(el)) {\n return null;\n }\n\n const active = zone.children.find(\n (child) => !child['el'].matches('[tuiActiveZoneAdapter]') && child.contains(el),\n );\n\n return active ? findActive(active, el) : zone;\n}\n","import {inject, Injectable, type Type} from '@angular/core';\nimport {TUI_LEAVE} from '@taiga-ui/cdk/directives/animated';\nimport {TuiPortal} from '@taiga-ui/cdk/portals';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiModalComponent} from './modal.component';\n\n@Injectable()\nexport abstract class TuiModalService<T, K = void> extends TuiPortal<T, K> {\n protected abstract readonly content: Type<unknown>;\n protected readonly component = TuiModalComponent;\n\n constructor() {\n super(inject(TuiPopupService));\n }\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<T>>,\n ): () => void {\n const ref = this.service.add(component);\n const el: HTMLElement = ref.location.nativeElement;\n\n ref.instance.component.set(new PolymorpheusComponent(this.content));\n\n return () => {\n ref.instance.component.set(null);\n ref.changeDetectorRef.detectChanges();\n el.classList.add(TUI_LEAVE);\n\n Promise.allSettled(getAnimations(el))\n .then(async () => Promise.allSettled(getAnimations(el.firstElementChild)))\n .then(() => ref.destroy());\n };\n }\n}\n\nfunction getAnimations(el: Element | null): ReadonlyArray<Promise<unknown>> {\n return el?.getAnimations().map(async ({finished}) => finished) || [];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, TemplateRef, input, Directive, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { TuiPortalService, TuiPortals } from '@taiga-ui/cdk/portals';
4
- import { tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
4
+ import { tuiProvide } from '@taiga-ui/cdk/utils/di';
5
5
 
6
6
  class TuiPopupService extends TuiPortalService {
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPopupService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -53,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
53
53
  */
54
54
 
55
55
  export { TuiPopup, TuiPopupService, TuiPopups };
56
- //# sourceMappingURL=taiga-ui-core-directives-popup.mjs.map
56
+ //# sourceMappingURL=taiga-ui-core-portals-popup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-core-portals-popup.mjs","sources":["../../../projects/core/portals/popup/popup.service.ts","../../../projects/core/portals/popup/popup.directive.ts","../../../projects/core/portals/popup/popups.component.ts","../../../projects/core/portals/popup/taiga-ui-core-portals-popup.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {TuiPortalService} from '@taiga-ui/cdk/portals';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiPopupService extends TuiPortalService {}\n","import {\n Directive,\n type EmbeddedViewRef,\n inject,\n input,\n type OnChanges,\n type OnDestroy,\n TemplateRef,\n} from '@angular/core';\n\nimport {TuiPopupService} from './popup.service';\n\n@Directive({\n selector: 'ng-template[tuiPopup]',\n})\nexport class TuiPopup implements OnChanges, OnDestroy {\n private readonly template = inject(TemplateRef);\n private readonly service = inject(TuiPopupService);\n private ref?: EmbeddedViewRef<unknown>;\n\n public readonly show = input(false, {alias: 'tuiPopup'});\n\n public ngOnChanges(): void {\n this.ref?.destroy();\n\n if (this.show()) {\n this.ref = this.service.add(this.template);\n }\n }\n\n public ngOnDestroy(): void {\n this.ref?.destroy();\n }\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {TuiPortals, TuiPortalService} from '@taiga-ui/cdk/portals';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TuiPopupService} from './popup.service';\n\n@Component({\n selector: 'tui-popups',\n template: '<ng-content/><ng-container #vcr />',\n styleUrl: './popups.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(TuiPortalService, TuiPopupService)],\n})\nexport class TuiPopups extends TuiPortals {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAMM,MAAO,eAAgB,SAAQ,gBAAgB,CAAA;+GAAxC,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFZ,MAAM,EAAA,CAAA,CAAA;;4FAET,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCUY,QAAQ,CAAA;AAHrB,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;QAGlC,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,UAAU,EAAC,CAAC;AAa3D;IAXU,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACb,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;;;IAI3C,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;;+GAhBd,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACpC,iBAAA;;;ACDK,MAAO,SAAU,SAAQ,UAAU,CAAA;+GAA5B,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAFP,CAAC,UAAU,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHhD,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iZAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKrC,SAAS,EAAA,UAAA,EAAA,CAAA;kBAPrB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACZ,QAAA,EAAA,oCAAoC,EAE7B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,UAAU,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,EAAA,MAAA,EAAA,CAAA,iZAAA,CAAA,EAAA;;;ACX9D;;AAEG;;;;"}
@@ -0,0 +1,11 @@
1
+ export * from '@taiga-ui/core/portals/alert';
2
+ export * from '@taiga-ui/core/portals/dialog';
3
+ export * from '@taiga-ui/core/portals/dropdown';
4
+ export * from '@taiga-ui/core/portals/hint';
5
+ export * from '@taiga-ui/core/portals/modal';
6
+ export * from '@taiga-ui/core/portals/popup';
7
+
8
+ /**
9
+ * Generated bundle index. Do not edit.
10
+ */
11
+ //# sourceMappingURL=taiga-ui-core-portals.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-core-portals.mjs","sources":["../../../projects/core/portals/taiga-ui-core-portals.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;;AAEG"}