@db-ux/core-components 2.1.1 → 2.2.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 (60) hide show
  1. package/build/components/accordion/accordion.css +1 -0
  2. package/build/components/accordion-item/accordion-item.css +2 -1
  3. package/build/components/accordion-item/accordion-item.scss +1 -1
  4. package/build/components/badge/badge.css +1 -0
  5. package/build/components/brand/brand.css +1 -0
  6. package/build/components/button/button.css +2 -1
  7. package/build/components/button/button.scss +1 -1
  8. package/build/components/card/card.css +1 -0
  9. package/build/components/checkbox/checkbox.css +2 -1
  10. package/build/components/custom-select/custom-select.css +21 -46
  11. package/build/components/custom-select/custom-select.scss +2 -50
  12. package/build/components/custom-select-dropdown/custom-select-dropdown.css +1 -0
  13. package/build/components/custom-select-form-field/custom-select-form-field.css +1 -0
  14. package/build/components/custom-select-list/custom-select-list.css +1 -0
  15. package/build/components/custom-select-list-item/custom-select-list-item.css +1 -0
  16. package/build/components/divider/divider.css +1 -0
  17. package/build/components/drawer/drawer.css +4 -4
  18. package/build/components/header/header.css +1 -0
  19. package/build/components/icon/icon.css +1 -0
  20. package/build/components/infotext/infotext.css +1 -0
  21. package/build/components/input/input.css +14 -4
  22. package/build/components/link/link.css +2 -1
  23. package/build/components/navigation/navigation.css +1 -7
  24. package/build/components/navigation/navigation.scss +0 -10
  25. package/build/components/navigation-item/navigation-item.css +2 -1
  26. package/build/components/navigation-item/navigation-item.scss +1 -1
  27. package/build/components/notification/notification.css +2 -1
  28. package/build/components/page/page.css +1 -0
  29. package/build/components/popover/popover.css +80 -82
  30. package/build/components/popover/popover.scss +0 -1
  31. package/build/components/radio/radio.css +2 -1
  32. package/build/components/section/section.css +1 -0
  33. package/build/components/select/select.css +14 -4
  34. package/build/components/stack/stack-web-component.css +1 -0
  35. package/build/components/stack/stack.css +1 -0
  36. package/build/components/switch/switch.css +2 -1
  37. package/build/components/tab-item/tab-item.css +2 -1
  38. package/build/components/tab-item/tab-item.scss +1 -1
  39. package/build/components/tab-list/tab-list.css +7 -0
  40. package/build/components/tab-panel/tab-panel.css +1 -0
  41. package/build/components/tabs/tabs.css +1 -0
  42. package/build/components/tag/tag.css +2 -1
  43. package/build/components/tag/tag.scss +1 -1
  44. package/build/components/textarea/textarea.css +27 -8
  45. package/build/components/textarea/textarea.scss +16 -9
  46. package/build/components/tooltip/tooltip.css +88 -89
  47. package/build/components/tooltip/tooltip.scss +13 -13
  48. package/build/styles/absolute.css +7 -7
  49. package/build/styles/dialog-init.css +1 -1
  50. package/build/styles/dialog-init.scss +12 -7
  51. package/build/styles/index.css +7 -7
  52. package/build/styles/internal/_component.scss +0 -3
  53. package/build/styles/internal/_form-components.scss +16 -5
  54. package/build/styles/internal/_link-components.scss +1 -1
  55. package/build/styles/internal/_popover-component.scss +69 -106
  56. package/build/styles/internal/_scrollbar.scss +9 -0
  57. package/build/styles/relative.css +7 -7
  58. package/build/styles/rollup.css +7 -7
  59. package/build/styles/webpack.css +7 -7
  60. package/package.json +3 -3
@@ -7,9 +7,6 @@ $min-mobile-header-height: calc(
7
7
  #{variables.$db-sizing-md} + 2 * #{variables.$db-spacing-fixed-xs}
8
8
  );
9
9
 
10
- $default-disabled: 0.4;
11
- $placeholder-disabled: 0.75;
12
-
13
10
  $component-border: variables.$db-border-width-3xs solid
14
11
  colors.$db-adaptive-on-bg-basic-emphasis-60-default;
15
12
 
