@taiga-ui/core 4.52.0-canary.6ee9658 → 4.52.0-canary.763e67d

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 (255) hide show
  1. package/classes/accessors.d.ts +1 -1
  2. package/components/calendar/calendar-sheet.component.d.ts +1 -1
  3. package/{pipes/calendar-sheet → components/calendar}/calendar-sheet.pipe.d.ts +2 -2
  4. package/components/calendar/calendar-spin.component.d.ts +1 -0
  5. package/components/calendar/calendar-year.component.d.ts +1 -1
  6. package/components/calendar/calendar.options.d.ts +9 -0
  7. package/components/calendar/index.d.ts +3 -0
  8. package/{pipes/order-week-days → components/calendar}/order-week-days.pipe.d.ts +1 -1
  9. package/components/data-list/data-list.component.d.ts +2 -4
  10. package/components/data-list/data-list.d.ts +3 -4
  11. package/components/data-list/data-list.tokens.d.ts +1 -23
  12. package/components/data-list/index.d.ts +3 -4
  13. package/components/data-list/option-content.directive.d.ts +14 -0
  14. package/components/data-list/option-with-value.directive.d.ts +9 -0
  15. package/components/data-list/option.directive.d.ts +19 -0
  16. package/components/icon/icon.component.d.ts +2 -2
  17. package/components/index.d.ts +2 -2
  18. package/components/input/index.d.ts +2 -0
  19. package/components/input/input.d.ts +5 -0
  20. package/components/{textfield/textfield.directive.d.ts → input/input.directive.d.ts} +7 -8
  21. package/components/label/label.directive.d.ts +1 -1
  22. package/components/link/index.d.ts +0 -1
  23. package/components/link/link.directive.d.ts +8 -6
  24. package/components/notification/notification.component.d.ts +1 -1
  25. package/components/notification/notification.options.d.ts +1 -1
  26. package/components/notification/notification.service.d.ts +1 -1
  27. package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
  28. package/components/scrollbar/scrollbar.component.d.ts +1 -5
  29. package/components/spin-button/spin-button.component.d.ts +1 -1
  30. package/components/textfield/index.d.ts +0 -1
  31. package/components/textfield/textfield-multi/textfield-multi.component.d.ts +2 -2
  32. package/components/textfield/textfield.component.d.ts +3 -4
  33. package/components/textfield/textfield.d.ts +2 -3
  34. package/directives/group/group.directive.d.ts +7 -7
  35. package/directives/index.d.ts +0 -5
  36. package/directives/items-handlers/items-handlers.directive.d.ts +5 -9
  37. package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
  38. package/fesm2022/taiga-ui-core-classes.mjs +7 -9
  39. package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-core-components-button.mjs +7 -7
  41. package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-core-components-calendar.mjs +135 -26
  43. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-core-components-cell.mjs +7 -7
  45. package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-core-components-data-list.mjs +94 -230
  47. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-core-components-error.mjs +9 -9
  49. package/fesm2022/taiga-ui-core-components-expand.mjs +3 -3
  50. package/fesm2022/taiga-ui-core-components-icon.mjs +8 -8
  51. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-core-components-input.mjs +104 -0
  53. package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -0
  54. package/fesm2022/taiga-ui-core-components-label.mjs +10 -12
  55. package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-core-components-link.mjs +13 -24
  57. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-core-components-loader.mjs +3 -3
  59. package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-core-components-notification.mjs +22 -24
  61. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-core-components-root.mjs +5 -5
  63. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +42 -47
  65. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-core-components-spin-button.mjs +5 -5
  67. package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-core-components-textfield.mjs +50 -132
  69. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  70. package/fesm2022/{taiga-ui-core-directives-title.mjs → taiga-ui-core-components-title.mjs} +7 -7
  71. package/fesm2022/{taiga-ui-core-directives-title.mjs.map → taiga-ui-core-components-title.mjs.map} +1 -1
  72. package/fesm2022/taiga-ui-core-components.mjs +2 -2
  73. package/fesm2022/taiga-ui-core-directives-appearance.mjs +10 -10
  74. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  75. package/fesm2022/taiga-ui-core-directives-date-format.mjs +3 -3
  76. package/fesm2022/taiga-ui-core-directives-group.mjs +20 -28
  77. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-core-directives-icons.mjs +9 -9
  79. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +15 -36
  80. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
  81. package/fesm2022/taiga-ui-core-directives-number-format.mjs +3 -3
  82. package/fesm2022/taiga-ui-core-directives.mjs +0 -5
  83. package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-core-pipes-format-number.mjs +5 -8
  85. package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-core-pipes.mjs +0 -7
  87. package/fesm2022/taiga-ui-core-pipes.mjs.map +1 -1
  88. package/fesm2022/{taiga-ui-core-directives-alert.mjs → taiga-ui-core-portals-alert.mjs} +12 -12
  89. package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -0
  90. package/fesm2022/{taiga-ui-core-components-dialog.mjs → taiga-ui-core-portals-dialog.mjs} +16 -16
  91. package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -0
  92. package/fesm2022/{taiga-ui-core-directives-dropdown.mjs → taiga-ui-core-portals-dropdown.mjs} +149 -237
  93. package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
  94. package/fesm2022/{taiga-ui-core-directives-hint.mjs → taiga-ui-core-portals-hint.mjs} +57 -57
  95. package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -0
  96. package/fesm2022/{taiga-ui-core-components-modal.mjs → taiga-ui-core-portals-modal.mjs} +10 -10
  97. package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -0
  98. package/fesm2022/{taiga-ui-core-directives-popup.mjs → taiga-ui-core-portals-popup.mjs} +10 -10
  99. package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -0
  100. package/fesm2022/taiga-ui-core-portals.mjs +11 -0
  101. package/fesm2022/taiga-ui-core-portals.mjs.map +1 -0
  102. package/fesm2022/taiga-ui-core-services.mjs +16 -55
  103. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-core-tokens.mjs +5 -33
  105. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  106. package/fesm2022/taiga-ui-core-utils-format.mjs +1 -23
  107. package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
  108. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +19 -19
  109. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-core.mjs +1 -1
  111. package/index.d.ts +1 -1
  112. package/package.json +37 -62
  113. package/pipes/format-number/format-number.pipe.d.ts +1 -1
  114. package/pipes/index.d.ts +0 -7
  115. package/{components → portals}/dialog/dialog.service.d.ts +1 -1
  116. package/{directives → portals}/dropdown/dropdown-hover.directive.d.ts +5 -10
  117. package/{directives → portals}/dropdown/dropdown-manual.directive.d.ts +2 -2
  118. package/portals/dropdown/dropdown-open.directive.d.ts +30 -0
  119. package/{directives → portals}/dropdown/dropdown-position-sided.directive.d.ts +3 -3
  120. package/{directives → portals}/dropdown/dropdown-position.directive.d.ts +4 -4
  121. package/{directives → portals}/dropdown/dropdown-selection.directive.d.ts +4 -5
  122. package/{directives → portals}/dropdown/dropdown.bindings.d.ts +0 -1
  123. package/{directives → portals}/dropdown/dropdown.d.ts +1 -2
  124. package/{directives → portals}/dropdown/dropdown.directive.d.ts +5 -6
  125. package/{directives → portals}/dropdown/index.d.ts +0 -1
  126. package/{directives → portals}/hint/hint-position.directive.d.ts +3 -3
  127. package/{directives → portals}/hint/hint.directive.d.ts +1 -1
  128. package/portals/index.d.ts +6 -0
  129. package/services/index.d.ts +0 -2
  130. package/styles/components/appearance.less +5 -0
  131. package/styles/components/button.less +1 -1
  132. package/styles/components/link.less +8 -23
  133. package/styles/components/notification.less +4 -4
  134. package/styles/components/textfield.less +32 -65
  135. package/styles/mixins/appearance.less +9 -25
  136. package/styles/mixins/appearance.scss +8 -24
  137. package/styles/mixins/slider.scss +1 -2
  138. package/styles/taiga-ui-local.less +0 -1
  139. package/styles/taiga-ui-local.scss +0 -1
  140. package/styles/taiga-ui-theme.less +0 -1
  141. package/styles/theme/appearance/outline.less +9 -18
  142. package/styles/theme/appearance/primary.less +2 -4
  143. package/styles/theme/appearance/secondary.less +6 -14
  144. package/styles/theme/appearance/status.less +0 -4
  145. package/styles/theme/appearance/table.less +38 -31
  146. package/styles/theme/appearance.less +0 -1
  147. package/styles/theme/variables.less +15 -15
  148. package/tokens/common-icons.d.ts +2 -0
  149. package/tokens/icons.d.ts +0 -4
  150. package/tokens/index.d.ts +0 -4
  151. package/types/index.d.ts +0 -2
  152. package/types/point.d.ts +1 -1
  153. package/types/size.d.ts +0 -11
  154. package/utils/format/index.d.ts +0 -1
  155. package/utils/miscellaneous/font-scaling.d.ts +2 -1
  156. package/utils/miscellaneous/get-duration.d.ts +2 -0
  157. package/utils/miscellaneous/index.d.ts +1 -1
  158. package/animations/animations.d.ts +0 -109
  159. package/animations/index.d.ts +0 -1
  160. package/components/data-list/data-list.directive.d.ts +0 -7
  161. package/components/data-list/option/option-content.d.ts +0 -16
  162. package/components/data-list/option/option-legacy.component.d.ts +0 -24
  163. package/components/data-list/option/option.directive.d.ts +0 -26
  164. package/components/link/link.options.d.ts +0 -10
  165. package/directives/dropdown/dropdown-open-legacy.directive.d.ts +0 -12
  166. package/directives/dropdown/dropdown-open.directive.d.ts +0 -33
  167. package/fesm2022/taiga-ui-core-animations.mjs +0 -370
  168. package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
  169. package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
  170. package/fesm2022/taiga-ui-core-components-modal.mjs.map +0 -1
  171. package/fesm2022/taiga-ui-core-directives-alert.mjs.map +0 -1
  172. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +0 -1
  173. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +0 -1
  174. package/fesm2022/taiga-ui-core-directives-popup.mjs.map +0 -1
  175. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs +0 -24
  176. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs.map +0 -1
  177. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs +0 -93
  178. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs.map +0 -1
  179. package/fesm2022/taiga-ui-core-pipes-flag.mjs +0 -31
  180. package/fesm2022/taiga-ui-core-pipes-flag.mjs.map +0 -1
  181. package/fesm2022/taiga-ui-core-pipes-format-date.mjs +0 -27
  182. package/fesm2022/taiga-ui-core-pipes-format-date.mjs.map +0 -1
  183. package/fesm2022/taiga-ui-core-pipes-initials.mjs +0 -28
  184. package/fesm2022/taiga-ui-core-pipes-initials.mjs.map +0 -1
  185. package/fesm2022/taiga-ui-core-pipes-month.mjs +0 -29
  186. package/fesm2022/taiga-ui-core-pipes-month.mjs.map +0 -1
  187. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs +0 -35
  188. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs.map +0 -1
  189. package/pipes/auto-color/auto-color.pipe.d.ts +0 -7
  190. package/pipes/auto-color/index.d.ts +0 -1
  191. package/pipes/calendar-sheet/index.d.ts +0 -1
  192. package/pipes/calendar-sheet/utils.d.ts +0 -20
  193. package/pipes/flag/flag.pipe.d.ts +0 -14
  194. package/pipes/flag/index.d.ts +0 -1
  195. package/pipes/format-date/format-date.pipe.d.ts +0 -9
  196. package/pipes/format-date/index.d.ts +0 -1
  197. package/pipes/initials/index.d.ts +0 -1
  198. package/pipes/initials/initials.pipe.d.ts +0 -7
  199. package/pipes/month/index.d.ts +0 -1
  200. package/pipes/month/month.pipe.d.ts +0 -10
  201. package/pipes/order-week-days/index.d.ts +0 -1
  202. package/services/dark-theme.service.d.ts +0 -10
  203. package/services/format-date.service.d.ts +0 -8
  204. package/styles/mixins/wrapper.less +0 -64
  205. package/styles/mixins/wrapper.scss +0 -61
  206. package/styles/theme/appearance/opposite.less +0 -17
  207. package/styles/theme/wrapper.less +0 -211
  208. package/tokens/day-type-handler.d.ts +0 -7
  209. package/tokens/first-day-of-week.d.ts +0 -5
  210. package/tokens/scroll-ref.d.ts +0 -2
  211. package/tokens/spin-icons.d.ts +0 -6
  212. package/types/range-state.d.ts +0 -4
  213. package/types/value-content-context.d.ts +0 -4
  214. package/utils/format/string-hash-to-hsl.d.ts +0 -6
  215. package/utils/miscellaneous/to-animation-options.d.ts +0 -4
  216. /package/{directives → components}/title/index.d.ts +0 -0
  217. /package/{directives → components}/title/title.directive.d.ts +0 -0
  218. /package/{directives → portals}/alert/alert.directive.d.ts +0 -0
  219. /package/{directives → portals}/alert/alert.service.d.ts +0 -0
  220. /package/{directives → portals}/alert/index.d.ts +0 -0
  221. /package/{components → portals}/dialog/dialog.component.d.ts +0 -0
  222. /package/{components → portals}/dialog/dialog.directive.d.ts +0 -0
  223. /package/{components → portals}/dialog/dialog.factory.d.ts +0 -0
  224. /package/{components → portals}/dialog/dialog.options.d.ts +0 -0
  225. /package/{components → portals}/dialog/dialog.providers.d.ts +0 -0
  226. /package/{components → portals}/dialog/index.d.ts +0 -0
  227. /package/{directives → portals}/dropdown/dropdown-content.directive.d.ts +0 -0
  228. /package/{directives → portals}/dropdown/dropdown-context.directive.d.ts +0 -0
  229. /package/{directives → portals}/dropdown/dropdown-hover.options.d.ts +0 -0
  230. /package/{directives → portals}/dropdown/dropdown-limit-width.d.ts +0 -0
  231. /package/{directives → portals}/dropdown/dropdown-options.directive.d.ts +0 -0
  232. /package/{directives → portals}/dropdown/dropdown.component.d.ts +0 -0
  233. /package/{directives → portals}/dropdown/dropdown.driver.d.ts +0 -0
  234. /package/{directives → portals}/dropdown/dropdown.providers.d.ts +0 -0
  235. /package/{directives → portals}/dropdown/with-dropdown-open.directive.d.ts +0 -0
  236. /package/{directives → portals}/hint/hint-describe.directive.d.ts +0 -0
  237. /package/{directives → portals}/hint/hint-driver.directive.d.ts +0 -0
  238. /package/{directives → portals}/hint/hint-host.directive.d.ts +0 -0
  239. /package/{directives → portals}/hint/hint-hover.directive.d.ts +0 -0
  240. /package/{directives → portals}/hint/hint-manual.directive.d.ts +0 -0
  241. /package/{directives → portals}/hint/hint-options.directive.d.ts +0 -0
  242. /package/{directives → portals}/hint/hint-overflow.directive.d.ts +0 -0
  243. /package/{directives → portals}/hint/hint-pointer.directive.d.ts +0 -0
  244. /package/{directives → portals}/hint/hint-unstyled.component.d.ts +0 -0
  245. /package/{directives → portals}/hint/hint.component.d.ts +0 -0
  246. /package/{directives → portals}/hint/hint.d.ts +0 -0
  247. /package/{directives → portals}/hint/hint.providers.d.ts +0 -0
  248. /package/{directives → portals}/hint/index.d.ts +0 -0
  249. /package/{components → portals}/modal/index.d.ts +0 -0
  250. /package/{components → portals}/modal/modal.component.d.ts +0 -0
  251. /package/{components → portals}/modal/modal.service.d.ts +0 -0
  252. /package/{directives → portals}/popup/index.d.ts +0 -0
  253. /package/{directives → portals}/popup/popup.directive.d.ts +0 -0
  254. /package/{directives → portals}/popup/popup.service.d.ts +0 -0
  255. /package/{directives → portals}/popup/popups.component.d.ts +0 -0
