@db-ux/core-components 4.10.2 → 4.11.1

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 (47) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/build/components/checkbox/checkbox.css +1 -1
  3. package/build/components/custom-button/custom-button.css +0 -5
  4. package/build/components/custom-select-list-item/custom-select-list-item.css +0 -5
  5. package/build/components/infotext/infotext.css +4 -1
  6. package/build/components/infotext/infotext.scss +3 -1
  7. package/build/components/input/input.css +0 -5
  8. package/build/components/link/link.css +4 -2
  9. package/build/components/navigation/navigation.css +1 -1
  10. package/build/components/notification/notification.css +4 -2
  11. package/build/components/radio/radio.css +1 -1
  12. package/build/components/switch/switch.css +1 -1
  13. package/build/components/tab-item/tab-item.css +0 -5
  14. package/build/components/tab-list/tab-list.css +4 -2
  15. package/build/components/table/table.css +591 -0
  16. package/build/components/table/table.scss +293 -0
  17. package/build/components/table-body/table-body.css +8 -0
  18. package/build/components/table-body/table-body.scss +5 -0
  19. package/build/components/table-caption/table-caption.css +3 -0
  20. package/build/components/table-caption/table-caption.scss +3 -0
  21. package/build/components/table-data-cell/table-data-cell.css +144 -0
  22. package/build/components/table-data-cell/table-data-cell.scss +5 -0
  23. package/build/components/table-footer/table-footer.css +8 -0
  24. package/build/components/table-footer/table-footer.scss +5 -0
  25. package/build/components/table-head/table-head.css +19 -0
  26. package/build/components/table-head/table-head.scss +17 -0
  27. package/build/components/table-header-cell/table-header-cell.css +148 -0
  28. package/build/components/table-header-cell/table-header-cell.scss +9 -0
  29. package/build/components/table-row/table-row.css +230 -0
  30. package/build/components/table-row/table-row.scss +116 -0
  31. package/build/components/tabs/tabs.css +1 -1
  32. package/build/components/tag/tag.css +4 -2
  33. package/build/components/textarea/textarea.css +4 -2
  34. package/build/styles/absolute.css +8 -8
  35. package/build/styles/bundle.css +8 -8
  36. package/build/styles/component-animations.css +1 -1
  37. package/build/styles/index.css +7 -7
  38. package/build/styles/index.scss +8 -0
  39. package/build/styles/internal/_custom-elements.scss +3 -1
  40. package/build/styles/internal/_db-puls.scss +2 -2
  41. package/build/styles/internal/_form-components.scss +1 -1
  42. package/build/styles/internal/_table-components.scss +64 -0
  43. package/build/styles/relative.css +8 -8
  44. package/build/styles/rollup.css +8 -8
  45. package/build/styles/wc-workarounds.css +1 -1
  46. package/build/styles/webpack.css +8 -8
  47. package/package.json +8 -8
