@taiga-ui/core 4.11.0 → 4.13.0

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 (118) hide show
  1. package/classes/accessors.d.ts +1 -1
  2. package/classes/driver.d.ts +3 -3
  3. package/components/alert/alert.tokens.d.ts +2 -0
  4. package/components/dialog/dialog.factory.d.ts +12 -0
  5. package/components/dialog/index.d.ts +1 -0
  6. package/components/notification/notification.directive.d.ts +1 -1
  7. package/components/root/root.component.d.ts +4 -2
  8. package/components/textfield/textfield.component.d.ts +1 -0
  9. package/directives/appearance/appearance.directive.d.ts +1 -1
  10. package/directives/appearance/appearance.options.d.ts +1 -1
  11. package/directives/dropdown/dropdown-portal.directive.d.ts +3 -0
  12. package/directives/dropdown/dropdown.driver.d.ts +4 -3
  13. package/directives/dropdown/dropdowns.component.d.ts +1 -1
  14. package/directives/hint/hint-hover.directive.d.ts +1 -0
  15. package/directives/hint/hint-position.directive.d.ts +2 -1
  16. package/directives/hint/hint.component.d.ts +8 -0
  17. package/directives/index.d.ts +1 -0
  18. package/directives/popup/index.d.ts +2 -0
  19. package/directives/popup/popup.directive.d.ts +11 -0
  20. package/directives/popup/popup.service.d.ts +6 -0
  21. package/esm2022/animations/animations.mjs +3 -3
  22. package/esm2022/classes/accessors.mjs +1 -1
  23. package/esm2022/classes/driver.mjs +8 -5
  24. package/esm2022/components/alert/alert.component.mjs +3 -3
  25. package/esm2022/components/alert/alert.tokens.mjs +12 -1
  26. package/esm2022/components/calendar/calendar.component.mjs +5 -3
  27. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  28. package/esm2022/components/dialog/dialog.factory.mjs +12 -0
  29. package/esm2022/components/dialog/dialogs.component.mjs +3 -3
  30. package/esm2022/components/dialog/index.mjs +2 -1
  31. package/esm2022/components/link/link.directive.mjs +2 -2
  32. package/esm2022/components/link/link.options.mjs +2 -2
  33. package/esm2022/components/notification/notification.directive.mjs +5 -5
  34. package/esm2022/components/notification/notification.options.mjs +7 -3
  35. package/esm2022/components/root/root.component.mjs +13 -8
  36. package/esm2022/components/textfield/textfield.component.mjs +6 -4
  37. package/esm2022/directives/appearance/appearance.directive.mjs +2 -2
  38. package/esm2022/directives/appearance/appearance.options.mjs +1 -1
  39. package/esm2022/directives/dropdown/dropdown-open.directive.mjs +3 -3
  40. package/esm2022/directives/dropdown/dropdown-portal.directive.mjs +4 -1
  41. package/esm2022/directives/dropdown/dropdown.driver.mjs +7 -8
  42. package/esm2022/directives/dropdown/dropdowns.component.mjs +9 -9
  43. package/esm2022/directives/hint/hint-hover.directive.mjs +8 -2
  44. package/esm2022/directives/hint/hint-options.directive.mjs +2 -1
  45. package/esm2022/directives/hint/hint-position.directive.mjs +16 -12
  46. package/esm2022/directives/hint/hint.component.mjs +20 -14
  47. package/esm2022/directives/index.mjs +2 -1
  48. package/esm2022/directives/popup/index.mjs +3 -0
  49. package/esm2022/directives/popup/popup.directive.mjs +31 -0
  50. package/esm2022/directives/popup/popup.service.mjs +15 -0
  51. package/esm2022/directives/popup/taiga-ui-core-directives-popup.mjs +5 -0
  52. package/esm2022/directives/surface/surface.directive.mjs +2 -2
  53. package/esm2022/directives/title/title.directive.mjs +2 -2
  54. package/esm2022/pipes/flag/flag.pipe.mjs +2 -1
  55. package/esm2022/services/position.service.mjs +2 -2
  56. package/esm2022/tokens/i18n.mjs +5 -1
  57. package/esm2022/utils/miscellaneous/to-animation-options.mjs +3 -2
  58. package/fesm2022/taiga-ui-core-animations.mjs +2 -2
  59. package/fesm2022/taiga-ui-core-animations.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-core-classes.mjs +7 -4
  61. package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-core-components-alert.mjs +14 -3
  63. package/fesm2022/taiga-ui-core-components-alert.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-core-components-calendar.mjs +4 -2
  65. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-core-components-dialog.mjs +16 -7
  67. package/fesm2022/taiga-ui-core-components-dialog.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-core-components-link.mjs +3 -3
  69. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-core-components-notification.mjs +10 -6
  71. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-core-components-root.mjs +12 -7
  73. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-core-components-textfield.mjs +4 -3
  75. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-core-directives-appearance.mjs +2 -2
  77. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-core-directives-dropdown.mjs +18 -16
  79. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-core-directives-hint.mjs +40 -25
  81. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-core-directives-popup.mjs +48 -0
  83. package/fesm2022/taiga-ui-core-directives-popup.mjs.map +1 -0
  84. package/fesm2022/taiga-ui-core-directives-surface.mjs +2 -2
  85. package/fesm2022/taiga-ui-core-directives-title.mjs +2 -2
  86. package/fesm2022/taiga-ui-core-directives-title.mjs.map +1 -1
  87. package/fesm2022/taiga-ui-core-directives.mjs +1 -0
  88. package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
  89. package/fesm2022/taiga-ui-core-pipes-flag.mjs +1 -0
  90. package/fesm2022/taiga-ui-core-pipes-flag.mjs.map +1 -1
  91. package/fesm2022/taiga-ui-core-services.mjs +1 -1
  92. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  93. package/fesm2022/taiga-ui-core-tokens.mjs +5 -1
  94. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  95. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +2 -1
  96. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
  97. package/package.json +12 -6
  98. package/styles/components/link.less +2 -0
  99. package/styles/components/notification.less +60 -14
  100. package/styles/components/title.less +1 -0
  101. package/styles/mixins/appearance.less +38 -11
  102. package/styles/mixins/appearance.scss +27 -0
  103. package/styles/mixins/mixins.less +5 -3
  104. package/styles/mixins/wrapper.less +4 -2
  105. package/styles/theme/appearance/action.less +48 -0
  106. package/styles/theme/appearance/flat.less +23 -0
  107. package/styles/theme/appearance/floating.less +3 -3
  108. package/styles/theme/appearance/opposite.less +2 -6
  109. package/styles/theme/appearance/outline.less +38 -0
  110. package/styles/theme/appearance/primary.less +30 -0
  111. package/styles/theme/appearance/secondary.less +9 -20
  112. package/styles/theme/appearance/status.less +8 -4
  113. package/styles/theme/appearance.less +2 -2
  114. package/styles/theme/wrapper.less +22 -64
  115. package/tokens/i18n.d.ts +4 -0
  116. package/utils/miscellaneous/to-animation-options.d.ts +1 -1
  117. package/styles/theme/appearance/icon.less +0 -38
  118. package/styles/theme/appearance/link.less +0 -11
