@db-ux/core-components 1.1.1 → 2.0.0-0-custom-select-16b8cce

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 (75) hide show
  1. package/README.md +1 -1
  2. package/build/assets/icons/LICENCES.json +6 -0
  3. package/build/assets/icons/circular_arrows.svg +1 -0
  4. package/build/assets/icons/fonts/all/db-ux.woff2 +0 -0
  5. package/build/assets/icons/fonts/default/db-ux.woff2 +0 -0
  6. package/build/assets/icons/fonts/default_12/db-ux.woff2 +0 -0
  7. package/build/assets/icons/fonts/default_14/db-ux.woff2 +0 -0
  8. package/build/assets/icons/fonts/default_16/db-ux.woff2 +0 -0
  9. package/build/assets/icons/fonts/default_20/db-ux.woff2 +0 -0
  10. package/build/assets/icons/fonts/default_24/db-ux.woff2 +0 -0
  11. package/build/assets/icons/fonts/default_28/db-ux.woff2 +0 -0
  12. package/build/assets/icons/fonts/default_32/db-ux.woff2 +0 -0
  13. package/build/assets/icons/fonts/default_48/db-ux.woff2 +0 -0
  14. package/build/assets/icons/fonts/default_64/db-ux.woff2 +0 -0
  15. package/build/assets/icons/fonts/filled/db-ux.woff2 +0 -0
  16. package/build/assets/icons/fonts/filled_12/db-ux.woff2 +0 -0
  17. package/build/assets/icons/fonts/filled_14/db-ux.woff2 +0 -0
  18. package/build/assets/icons/fonts/filled_16/db-ux.woff2 +0 -0
  19. package/build/assets/icons/fonts/filled_20/db-ux.woff2 +0 -0
  20. package/build/assets/icons/fonts/filled_24/db-ux.woff2 +0 -0
  21. package/build/assets/icons/fonts/filled_28/db-ux.woff2 +0 -0
  22. package/build/assets/icons/fonts/filled_32/db-ux.woff2 +0 -0
  23. package/build/assets/icons/fonts/filled_48/db-ux.woff2 +0 -0
  24. package/build/assets/icons/fonts/filled_64/db-ux.woff2 +0 -0
  25. package/build/components/accordion/accordion.css +1 -1
  26. package/build/components/accordion-item/accordion-item.css +7 -2
  27. package/build/components/badge/badge.css +56 -4
  28. package/build/components/badge/badge.scss +1 -1
  29. package/build/components/button/button.css +4 -4
  30. package/build/components/card/card.css +6 -6
  31. package/build/components/checkbox/checkbox.css +60 -57
  32. package/build/components/custom-select/custom-select.css +1028 -0
  33. package/build/components/custom-select/custom-select.scss +172 -0
  34. package/build/components/custom-select-dropdown/custom-select-dropdown.css +402 -0
  35. package/build/components/custom-select-dropdown/custom-select-dropdown.scss +86 -0
  36. package/build/components/custom-select-form-field/custom-select-form-field.css +49 -0
  37. package/build/components/custom-select-form-field/custom-select-form-field.scss +24 -0
  38. package/build/components/custom-select-list/custom-select-list.css +48 -0
  39. package/build/components/custom-select-list/custom-select-list.scss +35 -0
  40. package/build/components/custom-select-list-item/custom-select-list-item.css +187 -0
  41. package/build/components/custom-select-list-item/custom-select-list-item.scss +99 -0
  42. package/build/components/divider/divider.css +2 -2
  43. package/build/components/drawer/drawer.css +6 -1
  44. package/build/components/header/header.css +4 -4
  45. package/build/components/input/input.css +71 -61
  46. package/build/components/input/input.scss +1 -5
  47. package/build/components/link/link.css +9 -4
  48. package/build/components/navigation-item/navigation-item.css +8 -3
  49. package/build/components/notification/notification.css +7 -2
  50. package/build/components/popover/popover.css +5 -0
  51. package/build/components/radio/radio.css +57 -54
  52. package/build/components/select/select.css +84 -75
  53. package/build/components/select/select.scss +4 -49
  54. package/build/components/switch/switch.css +64 -61
  55. package/build/components/tab-item/tab-item.css +5 -5
  56. package/build/components/tab-list/tab-list.css +17 -3
  57. package/build/components/tag/tag.css +40 -35
  58. package/build/components/textarea/textarea.css +93 -65
  59. package/build/components/textarea/textarea.scss +1 -1
  60. package/build/components/tooltip/tooltip.css +6 -1
  61. package/build/components/tooltip/tooltip.scss +2 -2
  62. package/build/styles/_select-components.scss +50 -0
  63. package/build/styles/absolute.css +32 -32
  64. package/build/styles/component-animations.css +1 -1
  65. package/build/styles/index.css +31 -31
  66. package/build/styles/index.scss +5 -0
  67. package/build/styles/internal/_custom-elements.scss +3 -0
  68. package/build/styles/internal/_form-components.scss +81 -70
  69. package/build/styles/internal/_scrollbar.scss +14 -3
  70. package/build/styles/internal/_tag-components.scss +20 -2
  71. package/build/styles/relative.css +32 -32
  72. package/build/styles/rollup.css +32 -32
  73. package/build/styles/wc-workarounds.css +1 -1
  74. package/build/styles/webpack.css +32 -32
  75. package/package.json +6 -5