@@ -79,7 +79,7 @@ $db-min-inline-size: var(
79
79
  > label {
80
80
  @extend %db-overwrite-font-size-md;
81
81
 
82
- opacity: component.$placeholder-disabled;
82
+ opacity: variables.$db-opacity-xl;
83
83
  position: absolute;
84
84
  z-index: 2;
85
85
  inset-block-start: calc(
@@ -138,7 +138,7 @@ $db-min-inline-size: var(
138
138
  }
139
139
 
140
140
  @include placeholder-content($selector) {
141
- opacity: component.$placeholder-disabled;
141
+ opacity: variables.$db-opacity-xl;
142
142
  font-family: var(--db-font-family-sans);
143
143
  font-style: italic;
144
144
 
@@ -332,7 +332,7 @@ $input-valid-types:
332
332
  }
333
333
 
334
334
  @include placeholder-content($selector) {
335
- opacity: component.$placeholder-disabled;
335
+ opacity: variables.$db-opacity-xl;
336
336
  font-family: var(--db-font-family-sans);
337
337
  font-style: italic;
338
338
  }
@@ -363,6 +363,17 @@ $input-valid-types:
363
363
  background-color: colors.$db-adaptive-bg-basic-transparent-hovered;
364
364
  }
365
365
 
366
+ &:is(input, textarea) {
367
+ /* see https://developer.mozilla.org/en-US/docs/Web/CSS/field-sizing */
368
+ &[data-field-sizing="content"] {
369
+ field-sizing: content;
370
+ }
371
+
372
+ &[data-field-sizing="fixed"] {
373
+ field-sizing: fixed;
374
+ }
375
+ }
376
+
366
377
  &:is(input, textarea):not(:disabled):read-only {
367
378
  background-color: var(
368
379
  --db-textarea-read-only,
@@ -401,7 +412,7 @@ $input-valid-types:
401
412
  #{$selector}[aria-disabled="true"]
402
413
  ) {
403
414
  // Decided against cursor: not-allowed, compare to e.g. https://phabricator.wikimedia.org/T121960
404
- opacity: component.$default-disabled;
415
+ opacity: variables.$db-opacity-md;
405
416
  pointer-events: none;
406
417
  }
407
418
 
@@ -484,7 +495,7 @@ $input-valid-types:
484
495
  @include set-required-label(input);
485
496
 
486
497
  &:has(input:disabled) {
487
- opacity: component.$default-disabled;
498
+ opacity: variables.$db-opacity-md;
488
499
  }
489
500
 
490
501
  &:is(label),
@@ -56,7 +56,7 @@
56
56
 
57
57
  // "disabled" links
58
58
  &[aria-disabled="true"] {
59
- opacity: component.$default-disabled;
59
+ opacity: variables.$db-opacity-md;
60
60
  pointer-events: none;
61
61
  }
62
62
  }
@@ -1,36 +1,24 @@
1
1
  @use "@db-ux/core-foundations/build/styles/variables";
2
2
  @use "@db-ux/core-foundations/build/styles/colors";
3
3
  @use "@db-ux/core-foundations/build/styles/animation";
4
+ @use "@db-ux/core-foundations/build/styles/screen-sizes";
4
5
  @use "component";
5
6
 
6
- $popover-gap-size: var(--db-popover-distance);
7
- $popover-inset: calc(100% + #{$popover-gap-size} * var(--db-popover-gap, 0));
8
- $popover-gap-inset: calc(-1 * #{$popover-gap-size});
9
-
10
7
  %popover-center {
11
- &:not([data-placement]),
12
- &[data-placement="bottom"]:not([data-outside-vy]),
13
- &[data-placement="top"]:not([data-outside-vy]),
14
- &:is([data-outside-vy="bottom"], [data-outside-vy="top"]):not(
15
- [data-outside-vx],
16
- [data-placement$="end"],
17
- [data-placement$="start"]
18
- ) {
8
+ &:not([data-placement], [data-corrected-placement]),
9
+ &[data-placement="bottom"]:not([data-corrected-placement]),
10
+ &[data-placement="top"]:not([data-corrected-placement]),
11
+ &[data-corrected-placement="bottom"],
12
+ &[data-corrected-placement="top"] {
19
13
  --db-popover-center-x: -50%;
20
14
 
21
15
  inset-inline-start: 50%;
22
16
  }
23
17
 
24
- &[data-placement="left"]:not([data-outside-vx]),
25
- &[data-placement="right"]:not([data-outside-vx]),
26
- &[data-outside-vx="left"]:not(
27
- [data-placement$="end"],
28
- [data-placement$="start"]
29
- ),
30
- &[data-outside-vx="right"]:not(
31
- [data-placement$="end"],
32
- [data-placement$="start"]
33
- ) {
18
+ &[data-corrected-placement="left"],
19
+ &[data-corrected-placement="right"],
20
+ &[data-placement="left"]:not([data-corrected-placement]),
21
+ &[data-placement="right"]:not([data-corrected-placement]) {
34
22
  --db-popover-center-y: -50%;
35
23
 
36
24
  inset-block-start: 50%;
@@ -46,88 +34,50 @@ $popover-gap-inset: calc(-1 * #{$popover-gap-size});
46
34
  position: absolute;
47
35
  }
48
36
 
49
- &[data-gap="true"] {
50
- --db-popover-gap: 1;
51
- --db-popover-distance: #{variables.$db-spacing-fixed-md};
52
- }
53
-
54
- &:is(.db-tooltip) {
55
- --db-popover-distance: #{variables.$db-spacing-fixed-sm};
56
- }
57
-
58
- &[data-placement^="bottom"]:not([data-outside-vy]),
59
- &[data-placement^="top"]:not([data-outside-vy]),
60
- &[data-outside-vy="bottom"]:not([data-outside-vx]),
61
- &[data-outside-vy="top"]:not([data-outside-vx]) {
62
- &[data-placement$="end"] {
63
- inset-inline-end: 0;
64
- }
65
-
66
- &[data-placement$="start"] {
67
- inset-inline-start: 0;
68
- }
69
- }
70
-
71
- &[data-placement^="left"]:not([data-outside-vx]),
72
- &[data-placement^="right"]:not([data-outside-vx]),
73
- &[data-outside-vx="left"],
74
- &[data-outside-vx="right"] {
75
- &[data-placement$="end"] {
76
- inset-block-end: 0;
77
- }
78
-
79
- &[data-placement$="start"] {
80
- inset-block-start: 0;
37
+ &:not([data-placement], [data-corrected-placement]),
38
+ &[data-placement^="bottom"]:not([data-corrected-placement]),
39
+ &[data-corrected-placement^="bottom"] {
40
+ &::before {
41
+ inset-block-end: 100%;
42
+ inset-inline: 0;
43
+ block-size: var(--db-popover-distance);
81
44
  }
82
45
  }
83
46
 
84
- &:not([data-placement], [data-outside-vy]),
85
- &[data-placement^="bottom"]:not([data-outside-vy]),
86
- &[data-outside-vy="top"]:not([data-outside-vx]) {
87
- inset-block-start: $popover-inset;
88
-
47
+ &[data-placement^="top"]:not([data-corrected-placement]),
48
+ &[data-corrected-placement^="top"] {
89
49
  &::before {
90
- inset-inline-start: 0;
91
- inline-size: 100%;
92
- block-size: $popover-gap-size;
93
- inset-block-start: $popover-gap-inset;
50
+ inset-block-start: 100%;
51
+ inset-inline: 0;
52
+ block-size: var(--db-popover-distance);
94
53
  }
95
54
  }
96
55
 
97
- &[data-placement^="top"]:not([data-outside-vy]),
98
- &[data-outside-vy="bottom"]:not([data-outside-vx]) {
99
- inset-block-end: $popover-inset;
100
-
56
+ &[data-placement^="right"]:not([data-corrected-placement]),
57
+ &[data-corrected-placement^="right"] {
101
58
  &::before {
102
- inset-inline-end: 0;
103
- inline-size: 100%;
104
- block-size: $popover-gap-size;
105
- inset-block-end: $popover-gap-inset;
59
+ inset-inline-end: 100%;
60
+ inset-block: 0;
61
+ inline-size: var(--db-popover-distance);
106
62
  }
107
63
  }
108
64
 
109
- &[data-placement^="left"]:not([data-outside-vx]),
110
- &[data-outside-vx="right"] {
111
- inset-inline-end: $popover-inset;
112
-
65
+ &[data-placement^="left"]:not([data-corrected-placement]),
66
+ &[data-corrected-placement^="left"] {
113
67
  &::before {
114
- inset-block-end: 0;
115
- block-size: 100%;
116
- inline-size: $popover-gap-size;
117
- inset-inline-end: $popover-gap-inset;
68
+ inset-inline-start: 100%;
69
+ inset-block: 0;
70
+ inline-size: var(--db-popover-distance);
118
71
  }
119
72
  }
120
73
 
121
- &[data-placement^="right"]:not([data-outside-vx]),
122
- &[data-outside-vx="left"] {
123
- inset-inline-start: $popover-inset;
74
+ &[data-gap="true"] {
75
+ --db-popover-gap: 1;
76
+ --db-popover-distance: #{variables.$db-spacing-fixed-md};
77
+ }
124
78
 
125
- &::before {
126
- inset-block-start: 0;
127
- block-size: 100%;
128
- inline-size: $popover-gap-size;
129
- inset-inline-start: $popover-gap-inset;
130
- }
79
+ &:is(.db-tooltip) {
80
+ --db-popover-distance: #{variables.$db-spacing-fixed-sm};
131
81
  }
132
82
  }
133
83
 
@@ -151,47 +101,58 @@ $popover-gap-inset: calc(-1 * #{$popover-gap-size});
151
101
  }
152
102
 
153
103
  &[data-delay="fast"] {
154
- animation-delay: calc(
155
- #{variables.$db-transition-duration-medium}
156
- );
104
+ animation-delay: variables.$db-transition-duration-medium;
105
+ }
106
+
107
+ @include screen-sizes.screen-min-max(
108
+ (
109
+ max: "md"
110
+ )
111
+ ) {
112
+ // If we are in mobile and have no delay set we force some delay to avoid layout shift
113
+ &:not([data-delay]) {
114
+ animation-delay: variables.$db-transition-duration-medium;
115
+ }
157
116
  }
158
117
  }
159
118
  }
160
119
  }
161
120
 
162
121
  %show-popover {
163
- display: revert;
122
+ visibility: var(--db-show-popover-visibility, visible);
164
123
 
165
- &:not([data-placement], [data-outside-vy]),
166
- &[data-placement^="bottom"]:not([data-outside-vy]),
167
- &[data-outside-vy="top"]:not([data-outside-vx]) {
124
+ &:not([data-placement], [data-corrected-placement]),
125
+ &[data-placement^="bottom"]:not([data-corrected-placement]),
126
+ &[data-corrected-placement^="bottom"] {
168
127
  --db-popover-translate-y: -25%;
169
128
 
170
129
  @include get-popover-show();
171
130
  }
172
131
 
173
- &[data-placement^="top"]:not([data-outside-vy]),
174
- &[data-outside-vy="bottom"]:not([data-outside-vx]) {
132
+ &[data-placement^="top"]:not([data-corrected-placement]),
133
+ &[data-corrected-placement^="top"] {
175
134
  --db-popover-translate-y: 25%;
176
135
 
177
136
  @include get-popover-show();
178
137
  }
179
138
 
180
- &[data-placement^="right"]:not([data-outside-vx]),
181
- &[data-outside-vx="left"] {
139
+ &[data-placement^="right"]:not([data-corrected-placement]),
140
+ &[data-corrected-placement^="right"] {
182
141
  --db-popover-translate-x: -25%;
183
142
 
184
143
  @include get-popover-show();
185
144
  }
186
145
 
187
- &[data-placement^="left"]:not([data-outside-vx]),
188
- &[data-outside-vx="right"] {
146
+ &[data-placement^="left"]:not([data-corrected-placement]),
147
+ &[data-corrected-placement^="left"] {
189
148
  --db-popover-translate-x: 25%;
190
149
 
191
150
  @include get-popover-show();
192
151
  }
193
152
  }
194
153
 
154
+ $max-mobile-size: calc(100vw - 2 * #{variables.$db-spacing-fixed-md});
155
+
195
156
  %default-popover {
196
157
  @extend %default-card;
197
158
  @extend %popover-placement;
@@ -199,15 +160,17 @@ $popover-gap-inset: calc(-1 * #{$popover-gap-size});
199
160
  position: absolute;
200
161
  background-color: colors.$db-adaptive-bg-basic-level-1-default;
201
162
  box-shadow: variables.$db-elevation-md;
202
- display: none;
163
+ visibility: hidden;
203
164
  z-index: 1337;
204
- white-space: nowrap;
165
+ // revert this if popover is included in button
166
+ white-space: normal;
167
+ max-inline-size: $max-mobile-size;
168
+ block-size: fit-content;
169
+ inline-size: fit-content;
205
170
 
206
171
  &[data-width="fixed"] {
207
172
  inline-size: max-content;
208
- max-inline-size: variables.$db-sizing-3xl;
209
- // revert this if popover is included in button
210
- white-space: normal;
173
+ max-inline-size: min(#{variables.$db-sizing-3xl}, #{$max-mobile-size});
211
174
  text-align: initial;
212
175
  }
213
176
  }
@@ -7,6 +7,15 @@
7
7
  $scrollbar-width: helpers.px-to-rem(8);
8
8
 
9
9
  %scrollbar {
10
+ &[data-field-sizing="content"] {
11
+ &:is([data-hide-resizer="true"], [data-resize="none"]) {
12
+ @supports (field-sizing: content) {
13
+ /* We don't show a scrollbar if we use field-sizing: content and no resizer is available */
14
+ scrollbar-width: none;
15
+ }
16
+ }
17
+ }
18
+
10
19
  &::-webkit-scrollbar {
11
20
  @extend %default-transition;
12
21