@@ -1,44 +1,71 @@
1
1
  @import 'mixins.less';
2
2
 
3
- .appearance-hover(@ruleset) {
3
+ .appearance-hover(@content) {
4
4
  .interactive({
5
5
  @media (hover: hover) {
6
6
  &:hover:not(:disabled):not([data-state]) {
7
- @ruleset();
7
+ @content();
8
8
  }
9
9
  }
10
10
  });
11
11
 
12
12
  &[data-state='hover'] {
13
- @ruleset();
13
+ @content();
14
+ }
15
+
16
+ /* @deprecated TODO remove in v5 */
17
+ @media (hover: hover) {
18
+ &[tuiWrapper]:hover:not(._no-hover),
19
+ &[tuiWrapper][data-state='hover'] {
20
+ @content();
21
+ }
14
22
  }
15
23
  }
16
24
 
17
- .appearance-active(@ruleset) {
25
+ .appearance-active(@content) {
18
26
  .interactive({
19
27
  &:active:not(:disabled):not([data-state]) {
20
- @ruleset();
28
+ @content();
21
29
  }
22
30
  });
23
31
 
24
32
  &[data-state='active'] {
25
- @ruleset();
33
+ @content();
34
+ }
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();
26
41
  }
27
42
  }
28
43
 
29
- .appearance-disabled(@ruleset) {
44
+ .appearance-disabled(@content) {
30
45
  &:disabled:not([data-state]),
31
46
  &[data-state='disabled'] {
32
- @ruleset();
47
+ @content();
48
+ }
49
+
50
+ /* @deprecated TODO remove in v5 */
51
+ &[tuiWrapper]:disabled:not([data-state]),
52
+ &[tuiWrapper][data-state='disabled'] {
53
+ @content();
33
54
  }
34
55
  }
35
56
 
36
- .appearance-focus(@ruleset) {
57
+ .appearance-focus(@content) {
37
58
  &:focus-visible:not([data-focus='false']) {
38
- @ruleset();
59
+ @content();
39
60
  }
40
61
 
41
62
  &[data-focus='true'] {
42
- @ruleset();
63
+ @content();
64
+ }
65
+
66
+ /* @deprecated TODO remove in v5 */
67
+ &[tuiWrapper]:not(._focused):has(:focus-visible),
68
+ &[tuiWrapper]._focused {
69
+ @content();
43
70
  }
44
71
  }
@@ -12,6 +12,14 @@
12
12
  &[data-state='hover'] {
13
13
  @content;
14
14
  }
15
+
16
+ /* @deprecated TODO remove in v5 */
17
+ @media (hover: hover) {
18
+ &[tuiWrapper]:hover:not(._no-hover),
19
+ &[tuiWrapper][data-state='hover'] {
20
+ @content;
21
+ }
22
+ }
15
23
  }
16
24
 
17
25
  @mixin appearance-active {
@@ -24,6 +32,13 @@
24
32
  &[data-state='active'] {
25
33
  @content;
26
34
  }
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
+ }
27
42
  }
28
43
 
29
44
  @mixin appearance-disabled {
@@ -31,6 +46,12 @@
31
46
  &[data-state='disabled'] {
32
47
  @content;
33
48
  }
49
+
50
+ /* @deprecated TODO remove in v5 */
51
+ &[tuiWrapper]:disabled:not([data-state]),
52
+ &[tuiWrapper][data-state='disabled'] {
53
+ @content;
54
+ }
34
55
  }
35
56
 
36
57
  @mixin appearance-focus {
@@ -41,4 +62,10 @@
41
62
  &[data-focus='true'] {
42
63
  @content;
43
64
  }
65
+
66
+ /* @deprecated TODO remove in v5 */
67
+ &[tuiWrapper]:not(._focused):has(:focus-visible),
68
+ &[tuiWrapper]._focused {
69
+ @content;
70
+ }
44
71
  }
@@ -132,9 +132,11 @@
132
132
 
133
133
  // prevent scrolling to focused element on IOS
134
134
  .tui-prevent-ios-scroll() {
135
- &:focus {
136
- animation: tuiPreventIOSScroll 0.001s;
137
- }
135
+ .ios-only({
136
+ &:focus {
137
+ animation: tuiPreventIOSScroll 0.001s;
138
+ }
139
+ });
138
140
 
139
141
  @keyframes tuiPreventIOSScroll {
140
142
  0% {
@@ -43,12 +43,14 @@
43
43
  }
44
44
 
45
45
  .wrapper-focus(@ruleset) {
46
- // TODO: Join rules together once all browsers support focus-visible
47
- // Specificity artificially increased to match `:hover:not()` level
48
46
  &:focus-visible:focus-visible {
49
47
  @ruleset();
50
48
  }
51
49
 
50
+ &:has(:focus-visible) {
51
+ @ruleset();
52
+ }
53
+
52
54
  &._focused._focused {
53
55
  @ruleset();
54
56
  }
@@ -0,0 +1,48 @@
1
+ /* TODO @deprecated remove in v5 */
2
+ [tuiAppearance][data-appearance='link'] {
3
+ color: var(--tui-text-action);
4
+
5
+ .appearance-hover({
6
+ color: var(--tui-text-action-hover);
7
+ });
8
+
9
+ .appearance-active({
10
+ color: var(--tui-text-action-hover);
11
+ });
12
+ }
13
+
14
+ [tuiAppearance][data-appearance='action'] {
15
+ color: var(--tui-text-action);
16
+
17
+ .appearance-hover({
18
+ color: var(--tui-text-action-hover);
19
+ });
20
+
21
+ .appearance-active({
22
+ color: var(--tui-text-action-hover);
23
+ });
24
+ }
25
+
26
+ [tuiAppearance][data-appearance='action-destructive'] {
27
+ color: var(--tui-text-negative);
28
+
29
+ .appearance-hover({
30
+ color: var(--tui-text-negative-hover);
31
+ });
32
+
33
+ .appearance-active({
34
+ color: var(--tui-text-negative-hover);
35
+ });
36
+ }
37
+
38
+ [tuiAppearance][data-appearance='action-grayscale'] {
39
+ color: var(--tui-text-secondary);
40
+
41
+ .appearance-hover({
42
+ color: var(--tui-text-primary);
43
+ });
44
+
45
+ .appearance-active({
46
+ color: var(--tui-text-primary);
47
+ });
48
+ }
@@ -0,0 +1,23 @@
1
+ @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
+
3
+ [tuiAppearance][data-appearance='flat'],
4
+ [tuiAppearance][data-appearance='flat-destructive'],
5
+ [tuiAppearance][data-appearance='flat-grayscale'] {
6
+ color: var(--tui-text-action);
7
+
8
+ .appearance-hover({
9
+ background: var(--tui-background-neutral-1-hover);
10
+ });
11
+
12
+ .appearance-active({
13
+ background: var(--tui-background-neutral-1-pressed);
14
+ });
15
+ }
16
+
17
+ [tuiAppearance][data-appearance='flat-destructive'] {
18
+ color: var(--tui-text-negative);
19
+ }
20
+
21
+ [tuiAppearance][data-appearance='flat-grayscale'] {
22
+ color: var(--tui-text-primary);
23
+ }
@@ -1,8 +1,8 @@
1
1
  @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
2
 
3
3
  [tuiAppearance][data-appearance='floating'] {
4
- background: #fff;
5
- color: rgba(0, 0, 0, 0.8);
4
+ background: var(--tui-background-elevation-2);
5
+ color: var(--tui-text-primary);
6
6
  box-shadow: 0 0.25rem 1.25rem rgba(0, 0, 0, 0.1);
7
7
 
8
8
  .appearance-hover({
@@ -10,7 +10,7 @@
10
10
  });
11
11
 
12
12
  .appearance-active({
13
- background: #f6f7f8;
13
+ background: var(--tui-background-base-alt);
14
14
  box-shadow: 0 0.25rem 1.25rem rgba(0, 0, 0, 0.1);
15
15
  });
16
16
  }
@@ -1,7 +1,8 @@
1
1
  @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
2
 
3
+ /* TODO @deprecated remove in v5 */
3
4
  [tuiAppearance][data-appearance='opposite'] {
4
- --tui-border-focus: rgba(255, 255, 255, 0.64);
5
+ --tui-border-focus: #979797;
5
6
 
6
7
  background: var(--tui-background-accent-opposite);
7
8
  color: var(--tui-background-base);
@@ -14,8 +15,3 @@
14
15
  background: var(--tui-background-accent-opposite-pressed);
15
16
  });
16
17
  }
17
-
18
- [tuiTheme='dark'] [tuiAppearance][data-appearance='opposite'],
19
- [tuiTheme='dark'][tuiAppearance][data-appearance='opposite'] {
20
- --tui-border-focus: rgba(51, 51, 51, 0.48);
21
- }
@@ -1,6 +1,9 @@
1
1
  @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
2
 
3
3
  [tuiAppearance][data-appearance='outline'],
4
+ [tuiAppearance][data-appearance='outline-destructive'],
5
+ [tuiAppearance][data-appearance='outline-grayscale'],
6
+ /* TODO @deprecated remove in v5 */
4
7
  [tuiAppearance][data-appearance='whiteblock'] {
5
8
  --t-bs: var(--tui-border-normal);
6
9
 
@@ -44,6 +47,41 @@
44
47
  });
45
48
  }