@@ -0,0 +1,230 @@
1
+ /* stylelint-disable-next-line scss/dollar-variable-colon-space-after */
2
+ /* stylelint-disable-next-line scss/dollar-variable-colon-space-after */
3
+ /* Variants for adaptive components like input, select, notification, ... */
4
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked) {
5
+ --db-adaptive-bg-basic-level-1-default: var(
6
+ --db-informational-bg-basic-level-1-default
7
+ );
8
+ --db-adaptive-bg-basic-level-1-hovered: var(
9
+ --db-informational-bg-basic-level-1-hovered
10
+ );
11
+ --db-adaptive-bg-basic-level-1-pressed: var(
12
+ --db-informational-bg-basic-level-1-pressed
13
+ );
14
+ --db-adaptive-bg-basic-level-2-default: var(
15
+ --db-informational-bg-basic-level-2-default
16
+ );
17
+ --db-adaptive-bg-basic-level-2-hovered: var(
18
+ --db-informational-bg-basic-level-2-hovered
19
+ );
20
+ --db-adaptive-bg-basic-level-2-pressed: var(
21
+ --db-informational-bg-basic-level-2-pressed
22
+ );
23
+ --db-adaptive-bg-basic-level-3-default: var(
24
+ --db-informational-bg-basic-level-3-default
25
+ );
26
+ --db-adaptive-bg-basic-level-3-hovered: var(
27
+ --db-informational-bg-basic-level-3-hovered
28
+ );
29
+ --db-adaptive-bg-basic-level-3-pressed: var(
30
+ --db-informational-bg-basic-level-3-pressed
31
+ );
32
+ --db-adaptive-bg-basic-transparent-full-default: var(
33
+ --db-informational-bg-basic-transparent-full-default
34
+ );
35
+ --db-adaptive-bg-basic-transparent-semi-default: var(
36
+ --db-informational-bg-basic-transparent-semi-default
37
+ );
38
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
39
+ --db-informational-bg-basic-transparent-full-hovered
40
+ );
41
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
42
+ --db-informational-bg-basic-transparent-full-pressed
43
+ );
44
+ --db-adaptive-bg-basic-transparent-semi-hovered: var(
45
+ --db-informational-bg-basic-transparent-semi-hovered
46
+ );
47
+ --db-adaptive-bg-basic-transparent-semi-pressed: var(
48
+ --db-informational-bg-basic-transparent-semi-pressed
49
+ );
50
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
51
+ --db-informational-on-bg-basic-emphasis-100-default
52
+ );
53
+ --db-adaptive-on-bg-basic-emphasis-100-hovered: var(
54
+ --db-informational-on-bg-basic-emphasis-100-hovered
55
+ );
56
+ --db-adaptive-on-bg-basic-emphasis-100-pressed: var(
57
+ --db-informational-on-bg-basic-emphasis-100-pressed
58
+ );
59
+ --db-adaptive-on-bg-basic-emphasis-90-default: var(
60
+ --db-informational-on-bg-basic-emphasis-90-default
61
+ );
62
+ --db-adaptive-on-bg-basic-emphasis-90-hovered: var(
63
+ --db-informational-on-bg-basic-emphasis-90-hovered
64
+ );
65
+ --db-adaptive-on-bg-basic-emphasis-90-pressed: var(
66
+ --db-informational-on-bg-basic-emphasis-90-pressed
67
+ );
68
+ --db-adaptive-on-bg-basic-emphasis-80-default: var(
69
+ --db-informational-on-bg-basic-emphasis-80-default
70
+ );
71
+ --db-adaptive-on-bg-basic-emphasis-80-hovered: var(
72
+ --db-informational-on-bg-basic-emphasis-80-hovered
73
+ );
74
+ --db-adaptive-on-bg-basic-emphasis-80-pressed: var(
75
+ --db-informational-on-bg-basic-emphasis-80-pressed
76
+ );
77
+ --db-adaptive-on-bg-basic-emphasis-70-default: var(
78
+ --db-informational-on-bg-basic-emphasis-70-default
79
+ );
80
+ --db-adaptive-on-bg-basic-emphasis-70-hovered: var(
81
+ --db-informational-on-bg-basic-emphasis-70-hovered
82
+ );
83
+ --db-adaptive-on-bg-basic-emphasis-70-pressed: var(
84
+ --db-informational-on-bg-basic-emphasis-70-pressed
85
+ );
86
+ --db-adaptive-on-bg-basic-emphasis-60-default: var(
87
+ --db-informational-on-bg-basic-emphasis-60-default
88
+ );
89
+ --db-adaptive-on-bg-basic-emphasis-50-default: var(
90
+ --db-informational-on-bg-basic-emphasis-50-default
91
+ );
92
+ --db-adaptive-bg-inverted-contrast-max-default: var(
93
+ --db-informational-bg-inverted-contrast-max-default
94
+ );
95
+ --db-adaptive-bg-inverted-contrast-max-hovered: var(
96
+ --db-informational-bg-inverted-contrast-max-hovered
97
+ );
98
+ --db-adaptive-bg-inverted-contrast-max-pressed: var(
99
+ --db-informational-bg-inverted-contrast-max-pressed
100
+ );
101
+ --db-adaptive-bg-inverted-contrast-high-default: var(
102
+ --db-informational-bg-inverted-contrast-high-default
103
+ );
104
+ --db-adaptive-bg-inverted-contrast-high-hovered: var(
105
+ --db-informational-bg-inverted-contrast-high-hovered
106
+ );
107
+ --db-adaptive-bg-inverted-contrast-high-pressed: var(
108
+ --db-informational-bg-inverted-contrast-high-pressed
109
+ );
110
+ --db-adaptive-bg-inverted-contrast-low-default: var(
111
+ --db-informational-bg-inverted-contrast-low-default
112
+ );
113
+ --db-adaptive-bg-inverted-contrast-low-hovered: var(
114
+ --db-informational-bg-inverted-contrast-low-hovered
115
+ );
116
+ --db-adaptive-bg-inverted-contrast-low-pressed: var(
117
+ --db-informational-bg-inverted-contrast-low-pressed
118
+ );
119
+ --db-adaptive-on-bg-inverted-default: var(
120
+ --db-informational-on-bg-inverted-default
121
+ );
122
+ --db-adaptive-on-bg-inverted-hovered: var(
123
+ --db-informational-on-bg-inverted-hovered
124
+ );
125
+ --db-adaptive-on-bg-inverted-pressed: var(
126
+ --db-informational-on-bg-inverted-pressed
127
+ );
128
+ --db-adaptive-origin-default: var(--db-informational-origin-default);
129
+ --db-adaptive-origin-hovered: var(--db-informational-origin-hovered);
130
+ --db-adaptive-origin-pressed: var(--db-informational-origin-pressed);
131
+ --db-adaptive-on-origin-default: var(
132
+ --db-informational-on-origin-default
133
+ );
134
+ --db-adaptive-bg-vibrant-default: var(
135
+ --db-informational-bg-vibrant-default
136
+ );
137
+ --db-adaptive-bg-vibrant-hovered: var(
138
+ --db-informational-bg-vibrant-hovered
139
+ );
140
+ --db-adaptive-bg-vibrant-pressed: var(
141
+ --db-informational-bg-vibrant-pressed
142
+ );
143
+ --db-adaptive-on-bg-vibrant-default: var(
144
+ --db-informational-on-bg-vibrant-default
145
+ );
146
+ --db-adaptive-on-bg-vibrant-hovered: var(
147
+ --db-informational-on-bg-vibrant-hovered
148
+ );
149
+ --db-adaptive-on-bg-vibrant-pressed: var(
150
+ --db-informational-on-bg-vibrant-pressed
151
+ );
152
+ }
153
+
154
+ .db-table-row[data-interactive=true]:not([data-disable-focus=true]):has(:is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):focus-visible)::after {
155
+ outline: var(--db-border-width-2xs) solid var(--db-focus-outline-color, var(--db-informational-on-bg-basic-emphasis-70-default));
156
+ outline-offset: var(--db-border-width-xs);
157
+ box-shadow: 0 0 0 var(--db-border-width-xs) var(--db-focus-box-shadow-bg-color, transparent);
158
+ }
159
+ .db-table-row[data-interactive=true]:not([data-disable-focus=true]):not([type=radio], [role=switch]):has(:is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):focus-visible)::after {
160
+ border-radius: var(--db-border-radius-xs);
161
+ }
162
+
163
+ .db-table-row {
164
+ display: var(--db-table-section-display, grid);
165
+ grid-template-columns: subgrid;
166
+ grid-column: 1/-1;
167
+ }
168
+
169
+ .db-table-row[data-interactive=true]::after, .db-table-row[data-interactive=true] :is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select))[data-icon-trailing]::before, .db-table-row[data-interactive=true] :is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):not([data-icon-trailing])::after {
170
+ content: "";
171
+ position: absolute;
172
+ inset: 0;
173
+ }
174
+
175
+ .db-table-row {
176
+ background-color: var(--db-adaptive-bg-basic-level-1-default);
177
+ }
178
+ .db-table-row[data-interactive=true] {
179
+ position: relative;
180
+ }
181
+ .db-table-row[data-interactive=true] td :not([data-table-row-trigger=true]) {
182
+ position: relative;
183
+ z-index: 1;
184
+ }
185
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked) {
186
+ background-color: var(--db-adaptive-bg-basic-level-2-default);
187
+ }
188
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked),
189
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked) span,
190
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked) p,
191
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked) a {
192
+ font-weight: bold;
193
+ }
194
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked):has(:is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):hover:not(:disabled,
195
+ [aria-disabled=true],
196
+ [tabindex="-1"])) {
197
+ cursor: var(--db-overwrite-cursor, pointer);
198
+ background-color: var(--db-adaptive-bg-basic-level-2-hovered);
199
+ }
200
+ .db-table-row[data-interactive=true]:has(input:is([type=radio], [type=checkbox]):is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):checked):has(:is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):active:not(:disabled,
201
+ [aria-disabled=true],
202
+ [tabindex="-1"])) {
203
+ cursor: var(--db-overwrite-cursor, pointer);
204
+ background-color: var(--db-adaptive-bg-basic-level-2-pressed);
205
+ }
206
+ .db-table-row[data-interactive=true]:has(:is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):hover:not(:disabled,
207
+ [aria-disabled=true],
208
+ [tabindex="-1"])) {
209
+ cursor: var(--db-overwrite-cursor, pointer);
210
+ background-color: var(--db-adaptive-bg-basic-level-2-hovered);
211
+ }
212
+ .db-table-row[data-interactive=true]:has(:is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):active:not(:disabled,
213
+ [aria-disabled=true],
214
+ [tabindex="-1"])) {
215
+ cursor: var(--db-overwrite-cursor, pointer);
216
+ background-color: var(--db-adaptive-bg-basic-level-2-pressed);
217
+ }
218
+ .db-table-row[data-interactive=true] :is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)) {
219
+ --db-tooltip-parent-position: static;
220
+ --db-focus-outline-color: transparent;
221
+ /* We set focus on complete row element, we remove it from interactive child with this trick */
222
+ /* stylelint-disable-next-line a11y/no-outline-none */
223
+ }
224
+ .db-table-row[data-interactive=true] :is([data-table-row-trigger=true]:is(button, input, textarea, summary, select, a[href], [tabindex]:not([tabindex="-1"])), [data-table-row-trigger=true] :is(input, textarea, select)):focus-visible {
225
+ outline: none;
226
+ }
227
+ .db-table-row[data-interactive=true]::after {
228
+ pointer-events: none;
229
+ z-index: 2;
230
+ }
@@ -0,0 +1,116 @@
1
+ @use "@db-ux/core-foundations/build/styles/variables";
2
+ @use "@db-ux/core-foundations/build/styles/colors";
3
+ @use "@db-ux/core-foundations/build/styles/helpers";
4
+ @use "./../../styles/internal/table-components";
5
+
6
+ $interactive-row-action: '[data-table-row-trigger="true"]';
7
+ $interactive-nested-child: "#{$interactive-row-action} :is(input, textarea, select)";
8
+ $interactive-child: ":is(#{$interactive-row-action}:is(#{helpers.$interactive-elements}),#{$interactive-nested-child})";
9
+
10
+ %full-absolute {
11
+ content: "";
12
+ position: absolute;
13
+ inset: 0;
14
+ }
15
+
16
+ @mixin table-row-interactive-checked {
17
+ &:has(
18
+ input:is([type="radio"], [type="checkbox"])#{$interactive-child}:checked
19
+ ) {
20
+ @content;
21
+ }
22
+ }
23
+
24
+ @mixin table-row-interactive-state($state: "hover") {
25
+ &:has(
26
+ #{$interactive-child}:#{$state}:not(
27
+ :disabled,
28
+ [aria-disabled="true"],
29
+ [tabindex="-1"]
30
+ )
31
+ ) {
32
+ cursor: helpers.$cursor-pointer;
33
+ @content;
34
+ }
35
+ }
36
+
37
+ .db-table-row {
38
+ @extend %table-section-grid;
39
+
40
+ background-color: colors.$db-adaptive-bg-basic-level-1-default;
41
+
42
+ &[data-interactive="true"] {
43
+ position: relative;
44
+
45
+ td :not(#{$interactive-row-action}) {
46
+ position: relative;
47
+ z-index: 1;
48
+ }
49
+
50
+ @include table-row-interactive-checked {
51
+ @extend %db-informational-variables;
52
+
53
+ background-color: colors.$db-adaptive-bg-basic-level-2-default;
54
+
55
+ &,
56
+ span,
57
+ p,
58
+ a {
59
+ font-weight: bold;
60
+ }
61
+
62
+ @include table-row-interactive-state {
63
+ background-color: colors.$db-adaptive-bg-basic-level-2-hovered;
64
+ }
65
+
66
+ @include table-row-interactive-state("active") {
67
+ background-color: colors.$db-adaptive-bg-basic-level-2-pressed;
68
+ }
69
+ }
70
+
71
+ @include table-row-interactive-state {
72
+ background-color: colors.$db-adaptive-bg-basic-level-2-hovered;
73
+ }
74
+
75
+ @include table-row-interactive-state("active") {
76
+ background-color: colors.$db-adaptive-bg-basic-level-2-pressed;
77
+ }
78
+
79
+ &:has(#{$interactive-child}:focus-visible) {
80
+ &::after {
81
+ @extend %focus-placeholder;
82
+ }
83
+ }
84
+
85
+ #{$interactive-child} {
86
+ // Reset some defaults
87
+ --db-tooltip-parent-position: static;
88
+ --db-focus-outline-color: transparent;
89
+
90
+ /* We set focus on complete row element, we remove it from interactive child with this trick */
91
+ /* stylelint-disable-next-line a11y/no-outline-none */
92
+ &:focus-visible {
93
+ outline: none;
94
+ }
95
+
96
+ &:not([data-icon-trailing]) {
97
+ &::after {
98
+ @extend %full-absolute;
99
+ }
100
+ }
101
+
102
+ &[data-icon-trailing] {
103
+ &::before {
104
+ @extend %full-absolute;
105
+ }
106
+ }
107
+ }
108
+
109
+ &::after {
110
+ @extend %full-absolute;
111
+
112
+ pointer-events: none; // Ignore pointer events to use high z-index to show focus above elements
113
+ z-index: 2;
114
+ }
115
+ }
116
+ }
@@ -27,7 +27,7 @@
27
27
  }
