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

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 (123) hide show
  1. package/classes/accessors.d.ts +1 -1
  2. package/components/calendar/calendar-sheet.component.d.ts +1 -1
  3. package/components/calendar/calendar-sheet.pipe.d.ts +1 -1
  4. package/components/calendar/calendar.options.d.ts +9 -0
  5. package/components/calendar/index.d.ts +1 -0
  6. package/components/calendar/order-week-days.pipe.d.ts +1 -1
  7. package/components/data-list/data-list.d.ts +2 -1
  8. package/components/data-list/data-list.tokens.d.ts +0 -18
  9. package/components/data-list/index.d.ts +3 -2
  10. package/components/data-list/option-with-value.directive.d.ts +9 -0
  11. package/components/data-list/{option/option.directive.d.ts → option.directive.d.ts} +3 -10
  12. package/components/icon/icon.component.d.ts +2 -2
  13. package/components/input/input.d.ts +4 -1
  14. package/components/label/label.directive.d.ts +1 -1
  15. package/components/link/index.d.ts +0 -1
  16. package/components/link/link.directive.d.ts +8 -6
  17. package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
  18. package/components/scrollbar/scrollbar.component.d.ts +1 -5
  19. package/components/spin-button/spin-button.component.d.ts +1 -1
  20. package/components/textfield/textfield-multi/textfield-multi.component.d.ts +2 -2
  21. package/directives/items-handlers/items-handlers.directive.d.ts +5 -9
  22. package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
  23. package/fesm2022/taiga-ui-core-classes.mjs +3 -3
  24. package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-core-components-button.mjs +7 -7
  26. package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-core-components-calendar.mjs +36 -30
  28. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-core-components-cell.mjs +7 -7
  30. package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-core-components-data-list.mjs +84 -93
  32. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-core-components-error.mjs +9 -9
  34. package/fesm2022/taiga-ui-core-components-expand.mjs +3 -3
  35. package/fesm2022/taiga-ui-core-components-icon.mjs +8 -8
  36. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-core-components-input.mjs +17 -8
  38. package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-core-components-label.mjs +10 -12
  40. package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
  41. package/fesm2022/taiga-ui-core-components-link.mjs +13 -24
  42. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  43. package/fesm2022/taiga-ui-core-components-loader.mjs +3 -3
  44. package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
  45. package/fesm2022/taiga-ui-core-components-notification.mjs +19 -21
  46. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  47. package/fesm2022/taiga-ui-core-components-root.mjs +4 -4
  48. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  49. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +42 -47
  50. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  51. package/fesm2022/taiga-ui-core-components-spin-button.mjs +5 -5
  52. package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
  53. package/fesm2022/taiga-ui-core-components-textfield.mjs +35 -33
  54. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  55. package/fesm2022/taiga-ui-core-components-title.mjs +6 -6
  56. package/fesm2022/taiga-ui-core-directives-appearance.mjs +10 -10
  57. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-core-directives-date-format.mjs +3 -3
  59. package/fesm2022/taiga-ui-core-directives-group.mjs +7 -7
  60. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  61. package/fesm2022/taiga-ui-core-directives-icons.mjs +9 -9
  62. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +15 -36
  63. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-core-directives-number-format.mjs +3 -3
  65. package/fesm2022/taiga-ui-core-pipes-format-number.mjs +3 -3
  66. package/fesm2022/taiga-ui-core-portals-alert.mjs +10 -10
  67. package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-core-portals-dialog.mjs +12 -12
  69. package/fesm2022/taiga-ui-core-portals-dropdown.mjs +54 -54
  70. package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -1
  71. package/fesm2022/taiga-ui-core-portals-hint.mjs +54 -54
  72. package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
  73. package/fesm2022/taiga-ui-core-portals-modal.mjs +8 -8
  74. package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
  75. package/fesm2022/taiga-ui-core-portals-popup.mjs +9 -9
  76. package/fesm2022/taiga-ui-core-services.mjs +15 -34
  77. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-core-tokens.mjs +4 -28
  79. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +13 -4
  81. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-core.mjs +0 -1
  83. package/fesm2022/taiga-ui-core.mjs.map +1 -1
  84. package/index.d.ts +0 -1
  85. package/package.json +57 -62
  86. package/portals/hint/hint-position.directive.d.ts +3 -3
  87. package/portals/hint/hint.directive.d.ts +1 -1
  88. package/services/index.d.ts +0 -1
  89. package/styles/components/appearance.less +5 -0
  90. package/styles/components/button.less +1 -1
  91. package/styles/components/link.less +8 -23
  92. package/styles/components/notification.less +4 -4
  93. package/styles/components/textfield.less +32 -64
  94. package/styles/mixins/appearance.less +9 -25
  95. package/styles/mixins/appearance.scss +8 -24
  96. package/styles/taiga-ui-local.less +0 -1
  97. package/styles/taiga-ui-local.scss +0 -1
  98. package/styles/taiga-ui-theme.less +0 -1
  99. package/styles/theme/appearance/outline.less +9 -18
  100. package/styles/theme/appearance/primary.less +2 -4
  101. package/styles/theme/appearance/secondary.less +6 -14
  102. package/styles/theme/appearance/status.less +0 -4
  103. package/styles/theme/appearance/table.less +38 -31
  104. package/styles/theme/appearance.less +0 -1
  105. package/tokens/common-icons.d.ts +2 -0
  106. package/tokens/index.d.ts +0 -4
  107. package/types/point.d.ts +1 -1
  108. package/utils/miscellaneous/font-scaling.d.ts +2 -1
  109. package/animations/animations.d.ts +0 -109
  110. package/animations/index.d.ts +0 -1
  111. package/components/link/link.options.d.ts +0 -10
  112. package/fesm2022/taiga-ui-core-animations.mjs +0 -370
  113. package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
  114. package/services/dark-theme.service.d.ts +0 -10
  115. package/styles/mixins/wrapper.less +0 -64
  116. package/styles/mixins/wrapper.scss +0 -61
  117. package/styles/theme/appearance/opposite.less +0 -17
  118. package/styles/theme/wrapper.less +0 -211
  119. package/tokens/day-type-handler.d.ts +0 -7
  120. package/tokens/first-day-of-week.d.ts +0 -5
  121. package/tokens/scroll-ref.d.ts +0 -2
  122. package/tokens/spin-icons.d.ts +0 -6
  123. /package/components/data-list/{option/option-content.d.ts → option-content.directive.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "4.52.0-canary.ca43bcb",
3
+ "version": "4.52.0-canary.e07790b",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -26,18 +26,10 @@
26
26
  "types": "./index.d.ts",
27
27
  "default": "./fesm2022/taiga-ui-core.mjs"
28
28
  },