46
49
 
50
+ [tuiAppearance][data-appearance='outline-grayscale'],
51
+ /* TODO @deprecated remove in v5 */
47
52
  [tuiAppearance][data-appearance='whiteblock'] {
48
53
  color: var(--tui-text-primary);
49
54
  }
55
+
56
+ [tuiAppearance][data-appearance='outline-destructive'] {
57
+ color: var(--tui-text-negative);
58
+ }
59
+
60
+ [tuiAppearance][data-appearance='icon'],
61
+ [tuiAppearance][data-appearance='outline-grayscale'],
62
+ [tuiAppearance][data-appearance='floating'],
63
+ /* TODO @deprecated remove in v5 */
64
+ [tuiAppearance][data-appearance='whiteblock'] {
65
+ color: var(--tui-text-primary);
66
+
67
+ &::before,
68
+ &::after {
69
+ .transition(color);
70
+
71
+ color: var(--tui-text-tertiary);
72
+ }
73
+
74
+ .appearance-hover({
75
+ &:before,
76
+ &:after {
77
+ color: var(--tui-text-secondary);
78
+ }
79
+ });
80
+
81
+ .appearance-active({
82
+ &:before,
83
+ &:after {
84
+ color: var(--tui-text-primary);
85
+ }
86
+ });
87
+ }
@@ -19,3 +19,33 @@
19
19
  --t-bg: var(--tui-background-accent-1-pressed);