@@ -0,0 +1,30 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@taiga-ui/cdk/directives/obscured";
3
+ import * as i2 from "@taiga-ui/cdk/directives/active-zone";
4
+ export declare class TuiDropdownOpen {
5
+ private readonly dropdownHost;
6
+ private readonly directive;
7
+ private readonly el;
8
+ private readonly obscured;
9
+ private readonly activeZone;
10
+ private readonly driver;
11
+ private readonly dropdown;
12
+ readonly enabled: import("@angular/core").InputSignal<boolean>;
13
+ readonly open: import("@angular/core").ModelSignal<boolean>;
14
+ protected readonly driveEffect: import("@angular/core").EffectRef;
15
+ protected readonly syncSub: import("rxjs").Subscription;
16
+ protected readonly closeSub: import("rxjs").Subscription;
17
+ toggle(open: boolean): void;
18
+ protected onEsc(event: KeyboardEvent): void;
19
+ protected onClick(target: HTMLElement): void;
20
+ protected onArrow(event: KeyboardEvent, up: boolean): void;
21
+ protected onKeydown(event: KeyboardEvent): void;
22
+ private get host();
23
+ private get editable();
24
+ private get focused();
25
+ private update;
26
+ private drive;
27
+ private focusDropdown;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiDropdownOpen, never>;
29
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownOpen, "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", never, { "enabled": { "alias": "tuiDropdownEnabled"; "required": false; "isSignal": true; }; "open": { "alias": "tuiDropdownOpen"; "required": false; "isSignal": true; }; }, { "open": "tuiDropdownOpenChange"; }, ["dropdownHost"], never, true, [{ directive: typeof i1.TuiObscured; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiActiveZone; inputs: { "tuiActiveZoneParent": "tuiActiveZoneParent"; }; outputs: { "tuiActiveZoneChange": "tuiActiveZoneChange"; }; }]>;
30
+ }
@@ -6,10 +6,10 @@ export declare class TuiDropdownPositionSided extends TuiPositionAccessor {
6
6
  private readonly viewport;
7
7
  private readonly vertical;
8
8
  private previous;
9
- tuiDropdownSided: boolean | string;
10
- tuiDropdownSidedOffset: number;
9
+ readonly tuiDropdownSided: import("@angular/core").InputSignal<string | boolean>;
10
+ readonly tuiDropdownSidedOffset: import("@angular/core").InputSignal<number>;
11
11
  readonly type = "dropdown";
12
12
  getPosition(rect: DOMRect): TuiPoint;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDropdownPositionSided, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownPositionSided, "[tuiDropdownSided]", never, { "tuiDropdownSided": { "alias": "tuiDropdownSided"; "required": false; }; "tuiDropdownSidedOffset": { "alias": "tuiDropdownSidedOffset"; "required": false; }; }, {}, never, never, true, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownPositionSided, "[tuiDropdownSided]", never, { "tuiDropdownSided": { "alias": "tuiDropdownSided"; "required": false; "isSignal": true; }; "tuiDropdownSidedOffset": { "alias": "tuiDropdownSidedOffset"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
15
  }
@@ -1,6 +1,6 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { TuiPositionAccessor, TuiRectAccessor } from '@taiga-ui/core/classes';
3
2
  import { type TuiPoint, type TuiVerticalDirection } from '@taiga-ui/core/types';
3
+ import { Subject } from 'rxjs';
4
4
  import { type TuiDropdownAlign } from './dropdown-options.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class TuiDropdownPosition extends TuiPositionAccessor {
@@ -8,12 +8,12 @@ export declare class TuiDropdownPosition extends TuiPositionAccessor {
8
8
  private readonly options;
9
9
  private readonly viewport;
10
10
  private previous?;
11
- readonly directionChange: EventEmitter<TuiVerticalDirection>;
11
+ readonly direction: Subject<TuiVerticalDirection>;
12
12
  readonly type = "dropdown";
13
13
  readonly accessor: TuiRectAccessor;
14
- emitDirection(direction: TuiVerticalDirection): void;
14
+ readonly tuiDropdownDirectionChange: import("@angular/core").OutputRef<TuiVerticalDirection>;
15
15
  getPosition({ width, height }: DOMRect): TuiPoint;
16
16
  getAlign(align: TuiDropdownAlign): TuiDropdownAlign;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDropdownPosition, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownPosition, never, never, {}, { "directionChange": "tuiDropdownDirectionChange"; }, never, never, true, never>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownPosition, never, never, {}, { "tuiDropdownDirectionChange": "tuiDropdownDirectionChange"; }, never, never, true, never>;
19
19
  }
@@ -1,7 +1,6 @@
1
1
  import { type OnDestroy, ViewContainerRef } from '@angular/core';
2
2
  import { type TuiBooleanHandler } from '@taiga-ui/cdk/types';
3
3
  import { TuiDriver, type TuiRectAccessor } from '@taiga-ui/core/classes';
4
- import { BehaviorSubject } from 'rxjs';
5
4
  import { TuiDropdownDirective } from './dropdown.directive';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class TuiDropdownSelection extends TuiDriver implements TuiRectAccessor, OnDestroy {
@@ -10,13 +9,13 @@ export declare class TuiDropdownSelection extends TuiDriver implements TuiRectAc
10
9
  protected readonly vcr: ViewContainerRef;
11
10
  protected readonly dropdown: TuiDropdownDirective;
12
11
  protected readonly el: HTMLElement;
13
- protected readonly handler$: BehaviorSubject<TuiBooleanHandler<Range>>;
12
+ protected readonly handler: import("@angular/core").Signal<TuiBooleanHandler<Range>>;
14
13
  protected readonly stream$: import("rxjs").Observable<boolean>;
15
14
  protected range: Range;
16
- position: 'selection' | 'tag' | 'word';
17
15
  readonly type = "dropdown";
16
+ readonly tuiDropdownSelection: import("@angular/core").InputSignal<string | TuiBooleanHandler<Range>>;
17
+ readonly tuiDropdownSelectionPosition: import("@angular/core").InputSignal<"selection" | "tag" | "word">;
18
18
  constructor();
19
- set tuiDropdownSelection(visible: TuiBooleanHandler<Range> | string);
20
19
  getClientRect(): DOMRect;
21
20
  ngOnDestroy(): void;
22
21
  private get ghostHost();
@@ -39,5 +38,5 @@ export declare class TuiDropdownSelection extends TuiDriver implements TuiRectAc
39
38
  */
40
39
  private initGhost;
41
40
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDropdownSelection, never>;
42
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownSelection, "[tuiDropdownSelection]", never, { "position": { "alias": "tuiDropdownSelectionPosition"; "required": false; }; "tuiDropdownSelection": { "alias": "tuiDropdownSelection"; "required": false; }; }, {}, never, never, true, never>;
41
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownSelection, "[tuiDropdownSelection]", never, { "tuiDropdownSelection": { "alias": "tuiDropdownSelection"; "required": false; "isSignal": true; }; "tuiDropdownSelectionPosition": { "alias": "tuiDropdownSelectionPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
43
42
  }
@@ -5,5 +5,4 @@ export declare function tuiDropdown(value: C | WritableSignal<C>): WritableSigna
5
5
  export declare function tuiDropdown(value: Signal<C>): Signal<C>;
6
6
  export declare function tuiDropdownEnabled(value: WritableSignal<boolean> | boolean): WritableSignal<boolean>;
7
7
  export declare function tuiDropdownEnabled(value: Signal<boolean>): Signal<boolean>;
8
- export declare function tuiDropdownOpen(): WritableSignal<boolean>;
9
8
  export {};
@@ -6,9 +6,8 @@ import { TuiDropdownContext } from './dropdown-context.directive';
6
6
  import { TuiDropdownHover } from './dropdown-hover.directive';
7
7
  import { TuiDropdownManual } from './dropdown-manual.directive';
8
8
  import { TuiDropdownOpen } from './dropdown-open.directive';
9
- import { TuiDropdownOpenLegacy } from './dropdown-open-legacy.directive';
10
9
  import { TuiDropdownOptionsDirective } from './dropdown-options.directive';
11
10
  import { TuiDropdownPosition } from './dropdown-position.directive';
12
11
  import { TuiDropdownPositionSided } from './dropdown-position-sided.directive';
13
12
  import { TuiDropdownSelection } from './dropdown-selection.directive';
14
- export declare const TuiDropdown: readonly [typeof TuiDropdownOptionsDirective, typeof TuiDropdownDriverDirective, typeof TuiDropdownDirective, typeof TuiDropdownComponent, typeof TuiDropdownOpen, typeof TuiDropdownOpenLegacy, typeof TuiDropdownManual, typeof TuiDropdownHover, typeof TuiDropdownContent, typeof TuiDropdownContext, typeof TuiDropdownPosition, typeof TuiDropdownPositionSided, typeof TuiDropdownSelection];
13
+ export declare const TuiDropdown: readonly [typeof TuiDropdownOptionsDirective, typeof TuiDropdownDriverDirective, typeof TuiDropdownDirective, typeof TuiDropdownComponent, typeof TuiDropdownOpen, typeof TuiDropdownManual, typeof TuiDropdownHover, typeof TuiDropdownContent, typeof TuiDropdownContext, typeof TuiDropdownPosition, typeof TuiDropdownPositionSided, typeof TuiDropdownSelection];
@@ -11,19 +11,18 @@ export declare class TuiDropdownDirective implements AfterViewChecked, OnDestroy
11
11
  private readonly cdr;
12
12
  private readonly drivers;
13
13
  protected readonly sub: import("rxjs").Subscription;
14
+ protected readonly autoClose: import("@angular/core").EffectRef;
15
+ readonly ref: import("@angular/core").WritableSignal<ComponentRef<unknown> | null>;
14
16
  readonly el: HTMLElement;
15
17
  readonly type = "dropdown";
16
18
  readonly component: PolymorpheusComponent<any>;
17
- ref: import("@angular/core").WritableSignal<ComponentRef<unknown> | null>;
18
- readonly _content: import("@angular/core").WritableSignal<PolymorpheusContent<TuiContext<() => void>>>;
19
- set tuiDropdown(content: PolymorpheusContent<TuiContext<() => void>>);
19
+ readonly tuiDropdown: import("@angular/core").InputSignal<PolymorpheusContent<TuiContext<() => void>>>;
20
+ readonly content: import("@angular/core").Signal<PolymorpheusContent<TuiContext<() => void>>>;
20
21
  get position(): 'absolute' | 'fixed';
21
- get content(): PolymorpheusContent<TuiContext<() => void>>;
22
- set content(x: PolymorpheusContent<TuiContext<() => void>>);
23
22
  ngAfterViewChecked(): void;
24
23
  ngOnDestroy(): void;
25
24
  getClientRect(): DOMRect;
26
25
  toggle(show: boolean): void;
27
26
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDropdownDirective, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownDirective, "[tuiDropdown]:not(ng-container):not(ng-template)", ["tuiDropdown"], { "tuiDropdown": { "alias": "tuiDropdown"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiDropdownDriverDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownPosition; inputs: {}; outputs: { "tuiDropdownDirectionChange": "tuiDropdownDirectionChange"; }; }]>;
27
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownDirective, "[tuiDropdown]:not(ng-container):not(ng-template)", ["tuiDropdown"], { "tuiDropdown": { "alias": "tuiDropdown"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiDropdownDriverDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownPosition; inputs: {}; outputs: { "tuiDropdownDirectionChange": "tuiDropdownDirectionChange"; }; }]>;
29
28
  }
@@ -11,7 +11,6 @@ export * from './dropdown-hover.options';
11
11
  export * from './dropdown-limit-width';
12
12
  export * from './dropdown-manual.directive';
13
13
  export * from './dropdown-open.directive';
14
- export * from './dropdown-open-legacy.directive';
15
14
  export * from './dropdown-options.directive';
16
15
  export * from './dropdown-position.directive';
17
16
  export * from './dropdown-position-sided.directive';
@@ -4,17 +4,17 @@ import { type TuiHintDirection } from './hint-options.directive';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TuiHintPosition extends TuiPositionAccessor {
6
6
  private readonly el;
7
- private readonly offset;
8
7
  private readonly viewport;
9
8
  private readonly accessor;
10
9
  private readonly points;
11
10
  readonly direction: import("@angular/core").InputSignal<TuiHintDirection | TuiHintDirection[]>;
11
+ readonly offset: import("@angular/core").InputSignal<number>;
12
12
  readonly directionChange: import("@angular/core").OutputEmitterRef<TuiHintDirection>;
13
13
  readonly type = "hint";
14
14
  emitDirection(direction: TuiHintDirection): void;
15
- getPosition(rect: DOMRect, el?: HTMLElement): TuiPoint;
15
+ getPosition({ width, height }: DOMRect): TuiPoint;
16
16
  private get fallback();
17
17
  private checkPosition;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiHintPosition, never>;
19
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintPosition, never, never, { "direction": { "alias": "tuiHintDirection"; "required": false; "isSignal": true; }; }, { "directionChange": "tuiHintDirectionChange"; }, never, never, true, never>;
19
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintPosition, never, never, { "direction": { "alias": "tuiHintDirection"; "required": false; "isSignal": true; }; "offset": { "alias": "tuiHintOffset"; "required": false; "isSignal": true; }; }, { "directionChange": "tuiHintDirectionChange"; }, never, never, true, never>;
20
20
  }
@@ -20,5 +20,5 @@ export declare class TuiHintDirective<C> implements OnDestroy, OnChanges, TuiRec
20
20
  getClientRect(): DOMRect;
21
21
  toggle(show: boolean): void;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiHintDirective<any>, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintDirective<any>, "[tuiHint]:not(ng-container):not(ng-template)", never, { "content": { "alias": "tuiHint"; "required": false; "isSignal": true; }; "context": { "alias": "tuiHintContext"; "required": false; "isSignal": true; }; "appearance": { "alias": "tuiHintAppearance"; "required": false; "isSignal": true; }; }, { "visible": "tuiHintVisible"; }, never, never, true, [{ directive: typeof i1.TuiHintDriver; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiHintHover; inputs: { "tuiHintHideDelay": "tuiHintHideDelay"; "tuiHintShowDelay": "tuiHintShowDelay"; }; outputs: {}; }, { directive: typeof i3.TuiHintPosition; inputs: { "tuiHintDirection": "tuiHintDirection"; }; outputs: { "tuiHintDirectionChange": "tuiHintDirectionChange"; }; }]>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintDirective<any>, "[tuiHint]:not(ng-container):not(ng-template)", never, { "content": { "alias": "tuiHint"; "required": false; "isSignal": true; }; "context": { "alias": "tuiHintContext"; "required": false; "isSignal": true; }; "appearance": { "alias": "tuiHintAppearance"; "required": false; "isSignal": true; }; }, { "visible": "tuiHintVisible"; }, never, never, true, [{ directive: typeof i1.TuiHintDriver; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiHintHover; inputs: { "tuiHintHideDelay": "tuiHintHideDelay"; "tuiHintShowDelay": "tuiHintShowDelay"; }; outputs: {}; }, { directive: typeof i3.TuiHintPosition; inputs: { "tuiHintDirection": "tuiHintDirection"; "tuiHintOffset": "tuiHintOffset"; }; outputs: { "tuiHintDirectionChange": "tuiHintDirectionChange"; }; }]>;
24
24
  }
@@ -0,0 +1,6 @@
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';
@@ -1,5 +1,3 @@
1
1
  export * from './breakpoint.service';
2
- export * from './dark-theme.service';
3
- export * from './format-date.service';
4
2
  export * from './position.service';
5
3
  export * from './visual-viewport.service';
@@ -41,5 +41,10 @@
41
41
  .appearance-disabled({
42
42
  cursor: initial;
43
43
  opacity: var(--tui-disabled-opacity);
44
+
45
+ &::before,
46
+ &::after {
47
+ cursor: initial;
48
+ }
44
49
  });
45
50
  }
@@ -138,7 +138,7 @@
138
138
  margin: 0;
139
139
  }