29
- "./animations": {
30
- "types": "./animations/index.d.ts",
31
- "default": "./fesm2022/taiga-ui-core-animations.mjs"
32
- },
33
29
  "./classes": {
34
30
  "types": "./classes/index.d.ts",
35
31
  "default": "./fesm2022/taiga-ui-core-classes.mjs"
36
32
  },
37
- "./components": {
38
- "types": "./components/index.d.ts",
39
- "default": "./fesm2022/taiga-ui-core-components.mjs"
40
- },
41
33
  "./directives": {
42
34
  "types": "./directives/index.d.ts",
43
35
  "default": "./fesm2022/taiga-ui-core-directives.mjs"
@@ -50,6 +42,10 @@
50
42
  "types": "./portals/index.d.ts",
51
43
  "default": "./fesm2022/taiga-ui-core-portals.mjs"
52
44
  },
45
+ "./components": {
46
+ "types": "./components/index.d.ts",
47
+ "default": "./fesm2022/taiga-ui-core-components.mjs"
48
+ },
53
49
  "./services": {
54
50
  "types": "./services/index.d.ts",
55
51
  "default": "./fesm2022/taiga-ui-core-services.mjs"
@@ -66,6 +62,58 @@
66
62
  "types": "./utils/index.d.ts",
67
63
  "default": "./fesm2022/taiga-ui-core-utils.mjs"
68
64
  },