28
28
  @media (prefers-reduced-motion: no-preference) {
29
29
  .db-tabs .db-tab-item::after {
30
- transition: height var(--db-transition-duration-fast) var(--db-transition-timing-emotional), width var(--db-transition-duration-fast) var(--db-transition-timing-emotional);
30
+ transition: block-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional), inline-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional);
31
31
  }
32
32
  }
33
33
 
@@ -1,5 +1,7 @@
1
- .db-tag label, .db-tag a {
2
- transition: outline var(--db-transition-duration-extra-fast), border-color var(--db-transition-straight-emotional), background-color var(--db-transition-straight-emotional);
1
+ @media (prefers-reduced-motion: no-preference) {
2
+ .db-tag label, .db-tag a {
3
+ transition: outline var(--db-transition-duration-extra-fast), box-shadow var(--db-transition-duration-extra-fast), border-color var(--db-transition-straight-emotional), background-color var(--db-transition-straight-emotional);
4
+ }
3
5
  }
4
6
 
5
7
  @keyframes popover-animation {
@@ -73,8 +73,10 @@ input[type=radio]:checked) > label {
73
73
  display: none;
74
74
  }
75
75
 
76
- .db-textarea[data-variant=floating]:has(textarea:is(:focus-within, :not(:placeholder-shown)))::before, .db-textarea textarea::-webkit-scrollbar, .db-textarea textarea::-webkit-scrollbar-corner {
77
- transition: outline var(--db-transition-duration-extra-fast), border-color var(--db-transition-straight-emotional), background-color var(--db-transition-straight-emotional);
76
+ @media (prefers-reduced-motion: no-preference) {
77
+ .db-textarea[data-variant=floating]:has(textarea:is(:focus-within, :not(:placeholder-shown)))::before, .db-textarea textarea::-webkit-scrollbar, .db-textarea textarea::-webkit-scrollbar-corner {
78
+ transition: outline var(--db-transition-duration-extra-fast), box-shadow var(--db-transition-duration-extra-fast), border-color var(--db-transition-straight-emotional), background-color var(--db-transition-straight-emotional);
79
+ }
78
80
  }
79
81
 
80
82
  @keyframes popover-animation {