@@ -11,7 +11,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
11
11
  - %db-font-size-md
12
12
  - %db-overwrite-font-size-md
13
13
  */
14
- .db-textarea[data-variant=floating] label, .db-textarea textarea {
14
+ .db-textarea[data-variant=floating] > label, .db-textarea textarea {
15
15
  /* Those variables are only for components to calculate heights and change icons */
16
16
  --db-icon-font-weight: var(--db-base-body-icon-weight-md);
17
17
  --db-icon-font-size: var(--db-base-body-icon-font-size-md);
@@ -27,7 +27,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
27
27
  font-size: var(--db-type-body-font-size-sm);
28
28
  }
29
29
 
30
- .db-textarea label {
30
+ .db-textarea > label {
31
31
  /* Those variables are only for components to calculate heights and change icons */
32
32
  --db-icon-font-weight: var(--db-base-body-icon-weight-xs);
33
33
  --db-icon-font-size: var(--db-base-body-icon-font-size-xs);
@@ -37,7 +37,8 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
37
37
 
38
38
  .db-textarea[data-variant=floating]:has(textarea:focus-within,
39
39
  textarea:is(input, textarea):not(:placeholder-shown),
40
- > select option:checked:not([hidden])) label {
40
+ > select option:checked:not([hidden]),
41
+ input[type=checkbox]:checked) > label {
41
42
  /* Those variables are only for components to calculate heights and change icons */
42
43
  --db-icon-font-weight: var(--db-base-body-icon-weight-2xs);
43
44
  --db-icon-font-size: var(--db-base-body-icon-font-size-2xs);
@@ -46,7 +47,7 @@ textarea:is(input, textarea):not(:placeholder-shown),
46
47
  }
47
48
 
48
49
  /* Variants for adaptive components like input, select, notification, ... */
49
- .db-textarea[data-hide-label=true] label, .db-visually-hidden,
50
+ .db-textarea[data-hide-label=true] > label, .db-visually-hidden,
50
51
  [data-visually-hidden=true] {
51
52
  clip: rect(0, 0, 0, 0) !important;
52
53
  overflow: hidden !important;
@@ -80,7 +81,7 @@ textarea:is(input, textarea):not(:placeholder-shown),
80
81
  .db-textarea .db-infotext {
81
82
  margin-block-start: var(--db-spacing-fixed-2xs);
82
83
  }
83
- .db-textarea .db-infotext[data-semantic] {
84
+ .db-textarea .db-infotext:is([data-semantic=successful], [data-semantic=critical]) {
84
85
  display: none;
85
86
  }
86
87
 
@@ -162,10 +163,17 @@ textarea:is(input, textarea):not(:placeholder-shown),
162
163
  transform: translate(var(--db-popover-center-x, 0%), var(--db-popover-center-y, 0%));
163
164
  }
164
165
  }
166
+ @keyframes rotate {
167
+ 100% {
168
+ transform: rotate(1turn);
169
+ }
170
+ }
165
171
  .db-textarea textarea {
166
172
  /* Buttons */
167
173
  /* Up */
168
174
  /* Down */
175
+ /* Left */
176
+ /* Right */
169
177
  }
170
178
  .db-textarea textarea::-webkit-scrollbar {
171
179
  z-index: 3;
@@ -178,7 +186,7 @@ textarea:is(input, textarea):not(:placeholder-shown),
178
186
  background-color: var(--db-adaptive-bg-basic-transparent-hovered);
179
187
  }
180
188
  .db-textarea textarea:read-only::-webkit-scrollbar-track, .db-textarea textarea:read-only::-webkit-scrollbar-button:single-button {
181
- background-color: var(--db-adaptive-bg-basic-level-1-default) !important;
189
+ background-color: var(--db-adaptive-bg-basic-level-1-default);
182
190
  }
183
191
  .db-textarea textarea::-webkit-scrollbar-track {
184
192
  background-color: var(--db-adaptive-bg-basic-transparent-semi-default);
@@ -200,10 +208,17 @@ textarea:is(input, textarea):not(:placeholder-shown),
200
208
  background-color: var(--db-adaptive-bg-basic-transparent-pressed);
201
209
  }
202
210
  .db-textarea textarea::-webkit-scrollbar-button:single-button:vertical:decrement {
203
- background-image: var(--db-textarea-scrollbar-button-decrement);
211
+ border-start-end-radius: var(--db-border-radius-xs);
212
+ background-image: var(--db-scrollbar-button-vertical-decrement);
204
213
  }
205
214
  .db-textarea textarea::-webkit-scrollbar-button:single-button:vertical:increment {
206
- background-image: var(--db-textarea-scrollbar-button-increment);
215
+ background-image: var(--db-scrollbar-button-vertical-increment);
216
+ }
217
+ .db-textarea textarea::-webkit-scrollbar-button:single-button:horizontal:decrement {
218
+ background-image: var(--db-scrollbar-button-horizontal-decrement);
219
+ }
220
+ .db-textarea textarea::-webkit-scrollbar-button:single-button:horizontal:increment {
221
+ background-image: var(--db-scrollbar-button-horizontal-increment);
207
222
  }
208
223
  .db-textarea textarea[data-variant=floating]::-webkit-resizer {
209
224
  background-color: var(--db-adaptive-bg-basic-transparent-semi-default);
@@ -236,61 +251,70 @@ textarea:is(input, textarea):not(:placeholder-shown),
236
251
  resize: vertical;
237
252
  }
238
253
 
254
+ .db-textarea {
255
+ /* stylelint-disable-next-line scss/selector-no-redundant-nesting-selector */
256
+ }
239
257
  .db-textarea {
240
258
  --db-form-has-before: 0;
241
259
  position: relative;
242
260
  display: flex;
243
261
  flex-direction: column;
244
262
  }
245
- .db-textarea[data-variant=floating] label {
263
+ .db-textarea[data-variant=floating], .db-textarea[data-hide-label=true] {
264
+ --db-label-visible-above: 0;
265
+ }
266
+ .db-textarea[data-variant=floating] > label {
246
267
  opacity: 0.69;
247
268
  position: absolute;
248
269
  z-index: 2;
249
270
  inset-block-start: calc((var(--db-sizing-md) - var(--db-icon-font-size)) / 2);
250
- inset-inline: var(--db-form-component-padding-inline-start, var(--db-spacing-fixed-sm));
271
+ inset-inline: var(--db-form-component-padding-inline-start, var(--db-spacing-fixed-sm)) var(--db-form-component-padding-inline-end, var(--db-spacing-fixed-sm));
251
272
  pointer-events: none;
252
273
  }
253
- .db-textarea[data-variant=floating]::after, .db-textarea[data-variant=floating]::before {
254
- inset-block-start: calc(var(--db-sizing-md) / 2 - var(--db-icon-font-size) / 2);
255
- }
256
274
  .db-textarea[data-variant=floating] [id$=-placeholder] {
257
275
  inset-block-start: calc(50% - 0.5em + var(--db-spacing-fixed-3xs));
258
276
  }
259
- .db-textarea[data-variant=floating] textarea {
260
- padding-block-start: calc(var(--db-spacing-fixed-3xs) + var(--db-spacing-fixed-2xs) + var(--db-base-body-icon-font-size-2xs));
261
- /* stylelint-disable-next-line at-rule-empty-line-before */
262
- }
263
277
  .db-textarea[data-variant=floating] textarea::placeholder,
264
- .db-textarea[data-variant=floating] textarea + [id$=-placeholder] {
278
+ .db-textarea[data-variant=floating] [id$=-placeholder] {
265
279
  transition: none;
266
280
  opacity: 0;
267
281
  }
282
+ .db-textarea[data-variant=floating] textarea {
283
+ padding-block-start: calc(var(--db-spacing-fixed-3xs) + var(--db-spacing-fixed-2xs) + var(--db-base-body-icon-font-size-2xs));
284
+ /* stylelint-disable-next-line at-rule-empty-line-before */
285
+ }
268
286
  .db-textarea[data-variant=floating]:has(textarea:focus-within,
269
287
  textarea:is(input, textarea):not(:placeholder-shown),
270
- > select option:checked:not([hidden])) label {
288
+ > select option:checked:not([hidden]),
289
+ input[type=checkbox]:checked) > label {
271
290
  inset-block-start: var(--db-spacing-fixed-2xs);
272
291
  opacity: 1;
273
292
  }
274
293
  .db-textarea[data-variant=floating]:has(textarea:focus-within,
275
294
  textarea:is(input, textarea):not(:placeholder-shown),
276
- > select option:checked:not([hidden])) textarea::placeholder,
295
+ > select option:checked:not([hidden]),
296
+ input[type=checkbox]:checked) textarea::placeholder,
277
297
  .db-textarea[data-variant=floating]:has(textarea:focus-within,
278
298
  textarea:is(input, textarea):not(:placeholder-shown),
279
- > select option:checked:not([hidden])) textarea + [id$=-placeholder] {
299
+ > select option:checked:not([hidden]),
300
+ input[type=checkbox]:checked) [id$=-placeholder] {
280
301
  opacity: 0.69;
281
302
  }
282
303
  @media screen and (prefers-reduced-motion: no-preference) {
283
304
  .db-textarea[data-variant=floating]:has(textarea:focus-within,
284
305
  textarea:is(input, textarea):not(:placeholder-shown),
285
- > select option:checked:not([hidden])) textarea::placeholder,
306
+ > select option:checked:not([hidden]),
307
+ input[type=checkbox]:checked) textarea::placeholder,
286
308
  .db-textarea[data-variant=floating]:has(textarea:focus-within,
287
309
  textarea:is(input, textarea):not(:placeholder-shown),
288
- > select option:checked:not([hidden])) textarea + [id$=-placeholder] {
310
+ > select option:checked:not([hidden]),
311
+ input[type=checkbox]:checked) [id$=-placeholder] {
289
312
  transition: opacity var(--db-transition-straight-emotional);
290
313
  }
291
314
  }
292
315
  .db-textarea:has(textarea:required):is(label)::after,
293
- .db-textarea:has(textarea:required) label::after {
316
+ .db-textarea:has(textarea:required) > label::after, .db-textarea[data-required=true]:is(label)::after,
317
+ .db-textarea[data-required=true] > label::after {
294
318
  content: "*";
295
319
  content: "*"/"";
296
320
  /* stylelint-disable-next-line db-ux/use-spacings */
@@ -310,13 +334,18 @@ textarea:is(input, textarea):not(:placeholder-shown),
310
334
  --db-adaptive-bg-basic-transparent-pressed: var(
311
335
  --db-successful-bg-basic-transparent-pressed
312
336
  );
313
- --db-adaptive-default: var(
337
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
314
338
  --db-successful-on-bg-basic-emphasis-100-default
315
339
  );
316
340
  --db-adaptive-on-bg-basic-emphasis-60-default: var(
317
341
  --db-successful-on-bg-basic-emphasis-60-default
318
342
  );
319
343
  }
344
+ .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-valid) textarea,
345
+ .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-valid) [id$=-placeholder] {
346
+ color: var(--db-successful-on-bg-basic-emphasis-100-default);
347
+ caret-color: var(--db-successful-on-bg-basic-emphasis-100-default);
348
+ }
320
349
  .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-valid) .db-infotext {
321
350
  /* stylelint-disable-next-line at-rule-empty-line-before */
322
351
  }
@@ -326,12 +355,7 @@ textarea:is(input, textarea):not(:placeholder-shown),
326
355
  .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-valid) .db-infotext:not([data-semantic]) {
327
356
  display: none;
328
357
  }