140
140
 
141
- &&[style*='--t-icon-start:']::after {
141
+ &&[data-icon-start]::after {
142
142
  display: none;
143
143
  }
144
144
  }
@@ -21,19 +21,15 @@
21
21
  border: none;
22
22
  cursor: pointer;
23
23
  font: inherit;
24
- color: var(--tui-text-primary);
24
+ color: inherit;
25
+ border-radius: 0.125rem;
26
+ outline-width: 1px;
27
+ outline-offset: -1px;
25
28
  text-decoration: none dashed currentColor;
26
29
  text-underline-offset: 0.2em;
27
- text-decoration-thickness: 0.7px;
30
+ text-decoration-thickness: 1px;
28
31
  text-decoration-color: color-mix(in lch, currentColor, transparent);
29
32
 
30
- // TODO: Remove in v5
31
- @media @tui-mouse {
32
- &:hover {
33
- --tui-text-secondary: var(--tui-text-primary);
34
- }
35
- }
36
-
37
33
  &::before {
38
34
  margin-inline-end: 0.25rem;
39
35
  }
@@ -58,12 +54,6 @@
58
54
  display: inline-block;
59
55
  }
60
56
 
61
- .appearance-focus({
62
- outline: none;
63
- background: var(--tui-service-selection-background);
64
- background: color-mix(in lch, currentColor 12%, transparent);
65
- });
66
-
67
57
  .appearance-hover({
68
58
  text-decoration-color: currentColor;
69
59
  });