20
20
  });
21
21
  }
22
+
23
+ [tuiAppearance][data-appearance='primary-destructive'] {
24
+ .transition(filter);
25
+
26
+ color: #fff;
27
+ background: var(--tui-status-negative);
28
+
29
+ .appearance-hover({
30
+ filter: saturate(1) brightness(1.3);
31
+ });
32
+
33
+ .appearance-active({
34
+ filter: saturate(0.8) brightness(1);
35
+ });
36
+ }
37
+
38
+ [tuiAppearance][data-appearance='primary-grayscale'] {
39
+ --tui-border-focus: #979797;
40
+
41
+ background: var(--tui-background-accent-opposite);
42
+ color: var(--tui-background-base);
43
+
44
+ .appearance-hover({
45
+ background: var(--tui-background-accent-opposite-hover);
46
+ });
47
+
48
+ .appearance-active({
49
+ background: var(--tui-background-accent-opposite-pressed);
50
+ });
51
+ }
@@ -1,7 +1,9 @@
1
1
  @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
2
 
3
3
  [tuiAppearance][data-appearance='secondary'],
4
- [tuiAppearance][data-appearance='flat'],
4
+ [tuiAppearance][data-appearance='secondary-destructive'],
5
+ [tuiAppearance][data-appearance='secondary-grayscale'],
6
+ /* TODO @deprecated remove in v5 */
5
7
  [tuiAppearance][data-appearance='destructive'] {
6
8
  background: var(--tui-background-neutral-1);
7
9
  color: var(--tui-text-action);
@@ -62,29 +64,16 @@
62
64
  }