65
+ "./directives/appearance": {
66
+ "types": "./directives/appearance/index.d.ts",
67
+ "default": "./fesm2022/taiga-ui-core-directives-appearance.mjs"
68
+ },
69
+ "./directives/date-format": {
70
+ "types": "./directives/date-format/index.d.ts",
71
+ "default": "./fesm2022/taiga-ui-core-directives-date-format.mjs"
72
+ },
73
+ "./directives/group": {
74
+ "types": "./directives/group/index.d.ts",
75
+ "default": "./fesm2022/taiga-ui-core-directives-group.mjs"
76
+ },
77
+ "./directives/icons": {
78
+ "types": "./directives/icons/index.d.ts",
79
+ "default": "./fesm2022/taiga-ui-core-directives-icons.mjs"
80
+ },
81
+ "./directives/items-handlers": {
82
+ "types": "./directives/items-handlers/index.d.ts",
83
+ "default": "./fesm2022/taiga-ui-core-directives-items-handlers.mjs"
84
+ },
85
+ "./directives/number-format": {
86
+ "types": "./directives/number-format/index.d.ts",
87
+ "default": "./fesm2022/taiga-ui-core-directives-number-format.mjs"
88
+ },
89
+ "./pipes/format-number": {
90
+ "types": "./pipes/format-number/index.d.ts",
91
+ "default": "./fesm2022/taiga-ui-core-pipes-format-number.mjs"
92
+ },
93
+ "./portals/alert": {
94
+ "types": "./portals/alert/index.d.ts",
95
+ "default": "./fesm2022/taiga-ui-core-portals-alert.mjs"
96
+ },
97
+ "./portals/dialog": {
98
+ "types": "./portals/dialog/index.d.ts",
99
+ "default": "./fesm2022/taiga-ui-core-portals-dialog.mjs"
100
+ },
101
+ "./portals/dropdown": {
102
+ "types": "./portals/dropdown/index.d.ts",
103
+ "default": "./fesm2022/taiga-ui-core-portals-dropdown.mjs"
104
+ },
105
+ "./portals/hint": {
106
+ "types": "./portals/hint/index.d.ts",
107
+ "default": "./fesm2022/taiga-ui-core-portals-hint.mjs"
108
+ },
109
+ "./portals/modal": {
110
+ "types": "./portals/modal/index.d.ts",
111
+ "default": "./fesm2022/taiga-ui-core-portals-modal.mjs"
112
+ },
113
+ "./portals/popup": {
114
+ "types": "./portals/popup/index.d.ts",
115
+ "default": "./fesm2022/taiga-ui-core-portals-popup.mjs"
116
+ },
69
117
  "./components/button": {
70
118
  "types": "./components/button/index.d.ts",
71
119
  "default": "./fesm2022/taiga-ui-core-components-button.mjs"
@@ -134,58 +182,6 @@
134
182
  "types": "./components/title/index.d.ts",
135
183
  "default": "./fesm2022/taiga-ui-core-components-title.mjs"
136
184
  },
137
- "./directives/appearance": {
138
- "types": "./directives/appearance/index.d.ts",
139
- "default": "./fesm2022/taiga-ui-core-directives-appearance.mjs"
140
- },
141
- "./directives/date-format": {
142
- "types": "./directives/date-format/index.d.ts",
143
- "default": "./fesm2022/taiga-ui-core-directives-date-format.mjs"
144
- },
145
- "./directives/group": {
146
- "types": "./directives/group/index.d.ts",
147
- "default": "./fesm2022/taiga-ui-core-directives-group.mjs"
148
- },
149
- "./directives/icons": {
150
- "types": "./directives/icons/index.d.ts",
151
- "default": "./fesm2022/taiga-ui-core-directives-icons.mjs"
152
- },
153
- "./directives/items-handlers": {
154
- "types": "./directives/items-handlers/index.d.ts",
155
- "default": "./fesm2022/taiga-ui-core-directives-items-handlers.mjs"
156
- },
157
- "./directives/number-format": {
158
- "types": "./directives/number-format/index.d.ts",
159
- "default": "./fesm2022/taiga-ui-core-directives-number-format.mjs"
160
- },
161
- "./pipes/format-number": {
162
- "types": "./pipes/format-number/index.d.ts",
163
- "default": "./fesm2022/taiga-ui-core-pipes-format-number.mjs"
164
- },
165
- "./portals/alert": {
166
- "types": "./portals/alert/index.d.ts",
167
- "default": "./fesm2022/taiga-ui-core-portals-alert.mjs"
168
- },
169
- "./portals/dialog": {
170
- "types": "./portals/dialog/index.d.ts",
171
- "default": "./fesm2022/taiga-ui-core-portals-dialog.mjs"
172
- },
173
- "./portals/dropdown": {
174
- "types": "./portals/dropdown/index.d.ts",
175
- "default": "./fesm2022/taiga-ui-core-portals-dropdown.mjs"
176
- },
177
- "./portals/hint": {
178
- "types": "./portals/hint/index.d.ts",
179
- "default": "./fesm2022/taiga-ui-core-portals-hint.mjs"
180
- },
181
- "./portals/modal": {
182
- "types": "./portals/modal/index.d.ts",
183
- "default": "./fesm2022/taiga-ui-core-portals-modal.mjs"
184
- },
185
- "./portals/popup": {
186
- "types": "./portals/popup/index.d.ts",
187
- "default": "./fesm2022/taiga-ui-core-portals-popup.mjs"
188
- },
189
185
  "./utils/dom": {
190
186
  "types": "./utils/dom/index.d.ts",
191
187
  "default": "./fesm2022/taiga-ui-core-utils-dom.mjs"
@@ -200,7 +196,6 @@
200
196
  }
201
197
  },
202
198
  "peerDependencies": {
203
- "@angular/animations": ">=19.0.0",
204
199
  "@angular/common": ">=19.0.0",
205
200
  "@angular/core": ">=19.0.0",
206
201
  "@angular/forms": ">=19.0.0",
@@ -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
  }
@@ -1,4 +1,3 @@
1
1
  export * from './breakpoint.service';