329
- .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-valid) textarea,
330
- .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-valid) [id$=-placeholder] {
331
- color: var(--db-successful-on-bg-basic-emphasis-100-default);
332
- caret-color: var(--db-successful-on-bg-basic-emphasis-100-default);
333
- }
334
- .db-textarea:has(textarea[data-custom-validity=valid]) {
358
+ .db-textarea:has(textarea[data-custom-validity=valid]), .db-textarea[data-custom-validity=valid] {
335
359
  --db-textarea-read-only: var(--db-successful-bg-basic-level-1-default);
336
360
  --db-adaptive-bg-basic-transparent-full-default: var(
337
361
  --db-successful-bg-basic-transparent-full-default
@@ -345,27 +369,28 @@ textarea:is(input, textarea):not(:placeholder-shown),
345
369
  --db-adaptive-bg-basic-transparent-pressed: var(
346
370
  --db-successful-bg-basic-transparent-pressed
347
371
  );
348
- --db-adaptive-default: var(
372
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
349
373
  --db-successful-on-bg-basic-emphasis-100-default
350
374
  );
351
375
  --db-adaptive-on-bg-basic-emphasis-60-default: var(
352
376
  --db-successful-on-bg-basic-emphasis-60-default
353
377
  );
354
378
  }
355
- .db-textarea:has(textarea[data-custom-validity=valid]) .db-infotext {
379
+ .db-textarea:has(textarea[data-custom-validity=valid]) textarea,
380
+ .db-textarea:has(textarea[data-custom-validity=valid]) [id$=-placeholder], .db-textarea[data-custom-validity=valid] textarea,
381
+ .db-textarea[data-custom-validity=valid] [id$=-placeholder] {
382
+ color: var(--db-successful-on-bg-basic-emphasis-100-default);
383
+ caret-color: var(--db-successful-on-bg-basic-emphasis-100-default);
384
+ }
385
+ .db-textarea:has(textarea[data-custom-validity=valid]) .db-infotext, .db-textarea[data-custom-validity=valid] .db-infotext {
356
386
  /* stylelint-disable-next-line at-rule-empty-line-before */
357
387
  }
358
- .db-textarea:has(textarea[data-custom-validity=valid]) .db-infotext[data-semantic=successful] {
388
+ .db-textarea:has(textarea[data-custom-validity=valid]) .db-infotext[data-semantic=successful], .db-textarea[data-custom-validity=valid] .db-infotext[data-semantic=successful] {
359
389
  display: flex;
360
390
  }
361
- .db-textarea:has(textarea[data-custom-validity=valid]) .db-infotext:not([data-semantic]) {
391
+ .db-textarea:has(textarea[data-custom-validity=valid]) .db-infotext:not([data-semantic]), .db-textarea[data-custom-validity=valid] .db-infotext:not([data-semantic]) {
362
392
  display: none;
363
393
  }
364
- .db-textarea:has(textarea[data-custom-validity=valid]) textarea,
365
- .db-textarea:has(textarea[data-custom-validity=valid]) [id$=-placeholder] {
366
- color: var(--db-successful-on-bg-basic-emphasis-100-default);
367
- caret-color: var(--db-successful-on-bg-basic-emphasis-100-default);
368
- }
369
394
  .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-invalid) {
370
395
  --db-textarea-read-only: var(--db-critical-bg-basic-level-1-default);
371
396
  --db-adaptive-bg-basic-transparent-full-default: var(
@@ -380,25 +405,25 @@ textarea:is(input, textarea):not(:placeholder-shown),
380
405
  --db-adaptive-bg-basic-transparent-pressed: var(
381
406
  --db-critical-bg-basic-transparent-pressed
382
407
  );
383
- --db-adaptive-default: var(
408
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
384
409
  --db-critical-on-bg-basic-emphasis-100-default
385
410
  );
386
411
  --db-adaptive-on-bg-basic-emphasis-60-default: var(
387
412
  --db-critical-on-bg-basic-emphasis-60-default
388
413
  );
389
414
  }
415
+ .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-invalid) textarea,
416
+ .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-invalid) [id$=-placeholder] {
417
+ color: var(--db-critical-on-bg-basic-emphasis-100-default);
418
+ caret-color: var(--db-critical-on-bg-basic-emphasis-100-default);
419
+ }
390
420
  .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-invalid) .db-infotext[data-semantic=critical] {
391
421
  display: flex;
392
422
  }
393
423
  .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-invalid) .db-infotext:not([data-semantic]) {
394
424
  display: none;
395
425
  }
396
- .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-invalid) textarea,
397
- .db-textarea:has(textarea:not([data-custom-validity]):is(:required, [minlength], [maxlength]):user-invalid) [id$=-placeholder] {
398
- color: var(--db-critical-on-bg-basic-emphasis-100-default);
399
- caret-color: var(--db-critical-on-bg-basic-emphasis-100-default);
400
- }
401
- .db-textarea:has(textarea[data-custom-validity=invalid]) {
426
+ .db-textarea:has(textarea[data-custom-validity=invalid]), .db-textarea[data-custom-validity=invalid] {
402
427
  --db-textarea-read-only: var(--db-critical-bg-basic-level-1-default);
403
428
  --db-adaptive-bg-basic-transparent-full-default: var(
404
429
  --db-critical-bg-basic-transparent-full-default
@@ -412,23 +437,28 @@ textarea:is(input, textarea):not(:placeholder-shown),
412
437
  --db-adaptive-bg-basic-transparent-pressed: var(
413
438
  --db-critical-bg-basic-transparent-pressed
414
439
  );
415
- --db-adaptive-default: var(
440
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
416
441
  --db-critical-on-bg-basic-emphasis-100-default
417
442
  );
418
443
  --db-adaptive-on-bg-basic-emphasis-60-default: var(
419
444
  --db-critical-on-bg-basic-emphasis-60-default
420
445
  );
421
446
  }
422
- .db-textarea:has(textarea[data-custom-validity=invalid]) .db-infotext[data-semantic=critical] {
447
+ .db-textarea:has(textarea[data-custom-validity=invalid]) textarea,
448
+ .db-textarea:has(textarea[data-custom-validity=invalid]) [id$=-placeholder], .db-textarea[data-custom-validity=invalid] textarea,
449
+ .db-textarea[data-custom-validity=invalid] [id$=-placeholder] {
450
+ color: var(--db-critical-on-bg-basic-emphasis-100-default);
451
+ caret-color: var(--db-critical-on-bg-basic-emphasis-100-default);
452
+ }
453
+ .db-textarea:has(textarea[data-custom-validity=invalid]) .db-infotext[data-semantic=critical], .db-textarea[data-custom-validity=invalid] .db-infotext[data-semantic=critical] {
423
454
  display: flex;
424
455
  }
425
- .db-textarea:has(textarea[data-custom-validity=invalid]) .db-infotext:not([data-semantic]) {
456
+ .db-textarea:has(textarea[data-custom-validity=invalid]) .db-infotext:not([data-semantic]), .db-textarea[data-custom-validity=invalid] .db-infotext:not([data-semantic]) {
426
457
  display: none;
427
458
  }
428
- .db-textarea:has(textarea[data-custom-validity=invalid]) textarea,
429
- .db-textarea:has(textarea[data-custom-validity=invalid]) [id$=-placeholder] {
430
- color: var(--db-critical-on-bg-basic-emphasis-100-default);
431
- caret-color: var(--db-critical-on-bg-basic-emphasis-100-default);
459
+ .db-textarea textarea::placeholder,
460
+ .db-textarea [id$=-placeholder] {
461
+ opacity: 0.69;
432
462
  }
433
463
  .db-textarea textarea {
434
464
  background-color: var(--db-adaptive-bg-basic-transparent-semi-default);
@@ -440,12 +470,8 @@ textarea:is(input, textarea):not(:placeholder-shown),
440
470
  padding-inline: var(--db-form-component-padding-inline-start, var(--db-spacing-fixed-sm)) var(--db-form-component-padding-inline-end, var(--db-spacing-fixed-sm));
441
471
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
442
472
  }
443
- .db-textarea textarea::placeholder,
444
- .db-textarea textarea + [id$=-placeholder] {
445
- opacity: 0.69;
446
- }
447
473
  .db-textarea textarea:hover:not(:disabled, [aria-disabled=true]) {
448
- cursor: pointer;
474
+ cursor: var(--db-overwrite-cursor, pointer);
449
475
  background-color: var(--db-adaptive-bg-basic-transparent-hovered);
450
476
  }
451
477
  .db-textarea textarea:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-textarea textarea:hover:not(:disabled, [aria-disabled=true]):is(input) {
@@ -457,7 +483,7 @@ textarea:is(input, textarea):not(:placeholder-shown),
457
483
  .db-textarea textarea:is(input, textarea):not(:disabled):read-only {
458
484
  background-color: var(--db-textarea-read-only, var(--db-adaptive-bg-basic-level-1-default)) !important;
459
485
  }
460
- .db-textarea label {
486
+ .db-textarea > label {
461
487
  padding-block-end: var(--db-spacing-fixed-xs);
462
488
  max-inline-size: 25ch;
463
489
  text-overflow: ellipsis;
@@ -465,22 +491,23 @@ textarea:is(input, textarea):not(:placeholder-shown),
465
491
  overflow: hidden;
466
492
  }
467
493
  @media screen and (prefers-reduced-motion: no-preference) {
468
- .db-textarea label {
494
+ .db-textarea > label {
469
495
  transition: font-size var(--db-transition-straight-emotional);
470
496
  }
471
497
  }
472
- .db-textarea[data-hide-label=true] label {
498
+ .db-textarea[data-hide-label=true] > label {
473
499
  padding: 0;
474
500
  }
475
- .db-textarea:has(textarea:disabled) {
501
+ .db-textarea:has(textarea:disabled, textarea[data-disabled=true]) {
476
502
  opacity: 0.4;
477
503
  pointer-events: none;
478
504
  }
479
505
  .db-textarea::after, .db-textarea::before {
480
506
  position: absolute;
481
507
  pointer-events: none;
482
- inset-block-start: calc(var(--db-sizing-md) / 2 - var(--db-spacing-fixed-xs) * var(--db-label-visible-spacing, 0) + var(--db-base-body-icon-font-size-xs) * var(--db-label-visible-height, 1) - 1px);
508
+ inset-block-start: calc((var(--db-spacing-fixed-xs) + var(--db-base-body-icon-font-size-xs)) * var(--db-label-visible-above, 1) + var(--db-sizing-md) / 2);
483
509
  color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
510
+ transform: translateY(-50%);
484
511
  }
485
512
  .db-textarea::before {
486
513
  margin-inline-end: var(--db-spacing-fixed-sm);
@@ -491,7 +518,6 @@ textarea:is(input, textarea):not(:placeholder-shown),
491
518
  inset-inline-end: var(--db-spacing-fixed-sm);
492
519
  }
493
520
  .db-textarea textarea {
494
- cursor: auto;
495
521
  overflow-y: scroll;
496
522
  padding-block: var(--db-spacing-fixed-xs) var(--db-spacing-fixed-xs);
497
523
  }
@@ -504,6 +530,7 @@ textarea:is(input, textarea):not(:placeholder-shown),
504
530
  margin-inline: 0;
505
531
  inline-size: calc(100% - 0.5rem - 1px);
506
532
  inset-inline: 0;
533
+ transform: none;
507
534
  background-color: var(--db-adaptive-bg-basic-level-1-default);
508
535
  }
509
536
  .db-textarea[data-variant=floating]:has(textarea:is(:focus-within, :not(:placeholder-shown)))::after {
@@ -515,6 +542,7 @@ textarea:is(input, textarea):not(:placeholder-shown),
515
542
  margin-inline: 0;
516
543
  inline-size: calc(100% - 0.5rem - 1px);
517
544
  inset-inline: 0;
545
+ transform: none;
518
546
  background-color: var(--db-adaptive-bg-basic-transparent-semi-default);
519
547
  z-index: 1;
520
548
  border-block-end: none;
@@ -34,6 +34,7 @@
34
34
  margin-inline: 0;
35
35
  inline-size: calc(100% - #{scrollbar.$scrollbar-width} - 1px);
36
36
  inset-inline: 0;
37
+ transform: none;
37
38
  }
38
39
 
39
40
  .db-textarea {
@@ -43,7 +44,6 @@
43
44
  @extend %resize-textarea;
44
45
  @extend %scrollbar;
45
46
 
46
- cursor: auto;
47
47
  overflow-y: scroll;
48
48
 
49
49
  // we don't have icons in textarea so we can overwrite it here
@@ -94,6 +94,11 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
94
94
  transform: translate(var(--db-popover-center-x, 0%), var(--db-popover-center-y, 0%));
95
95
  }
96
96
  }
97
+ @keyframes rotate {
98
+ 100% {
99
+ transform: rotate(1turn);
100
+ }
101
+ }
97
102
  .db-tooltip[data-show-arrow=true]::after, .db-tooltip {
98
103
  border: var(--db-border-height-3xs) solid var(--db-adaptive-on-bg-basic-emphasis-60-default);
99
104
  }
@@ -330,5 +335,5 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
330
335
  }
331
336
 
332
337
  [data-has-tooltip=true] {
333
- position: relative;
338
+ position: var(--db-tooltip-parent-position, relative);
334
339
  }
@@ -53,7 +53,7 @@ $tooltip-arrow-shadow-size: variables.$db-sizing-2xs;
53
53
  calc(100% + #{$tooltip-arrow-shadow-size})
54
54
  calc(100% + #{$tooltip-arrow-shadow-size})
55
55
  );
56
- /* stylelint-disable-next-line db-ux/use-border-radius */
56
+ /* stylelint-disable-next-line db-ux/use-border-radius */
57
57
  border-radius: 0 2px;
58
58
  transform: skew(-8deg, -8deg);
59
59
  }
@@ -127,7 +127,7 @@ $tooltip-arrow-shadow-size: variables.$db-sizing-2xs;
127
127
  }
128
128
 
129
129
  [data-has-tooltip="true"] {
130
- position: relative;
130
+ position: var(--db-tooltip-parent-position, relative);
131
131
  }
132
132
 
133
133
  $popover-states: "hover", "focus";
@@ -0,0 +1,50 @@
1
+ @use "@db-ux/core-foundations/build/styles/fonts";
2
+ @use "@db-ux/core-foundations/build/styles/variables";
3
+ @use "./internal/form-components";
4
+
5
+ %select-icon {
6
+ @extend %dropdown-icon;
7
+
8
+ &[data-icon]:not([data-hide-icon="true"]) {
9
+ --db-form-has-before: 1;
10
+ }
11
+ }
12
+
13
+ $has-before-padding: calc(
14
+ var(--db-form-has-before) *
15
+ (#{form-components.$icon-size-sm} + #{variables.$db-spacing-fixed-sm})
16
+ );
17
+
18
+ $select-icon-padding: calc(
19
+ #{form-components.$font-size-height} + #{variables.$db-spacing-fixed-sm} +
20
+ #{variables.$db-spacing-fixed-xs}
21
+ );
22
+
23
+ %select-placeholder {
24
+ [id$="-placeholder"] {
25
+ @extend %db-overwrite-font-size-md;
26
+
27
+ position: absolute;
28
+ pointer-events: none;
29
+ // we use the top of the element, the size of the label+label-margin-bottom and the font-size of the select/2
30
+ // for functional we have some rounding issues for rem, so we need 1px less
31
+ inset-block-start: calc(
32
+ 0% +
33
+ (
34
+ #{form-components.$label-size-height-xs} +
35
+ #{variables.$db-spacing-fixed-xs}
36
+ ) *
37
+ var(--db-label-visible-above, 1) + var(--db-type-body-font-size-md) /
38
+ 2 - var(--db-density-functional, 0) * 1px
39
+ );
40
+ inset-inline: $has-before-padding;
41
+ margin-inline-start: variables.$db-spacing-fixed-sm;
42
+ overflow: hidden;
43
+ white-space: nowrap;
44
+ text-overflow: ellipsis;
45
+ inline-size: calc(
46
+ 100% - var(--db-form-component-padding-inline-end) -
47
+ #{$has-before-padding} - #{variables.$db-spacing-fixed-sm}
48
+ );
49
+ }
50
+ }