63
65
  }
64
66
 
65
- [tuiAppearance][data-appearance='flat'],
66
- [tuiAppearance][data-appearance='flat']:invalid:not([data-mode]),
67
- [tuiAppearance][data-appearance='flat'][data-mode~='invalid'] {
68
- background: transparent;
69
- }
70
-
71
- [tuiAppearance][data-appearance='flat']:checked:not([data-mode]),
72
- [tuiAppearance][data-appearance='flat'][data-mode~='checked'] {
73
- background: var(--tui-background-neutral-1);
74
-
75
- .appearance-hover({
76
- background: var(--tui-background-neutral-1-hover);
77
- });
78
-
79
- .appearance-active({
80
- background: var(--tui-background-neutral-1-pressed);
81
- });
82
- }
83
-
67
+ [tuiAppearance][data-appearance='secondary-destructive'],
68
+ /* TODO @deprecated remove in v5 */
84
69
  [tuiAppearance][data-appearance='destructive'] {
85
70
  color: var(--tui-text-negative);
86
71
  }
87
72
 
73
+ [tuiAppearance][data-appearance='secondary-grayscale'] {
74
+ color: var(--tui-text-primary);
75
+ }
76
+
88
77
  // Overriding to darker colors for small items
89
78
  input[type='checkbox'][data-appearance='secondary'],