@@ -72,13 +62,8 @@
72
62
  text-decoration-color: currentColor;
73
63
  });
74
64
 
75
- @media @tui-mouse {
76
- &[data-appearance='']:hover {
77
- opacity: 0.7;
78
- }
79
- }
80
-
81
- &[data-appearance='']:active {
82
- opacity: 0.7;
65
+ &[data-appearance=''] {
66
+ text-decoration-line: underline;
67
+ text-decoration-style: solid;
83
68
  }
84
69
  }
@@ -42,11 +42,11 @@ tui-notification,
42
42
  --t-start: 0;
43
43
  --t-end: 0;
44
44
 
45
- &[style*='--t-icon-start:'] {
45
+ &[data-icon-start] {
46
46
  --t-start: 2rem;
47
47
  }
48
48
 
49
- &[style*='--t-icon-end:'] {
49
+ &[data-icon-end] {
50
50
  --t-end: 1.5rem;
51
51
  }
52
52
 
@@ -78,7 +78,7 @@ tui-notification,
78
78
  line-height: 1.25rem;
79
79
  border-radius: var(--tui-radius-m);
80
80
 
81
- &[style*='--t-icon-start:'] {
81
+ &[data-icon-start] {
82
82
  --t-start: 1.5rem;
83
83
  }
84
84
 
@@ -133,7 +133,7 @@ tui-notification,
133
133
  line-height: 1.25rem;
134
134
  border-radius: var(--tui-radius-m);
135
135
 
136
- &[style*='--t-icon-start:'] {
136
+ &[data-icon-start] {
137
137
  --t-start: 1.625rem;
138
138
  }
139
139
 
@@ -6,8 +6,8 @@ tui-textfield {
6
6
 
7
7
  --t-height: var(--tui-height-l);
8
8
  --t-padding: var(--tui-padding-l);
9
- --t-label: -0.7em;
10
- --t-label-size: 0.83em;
9
+ --t-label-y: -0.75rem;
10
+ --t-label-font: var(--tui-font-text-s);
11
11
  --t-end: ~'0rem';
12
12
  --t-start: ~'0rem';
13
13
 
@@ -30,11 +30,11 @@ tui-textfield {
30
30
  color: var(--tui-text-tertiary);
31
31
  }
32
32
 
33
- &[style*='--t-icon-start:'] {
33
+ &[data-icon-start] {
34
34
  --t-start: 2.25rem;
35
35
  }
36
36
 
37
- &[style*='--t-icon-end:'] {
37
+ &[data-icon-end] {
38
38
  --t-end: 2.25rem;
39
39
  }
40
40
 
@@ -42,8 +42,7 @@ tui-textfield {
42
42
  position: relative;
43
43
  block-size: auto;
44
44
  align-self: stretch;
45
- border-inline-start: var(--t-padding) solid transparent;
46
- border-inline-end: var(--t-padding) solid transparent;
45
+ border-inline: var(--t-padding) solid transparent;
47
46
  margin: 0 calc(-1 * var(--t-padding));
48
47
  }
49
48
 
@@ -80,8 +79,7 @@ tui-textfield {
80
79
  font: inherit;
81
80
  resize: none;
82
81
  outline: none;
83
- padding-block-start: 1.125rem;
84
- padding-block-end: 1.125rem;
82
+ padding-block: 1.125rem;
85
83
  color: var(--tui-text-primary);
86
84
 
87
85
  &[inputmode='none'] {
@@ -98,31 +96,28 @@ tui-textfield {
98
96
  font: var(--tui-font-text-ui-s);
99
97
  line-height: 1rem;
100
98
 
101
- &[style*='--t-icon-start:'] {
99
+ &[data-icon-start] {
102
100
  --t-start: 1.25rem;
103
101
  }
104
102
 
105
- &[style*='--t-icon-end:'] {
103
+ &[data-icon-end] {
106
104
  --t-end: 1.25rem;
107
105
  }
108
106
 
109
107
  &::before {
110
- margin-inline-end: 0.5rem;
111
- margin-inline-start: -0.125rem;
108
+ margin-inline: -0.125rem 0.5rem;
112
109
  font-size: 1rem;
113
110
  }
114
111
 
115
112
  &::after {
116
- margin-inline-end: calc(-0.125rem - var(--t-padding));
117
- margin-inline-start: calc(0.625rem - var(--t-padding));
113
+ margin-inline: calc(0.625rem - var(--t-padding)) calc(-0.125rem - var(--t-padding));
118
114
  font-size: 1rem;
119
115
  }
120
116
 
121
117
  input,
122
118
  select,
123
119
  textarea {
124
- padding-block-start: 0.5rem;
125
- padding-block-end: 0.5rem;
120
+ padding-block: 0.5rem;
126
121
  }
127
122
 
128
123
  & > .t-content {
@@ -133,34 +128,33 @@ tui-textfield {
133
128
  &[data-size='m'] {
134
129
  --t-height: var(--tui-height-m);
135
130
  --t-padding: var(--tui-padding-m);
131
+ --t-label-font: var(--tui-font-text-xs);
132
+ --t-label-y: -0.5625rem;
136
133
 
137
134
  border-radius: var(--tui-radius-m);
138
135
  font: var(--tui-font-text-ui-s);
139
136
  line-height: 1rem;
140
137
 
141
- &[style*='--t-icon-start:'] {
138
+ &[data-icon-start] {
142
139
  --t-start: 1.75rem;
143
140
  }
144
141
 
145
- &[style*='--t-icon-end:'] {
142
+ &[data-icon-end] {
146
143
  --t-end: 1.75rem;
147
144
  }
148
145
 
149
146
  &::before {
150
- margin-inline-start: -0.125rem;
151
- margin-inline-end: 0.125rem;
147
+ margin-inline: -0.125rem 0.125rem;
152
148
  }
153
149
 
154
150
  &::after {
155
- margin-inline-start: calc(0.25rem - var(--t-padding));
156
- margin-inline-end: calc(-0.125rem - var(--t-padding));
151
+ margin-inline: calc(0.25rem - var(--t-padding)) calc(-0.125rem - var(--t-padding));
157
152
  }
158
153
 
159
154
  input,
160
155
  select,
161
156
  textarea {
162
- padding-block-start: 0.875rem;
163
- padding-block-end: 0.875rem;
157
+ padding-block: 0.875rem;
164
158
  }
165
159
 
166
160
  & > .t-content {
@@ -209,36 +203,12 @@ tui-textfield {
209
203
  opacity: var(--tui-disabled-opacity);
210
204
  }
211
205
 
212
- &:has(label:not(:empty)) {
213
- & > .t-template,
214
- input:not([type='range']),
215
- select:defined,
216
- textarea:defined {
217
- padding-block-start: calc(var(--t-height) / 3);
218
- padding-block-end: 0;
219
- }
220
- }
221
-
222
- &:not([data-focus='true']):has(label:not(:empty)) {
223
- & > .t-template,
224
- input:not([type='range']),
225
- select:defined,
226
- textarea:defined {
227
- &::placeholder,
228
- &._empty {
229
- color: transparent;
230
- }
231
- }
232
- }
233
-
234
- // TODO: Fallback until Safari 15.4
235
206
  &._with-label {
236
207
  & > .t-template,
237
208
  input:not([type='range']),
238
209
  select:defined,
239
210
  textarea:defined {
240
- padding-block-start: calc(var(--t-height) / 3);
241
- padding-block-end: 0;
211
+ padding-block: calc(var(--t-height) / 3) 0;
242
212
  }
243
213
  }
244
214
 
@@ -266,8 +236,12 @@ tui-textfield {
266
236
  border-width: 0;
267
237
  overscroll-behavior: none;
268
238
  // StackBlitz changes "0rem" to "0" breaking calc
269
- padding-inline-start: calc(var(--t-start, ~'0rem') + var(--t-padding));
270
- padding-inline-end: calc(var(--t-end, ~'0rem') + var(--t-side) + var(--t-padding));
239
+ padding-inline: calc(var(--t-start, ~'0rem') + var(--t-padding))
240
+ calc(var(--t-end, ~'0rem') + var(--t-side, ~'0rem') + var(--t-padding));
241
+
242
+ &:disabled {
243
+ animation: tuiPresent 1s infinite;
244
+ }
271
245
  }
272
246
 
273
247
  & > .t-template {
@@ -288,7 +262,6 @@ tui-textfield {
288
262
  pointer-events: auto;
289
263
  background: none;
290
264
 
291
- // TODO: Remove :not when we drop old select tuiTextfield in v5
292
265
  &:not(select):read-only ~ .t-filler {
293
266
  display: none;
294
267
  }
@@ -307,8 +280,9 @@ tui-textfield {
307
280
  &:-webkit-autofill,
308
281
  &:not(._empty):not(:placeholder-shown) {
309
282
  & ~ label {
310
- font-size: var(--t-label-size);
311
- transform: translateY(var(--t-label));
283
+ font: var(--t-label-font);
284
+ line-height: var(--t-height);
285
+ transform: translateY(var(--t-label-y));
312
286
  }
313
287
 
314
288
  &:not(:disabled)[data-mode~='invalid'] ~ label,
@@ -330,19 +304,12 @@ tui-textfield {
330
304
 
331
305
  & ~ label {
332
306
  color: var(--tui-text-primary) !important;
333
- font-size: var(--t-label-size);
334
- transform: translateY(var(--t-label));
307
+ font: var(--t-label-font);
308
+ line-height: var(--t-height);
309
+ transform: translateY(var(--t-label-y));
335
310
  }
336
311
  });
337
312
  }
338
-
339
- // @deprecated remove in v5
340
- .ios-only({
341
- &._ios-fix {
342
- position: fixed;
343
- left: 1000rem;
344
- }
345
- });
346
313
  }
347
314
 
348
315
  // Increasing specificity to override all other styles
@@ -420,7 +387,7 @@ tui-textfield {
420
387
  }
421
388
 
422
389
  & > .t-filler:defined {
423
- pointer-events: none;
390
+ pointer-events: none !important;
424
391
  color: var(--tui-text-tertiary);
425
392
  opacity: 1;
426
393
  }
@@ -3,7 +3,7 @@
3
3
  .appearance-hover(@content) {
4
4
  .interactive({
5
5
  @media @tui-mouse {
6
- &:hover:not(:disabled):not([data-state]) {
6
+ &:hover:not([data-state]) {
7
7
  @content();
8
8
  }
9
9
  }
@@ -12,14 +12,6 @@
12
12
  &[data-state='hover'] {
13
13
  @content();
14
14
  }
15
-
16
- /* @deprecated TODO remove in v5 */
17
- @media @tui-mouse {
18
- &[tuiWrapper]:hover:not(._no-hover),
19
- &[tuiWrapper][data-state='hover'] {
20
- @content();
21
- }
22
- }
23
15
  }
24
16
 
25
17
  .appearance-active(@content) {
@@ -32,13 +24,6 @@
32
24
  &[data-state='active'] {
33
25
  @content();
34
26
  }
35
-
36
- /* @deprecated TODO remove in v5 */
37
- &[tuiWrapper]:active:not(._no-active),
38
- &[tuiWrapper][data-state='active'],
39
- &[tuiWrapper][data-state='active']:hover {
40
- @content();
41
- }
42
27
  }
43
28
 
44
29
  .appearance-disabled(@content) {
@@ -46,12 +31,6 @@
46
31
  &[data-state='disabled'] {
47
32
  @content();
48
33
  }
49
-
50
- /* @deprecated TODO remove in v5 */
51
- &[tuiWrapper]:disabled:not([data-state]),
52
- &[tuiWrapper][data-state='disabled'] {
53
- @content();
54
- }
55
34
  }
56
35
 
57
36
  .appearance-focus(@content) {
@@ -62,10 +41,15 @@
62
41
  &[data-focus='true'] {
63
42
  @content();
64
43
  }
44
+ }
65
45
 
66
- /* @deprecated TODO remove in v5 */
67
- &[tuiWrapper]:not(._focused):has(:focus-visible),
68
- &[tuiWrapper]._focused {
46
+ .appearance-invalid(@content) {
47
+ &:is([data-mode~='invalid'], .tui-invalid, :invalid):not(
48
+ [data-mode~='readonly'],
49
+ [data-mode~='valid'],
50
+ [data-state='disabled'],
51
+ :disabled
52
+ ) {
69
53
  @content();
70
54
  }
71
55
  }