2
- export * from './dark-theme.service';
3
2
  export * from './position.service';
4
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) + var(--t-padding));
241
+
242
+ &:disabled {
243
+ animation: tuiPresent 1s infinite;
244
+ }
271
245
  }
272
246
 
273
247
  & > .t-template {
@@ -306,8 +280,9 @@ tui-textfield {
306
280
  &:-webkit-autofill,
307
281
  &:not(._empty):not(:placeholder-shown) {
308
282
  & ~ label {
309
- font-size: var(--t-label-size);
310
- transform: translateY(var(--t-label));
283
+ font: var(--t-label-font);
284
+ line-height: var(--t-height);
285
+ transform: translateY(var(--t-label-y));
311
286
  }
312
287
 
313
288
  &:not(:disabled)[data-mode~='invalid'] ~ label,
@@ -329,19 +304,12 @@ tui-textfield {
329
304
 
330
305
  & ~ label {
331
306
  color: var(--tui-text-primary) !important;
332
- font-size: var(--t-label-size);
333
- transform: translateY(var(--t-label));
307
+ font: var(--t-label-font);
308
+ line-height: var(--t-height);
309
+ transform: translateY(var(--t-label-y));
334
310
  }
335
311
  });
336
312
  }
337
-
338
- // @deprecated remove in v5
339
- .ios-only({
340
- &._ios-fix {
341
- position: fixed;
342
- left: 1000rem;
343
- }
344
- });
345
313
  }
346
314
 
347
315
  // Increasing specificity to override all other styles
@@ -419,7 +387,7 @@ tui-textfield {
419
387
  }
420
388
 
421
389
  & > .t-filler:defined {
422
- pointer-events: none;
390
+ pointer-events: none !important;
423
391
  color: var(--tui-text-tertiary);
424
392
  opacity: 1;
425
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
  }
@@ -13,14 +13,6 @@
13
13
  &[data-state='hover'] {
14
14
  @content;
15
15
  }
16
-
17
- /* @deprecated TODO remove in v5 */
18
- @media ($tui-mouse) {
19
- &[tuiWrapper]:hover:not(._no-hover),
20
- &[tuiWrapper][data-state='hover'] {
21
- @content;
22
- }
23
- }
24
16
  }
25
17
 
26
18
  @mixin appearance-active {
@@ -33,13 +25,6 @@
33
25
  &[data-state='active'] {
34
26
  @content;
35
27
  }
36
-
37
- /* @deprecated TODO remove in v5 */
38
- &[tuiWrapper]:active:not(._no-active),
39
- &[tuiWrapper][data-state='active'],
40
- &[tuiWrapper][data-state='active']:hover {
41
- @content;
42
- }
43
28
  }
44
29
 
45
30
  @mixin appearance-disabled {
@@ -47,12 +32,6 @@
47
32
  &[data-state='disabled'] {
48
33
  @content;
49
34
  }
50
-
51
- /* @deprecated TODO remove in v5 */
52
- &[tuiWrapper]:disabled:not([data-state]),
53
- &[tuiWrapper][data-state='disabled'] {
54
- @content;
55
- }
56
35
  }
57
36
 
58
37
  @mixin appearance-focus {
@@ -63,10 +42,15 @@
63
42
  &[data-focus='true'] {
64
43
  @content;
65
44
  }
45
+ }
66
46
 
67
- /* @deprecated TODO remove in v5 */
68
- &[tuiWrapper]:not(._focused):has(:focus-visible),
69
- &[tuiWrapper]._focused {
47
+ @mixin appearance-invalid {
48
+ &:is([data-mode~='invalid'], .tui-invalid, :invalid):not(
49
+ [data-mode~='readonly'],
50
+ [data-mode~='valid'],
51
+ [data-state='disabled'],
52
+ :disabled
53
+ ) {
70
54
  @content;
71
55
  }
72
56
  }
@@ -3,6 +3,5 @@
3
3
  @import 'mixins/mixins.less';
4
4
  @import 'mixins/picker.less';
5
5
  @import 'mixins/slider.less';
6
- @import 'mixins/wrapper.less';
7
6
  @import 'mixins/appearance.less';
8
7
  @import 'variables/media.less';
@@ -2,6 +2,5 @@
2
2
  @import 'mixins/mixins.scss';
3
3
  @import 'mixins/picker.scss';
4
4
  @import 'mixins/slider.scss';
5
- @import 'mixins/wrapper.scss';
6
5
  @import 'mixins/appearance.scss';
7
6
  @import 'variables/media.scss';
@@ -1,5 +1,4 @@
1
1
  @import 'theme/variables.less';
2
2
  @import 'theme/palette.less';
3
3
  @import 'theme/appearance.less';
4
- @import 'theme/wrapper.less';
5
4
  @import 'theme/appearance/textfield.less';