90
79
  input[type='radio'][data-appearance='secondary'] {
@@ -1,7 +1,9 @@
1
1
  @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
2
 
3
- [tuiAppearance][data-appearance='error'],
4
- [tuiAppearance][data-appearance='success'],
3
+ [tuiAppearance][data-appearance='error'], /* TODO @deprecated remove in v5 */
4
+ [tuiAppearance][data-appearance='success'], /* TODO @deprecated remove in v5 */
5
+ [tuiAppearance][data-appearance='negative'],
6
+ [tuiAppearance][data-appearance='positive'],
5
7
  [tuiAppearance][data-appearance='warning'],
6
8
  [tuiAppearance][data-appearance='info'],
7
9
  [tuiAppearance][data-appearance='neutral'] {
@@ -13,7 +15,8 @@
13
15
  }
14
16
  }
15
17
 
16
- [tuiAppearance][data-appearance='error'] {
18
+ [tuiAppearance][data-appearance='error'], /* TODO @deprecated remove in v5 */
19
+ [tuiAppearance][data-appearance='negative'] {
17
20
  --t-bg: var(--tui-status-negative-pale);
18
21
 
19
22
  &::before,
@@ -35,7 +38,8 @@
35
38
  }
36
39
  }
37
40
 
38
- [tuiAppearance][data-appearance='success'] {
41
+ [tuiAppearance][data-appearance='success'], /* TODO @deprecated remove in v5 */
42
+ [tuiAppearance][data-appearance='positive'] {
39
43
  --t-bg: var(--tui-status-positive-pale);
40
44
 
41
45
  &::before,
@@ -1,8 +1,8 @@
1
1
  @import 'appearance/accent.less';
2
+ @import 'appearance/action.less';
3
+ @import 'appearance/flat.less';
2
4
  @import 'appearance/floating.less';
3
5
  @import 'appearance/glass.less';
4
- @import 'appearance/icon.less';
5
- @import 'appearance/link.less';
6
6
  @import 'appearance/opposite.less';
7
7
  @import 'appearance/outline.less';
8
8
  @import 'appearance/primary.less';
@@ -14,36 +14,10 @@
14
14
  appearance: none;
15
15
  border-radius: inherit;
16
16
 
17
- &::after {
18
- .transition(~'box-shadow, color');
19
- .fullsize(absolute, inset);
20
-
21
- content: '';
22
- border-radius: inherit;
23
- border: 1px solid currentColor;
24
- pointer-events: none;
25
- color: transparent;
26
- }
27
-
28
- .wrapper-focus({
29
- &:after {
30
- border-width: 2px;
31
- color: var(--tui-border-focus);
32
- }
33
- });
34
-
35
17
  .wrapper-disabled({
36
18
  pointer-events: none;
37
19
  opacity: var(--tui-disabled-opacity);
38
20
  });
39
-
40
- // Temporary hide focus in Safari until we figure out a better approach
41
- .safari-only({
42
- :focus-visible &,
43
- &:focus-visible {
44
- --tui-border-focus: transparent !important;
45
- }
46
- });
47
21
  }
48
22
 
49
23
  [tuiWrapper][data-appearance='textfield'] {
@@ -51,11 +25,17 @@
51
25
 
52
26
  background: var(--tui-background-base);
53
27
  color: var(--tui-text-primary);
28
+ outline: none !important;
54
29
  box-shadow: 0 0.125rem 0.1875rem rgba(0, 0, 0, 0.1);
55
30
 
56
31
  &::after {
57
32
  .transition(color);
33
+ .fullsize(absolute, inset);
58
34
 
35
+ content: '';
36
+ border-radius: inherit;
37
+ border: 1px solid currentColor;
38
+ pointer-events: none;
59
39
  color: var(--tui-border-normal);
60
40
  }
61
41
 
@@ -67,7 +47,8 @@
67
47
  box-shadow: none;
68
48
 
69
49
  &:after {
70
- --tui-border-focus: var(--tui-background-accent-1);
50
+ border-width: 2px;
51
+ color: var(--tui-background-accent-1);
71
52
  }
72
53
  });
73
54
 
@@ -87,7 +68,6 @@
87
68
  .wrapper-invalid({
88
69
  &:after {
89
70
  color: var(--tui-text-negative);
90
- --tui-border-focus: var(--tui-status-negative);
91
71
  }
92
72
  });
93
73
  }
@@ -110,10 +90,12 @@
110
90
  border-radius: 0;
111
91
  background: transparent;
112
92
  color: var(--tui-text-primary);
93
+ outline: none !important;
113
94
 
114
95
  /* stylelint-disable meowtec/no-px */
115
96
  &::before,
116
97
  &[data-appearance='table']::after {
98
+ content: '';
117
99
  position: fixed;
118
100
  top: -0.03125rem;
119
101
  left: -1px;
@@ -125,7 +107,6 @@
125
107
  &::before {
126
108
  .transition(background);
127
109
 
128
- content: '';
129
110
  z-index: -1;
130
111
  background-repeat: no-repeat;
131
112
  background-position: top right;
@@ -133,7 +114,9 @@
133
114
  }
134
115
 
135
116
  &[data-appearance='table']::after {
136
- border-width: 1px;
117
+ border: 1px solid currentColor;
118
+ border-radius: inherit;
119
+ pointer-events: none;
137
120
  color: var(--tui-border-normal);
138
121
  }
139
122
 
@@ -194,40 +177,18 @@ table [tuiWrapper][data-appearance='table'] {
194
177
  }
195
178
 
196
179
  [tuiWrapper][data-appearance='icon'] {
197
- .transition(opacity);
198
-
199
- color: var(--tui-text-primary);
200
- opacity: 0.5;
180
+ color: var(--tui-text-tertiary);
201
181
 
202
182
  [tuiWrapper]:not([data-state='readonly']):hover .t-textfield-icon &:not([data-state='disabled']) {
203
- opacity: 0.65;
183
+ color: var(--tui-text-secondary);
204
184
  }
205
185
 
206
186
  .wrapper-hover({
207
- opacity: 0.65;
187
+ color: var(--tui-text-secondary);
208
188
  });
209
189
 
210
190
  .wrapper-active({
211
- opacity: 1;
212
- });
213
-
214
- .wrapper-disabled({
215
- opacity: calc(0.5 * var(--tui-disabled-opacity));
216
- });
217
- }
218
-
219
- [tuiTheme='dark'] [tuiWrapper][data-appearance='icon'],
220
- [tuiTheme='dark'][tuiWrapper][data-appearance='icon'] {
221
- [tuiWrapper]:not([data-state='readonly']):hover .t-textfield-icon &:not([data-state='disabled']) {
222
- opacity: 1;
223
- }
224
-
225
- .wrapper-focus({
226
- --tui-border-focus: var(--tui-background-base);
227
- });
228
-
229
- .wrapper-hover({
230
- opacity: 1;
191
+ color: var(--tui-text-primary);
231
192
  });
232
193
  }
233
194
 
@@ -235,18 +196,15 @@ tui-primitive-textfield:hover:not(._disabled) [tuiAppearance][data-appearance='i
235
196
  tui-textarea:hover:not(._disabled) [tuiAppearance][data-appearance='icon'],
236
197
  tui-input-tag:hover:not(._disabled) [tuiAppearance][data-appearance='icon'] {
237
198
  color: var(--tui-text-secondary);
238
- }
239
199
 
240
- [tuiTheme='dark'] tui-primitive-textfield:hover:not(._disabled) [tuiAppearance][data-appearance='icon'],
241
- [tuiTheme='dark'] tui-textarea:hover:not(._disabled) [tuiAppearance][data-appearance='icon'],
242
- [tuiTheme='dark'] tui-input-tag:hover:not(._disabled) [tuiAppearance][data-appearance='icon'],
243
- tui-primitive-textfield:hover:not(._disabled)[tuiTheme='dark'] [tuiAppearance][data-appearance='icon'],
244
- tui-textarea:hover:not(._disabled)[tuiTheme='dark'] [tuiAppearance][data-appearance='icon'],
245
- tui-input-tag:hover:not(._disabled)[tuiTheme='dark'] [tuiAppearance][data-appearance='icon'] {
246
- color: var(--tui-text-primary);
200
+ .wrapper-active({
201
+ color: var(--tui-text-primary);
202
+ });
247
203
  }
248
204
 
249
205
  [tuiWrapper][data-appearance='none'] {
206
+ outline: none;
207
+
250
208
  &::after {
251
209
  border: none;
252
210
  }
package/tokens/i18n.d.ts CHANGED
@@ -6,6 +6,10 @@ export declare const TUI_MONTHS: import("@angular/core").InjectionToken<import("
6
6
  * i18n 'close' word
7
7
  */
8
8
  export declare const TUI_CLOSE_WORD: import("@angular/core").InjectionToken<import("rxjs").Observable<string>>;
9
+ /**
10
+ * i18n 'clear' word
11
+ */
12
+ export declare const TUI_CLEAR_WORD: import("@angular/core").InjectionToken<import("rxjs").Observable<string>>;
9
13
  /**
10
14
  * i18n 'Nothing found' message
11
15
  */
@@ -1,4 +1,4 @@
1
1
  import type { AnimationOptions } from '@angular/animations';
2
2
  export declare const TUI_ANIMATIONS_DEFAULT_DURATION = 300;
3
- export declare function tuiToAnimationOptions(speed: number): AnimationOptions;
3
+ export declare function tuiToAnimationOptions(speed: number, easing?: string): AnimationOptions;
4
4
  export declare function tuiGetDuration(speed: number): number;
@@ -1,38 +0,0 @@
1
- @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
-
3
- [tuiAppearance][data-appearance='icon'] {
4
- color: var(--tui-text-tertiary);
5
-
6
- .appearance-hover({
7
- color: var(--tui-text-secondary);
8
- });
9
-
10
- .appearance-active({
11
- color: var(--tui-text-primary);
12
- });
13
- }
14
-
15
- // Icons with the directive
16
- [tuiAppearance][data-appearance='whiteblock'],
17
- [tuiAppearance][data-appearance='floating'] {
18
- &::before,
19
- &::after {
20
- .transition(color);
21
-
22
- color: var(--tui-text-tertiary);
23
- }
24
-
25
- .appearance-hover({
26
- &:before,
27
- &:after {
28
- color: var(--tui-text-secondary);
29
- }
30
- });
31
-
32
- .appearance-active({
33
- &:before,
34
- &:after {
35
- color: var(--tui-text-primary);
36
- }
37
- });
38
- }