@vaadin/vaadin-lumo-styles 25.0.0-alpha9 → 25.0.0-beta2

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 (179) hide show
  1. package/all-imports.d.ts +0 -8
  2. package/all-imports.js +0 -18
  3. package/components/accordion-heading.css +4 -3
  4. package/components/accordion-panel.css +4 -3
  5. package/components/app-layout.css +4 -3
  6. package/components/avatar-group.css +10 -9
  7. package/components/avatar.css +6 -4
  8. package/components/button.css +4 -4
  9. package/components/card.css +6 -4
  10. package/components/charts.css +4 -3
  11. package/components/checkbox-group.css +4 -3
  12. package/components/checkbox.css +4 -3
  13. package/components/combo-box.css +8 -7
  14. package/components/confirm-dialog.css +4 -3
  15. package/components/context-menu.css +8 -7
  16. package/components/crud.css +13 -12
  17. package/components/custom-field.css +4 -3
  18. package/components/dashboard.css +12 -11
  19. package/components/date-picker.css +12 -11
  20. package/components/date-time-picker.css +4 -3
  21. package/components/details-summary.css +4 -3
  22. package/components/details.css +4 -3
  23. package/components/dialog.css +4 -3
  24. package/components/drawer-toggle.css +4 -3
  25. package/components/email-field.css +4 -3
  26. package/components/field-highlighter.css +8 -7
  27. package/components/form-item.css +4 -3
  28. package/components/form-layout.css +8 -5
  29. package/components/grid-filter.css +4 -3
  30. package/components/grid-pro-edit-column.css +8 -7
  31. package/components/grid-pro.css +4 -3
  32. package/components/grid-sorter.css +4 -3
  33. package/components/grid-tree-toggle.css +4 -3
  34. package/components/grid.css +4 -3
  35. package/components/horizontal-layout.css +4 -3
  36. package/components/icon.css +4 -3
  37. package/components/index.css +71 -0
  38. package/components/input-container.css +4 -3
  39. package/components/integer-field.css +4 -3
  40. package/components/item.css +4 -3
  41. package/components/list-box.css +4 -3
  42. package/components/login-form.css +4 -3
  43. package/components/login.css +4 -3
  44. package/components/map.css +4 -3
  45. package/components/master-detail-layout.css +2 -1
  46. package/components/menu-bar.css +12 -11
  47. package/components/message-input-button.css +12 -0
  48. package/components/message-input.css +5 -4
  49. package/components/message.css +4 -3
  50. package/components/multi-select-combo-box.css +12 -11
  51. package/components/notification.css +6 -5
  52. package/components/number-field.css +4 -3
  53. package/components/overlay.css +4 -3
  54. package/components/password-field.css +6 -5
  55. package/components/popover.css +4 -3
  56. package/components/progress-bar.css +4 -3
  57. package/components/radio-button.css +4 -3
  58. package/components/radio-group.css +4 -3
  59. package/components/rich-text-editor.css +6 -5
  60. package/components/scroller.css +4 -3
  61. package/components/select.css +12 -11
  62. package/components/side-nav-item.css +4 -3
  63. package/components/side-nav.css +4 -3
  64. package/components/split-layout.css +4 -3
  65. package/components/tab.css +4 -3
  66. package/components/tabs.css +4 -3
  67. package/components/tabsheet.css +6 -5
  68. package/components/text-area.css +4 -3
  69. package/components/text-field.css +4 -3
  70. package/components/time-picker.css +8 -7
  71. package/components/tooltip.css +4 -3
  72. package/components/upload.css +15 -10
  73. package/components/vertical-layout.css +4 -3
  74. package/dist/lumo.css +43 -0
  75. package/dist/presets/compact.css +1 -0
  76. package/dist/utility.css +1 -0
  77. package/lumo.css +8 -3
  78. package/mixins/field-button.js +3 -4
  79. package/mixins/helper.js +3 -4
  80. package/mixins/input-field-shared.js +4 -7
  81. package/mixins/loader.js +3 -2
  82. package/mixins/menu-overlay.js +3 -2
  83. package/mixins/overlay.js +3 -4
  84. package/mixins/required-field.js +3 -4
  85. package/package.json +15 -9
  86. package/presets/compact.css +32 -0
  87. package/src/components/app-layout.css +5 -5
  88. package/src/components/avatar-group-overlay.css +0 -4
  89. package/src/components/chart.css +2 -1
  90. package/src/components/checkbox.css +2 -3
  91. package/src/components/combo-box.css +1 -1
  92. package/src/components/confirm-dialog-overlay.css +0 -4
  93. package/src/components/context-menu-overlay.css +21 -1
  94. package/src/components/dashboard-layout.css +0 -66
  95. package/src/components/dashboard-section.css +3 -31
  96. package/src/components/dashboard-widget.css +1 -85
  97. package/src/components/dashboard.css +0 -9
  98. package/src/components/date-picker-overlay-content.css +6 -40
  99. package/src/components/date-picker-overlay.css +2 -14
  100. package/src/components/date-picker.css +2 -2
  101. package/src/components/dialog-overlay.css +10 -19
  102. package/src/components/grid-pro-edit-select.css +1 -1
  103. package/src/components/grid-pro.css +14 -8
  104. package/src/components/grid.css +0 -7
  105. package/src/components/icon.css +2 -2
  106. package/src/components/menu-bar-button.css +7 -7
  107. package/src/components/message.css +7 -32
  108. package/src/components/multi-select-combo-box.css +2 -2
  109. package/src/components/number-field.css +6 -6
  110. package/src/components/password-field.css +4 -4
  111. package/src/components/popover-overlay.css +2 -138
  112. package/src/components/radio-button.css +1 -1
  113. package/src/components/rich-text-editor.css +40 -142
  114. package/src/components/scroller.css +3 -22
  115. package/src/components/select.css +15 -2
  116. package/src/components/side-nav-item.css +13 -0
  117. package/src/components/split-layout.css +19 -97
  118. package/src/components/tabsheet.css +4 -0
  119. package/src/components/text-area.css +2 -2
  120. package/src/components/time-picker.css +1 -1
  121. package/src/components/tooltip-overlay.css +4 -1
  122. package/src/components/upload-file.css +27 -61
  123. package/src/global/color-scheme.css +2 -1
  124. package/{user-colors.d.ts → src/global/index.css} +3 -3
  125. package/src/global/typography.css +2 -1
  126. package/src/mixins/dashboard-item.css +10 -141
  127. package/src/mixins/field-base.css +1 -1
  128. package/src/mixins/field-button.css +3 -3
  129. package/src/mixins/overlay.css +11 -1
  130. package/src/mixins/resizable-overlay.css +2 -1
  131. package/src/props/color.css +4 -2
  132. package/src/props/icons.css +21 -18
  133. package/src/props/index.css +12 -0
  134. package/src/props/reset.css +2 -1
  135. package/src/props/sizing.css +2 -1
  136. package/src/props/spacing.css +2 -1
  137. package/src/props/style.css +2 -1
  138. package/src/props/typography.css +2 -1
  139. package/utility.css +0 -1
  140. package/vaadin-iconset.js +2 -0
  141. package/auto-complete.css +0 -2512
  142. package/badge-global.js +0 -9
  143. package/badge.d.ts +0 -3
  144. package/badge.js +0 -178
  145. package/color-global.js +0 -9
  146. package/color.d.ts +0 -5
  147. package/color.js +0 -221
  148. package/components.css +0 -71
  149. package/font-icons.js +0 -69
  150. package/global.css +0 -8
  151. package/global.js +0 -5
  152. package/presets/compact.js +0 -40
  153. package/props.css +0 -12
  154. package/sizing.d.ts +0 -3
  155. package/sizing.js +0 -29
  156. package/spacing.d.ts +0 -3
  157. package/spacing.js +0 -37
  158. package/src/components/form-layout.css +0 -12
  159. package/src/components/upload-file-list.css +0 -24
  160. package/style.d.ts +0 -3
  161. package/style.js +0 -31
  162. package/typography-global.js +0 -13
  163. package/typography.d.ts +0 -7
  164. package/typography.js +0 -129
  165. package/user-colors.js +0 -33
  166. package/utilities/accessibility.js +0 -21
  167. package/utilities/background.js +0 -156
  168. package/utilities/border.js +0 -147
  169. package/utilities/filter.js +0 -34
  170. package/utilities/flexbox-grid.js +0 -619
  171. package/utilities/layout.js +0 -504
  172. package/utilities/shadows.js +0 -28
  173. package/utilities/sizing.js +0 -121
  174. package/utilities/spacing.js +0 -542
  175. package/utilities/transition.js +0 -50
  176. package/utilities/typography.js +0 -344
  177. package/utility-global.js +0 -9
  178. package/utility.d.ts +0 -3
  179. package/utility.js +0 -34
@@ -4,128 +4,50 @@
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
  @media lumo_components_split-layout {
7
- :host {
8
- display: flex;
9
- overflow: hidden !important;
10
- }
11
-
12
- :host([hidden]) {
13
- display: none !important;
14
- }
15
-
16
- :host([orientation='vertical']) {
17
- flex-direction: column;
18
- }
19
-
20
- :host ::slotted(*) {
21
- flex: 1 1 auto;
22
- overflow: auto;
23
- }
24
-
25
7
  [part='splitter'] {
26
- flex: none;
27
- position: relative;
28
- z-index: 1;
29
- overflow: visible;
30
- min-width: var(--lumo-space-s);
31
- min-height: var(--lumo-space-s);
32
- background-color: var(--lumo-contrast-5pct);
8
+ --_splitter-size: var(--vaadin-split-layout-splitter-size, var(--lumo-space-s));
9
+ --_splitter-target-size: var(--vaadin-split-layout-splitter-target-size, var(--lumo-space-s));
10
+ --_handle-size: var(--vaadin-split-layout-handle-size, var(--lumo-space-xs));
11
+ --_handle-target-size: var(--vaadin-split-layout-handle-target-size, var(--lumo-size-m));
12
+ background: var(--vaadin-split-layout-splitter-background, var(--lumo-contrast-5pct));
33
13
  transition: 0.1s background-color;
34
14
  }
35
15
 
36
- :host(:not([orientation='vertical'])) > [part='splitter'] {
37
- cursor: ew-resize;
38
- }
39
-
40
- :host([orientation='vertical']) > [part='splitter'] {
41
- cursor: ns-resize;
42
- }
43
-
44
16
  [part='handle'] {
45
- position: absolute;
46
- top: 50%;
47
- left: 50%;
48
- transform: translate3d(-50%, -50%, 0);
49
- display: flex;
50
- align-items: center;
51
- justify-content: center;
52
- width: var(--lumo-size-m);
53
- height: var(--lumo-size-m);
54
- }
55
-
56
- [part='handle']::after {
57
- content: '';
58
- display: block;
59
- --_handle-size: 4px;
60
- width: var(--_handle-size);
61
- height: 100%;
62
- max-width: 100%;
63
- max-height: 100%;
17
+ background: var(--vaadin-split-layout-handle-background, var(--lumo-contrast-30pct));
64
18
  border-radius: var(--lumo-border-radius-s);
65
- background-color: var(--lumo-contrast-30pct);
66
- transition:
67
- 0.1s opacity,
68
- 0.1s background-color;
69
- }
70
-
71
- :host([orientation='vertical']) [part='handle']::after {
72
- width: 100%;
73
- height: var(--_handle-size);
74
19
  }
75
20
 
76
21
  /* Active style */
77
- [part='splitter']:active [part='handle']::after {
78
- background-color: var(--lumo-contrast-50pct);
22
+ [part='splitter']:active [part='handle'] {
23
+ background: var(--lumo-contrast-50pct);
79
24
  }
80
25
 
81
- /* Small/minimal */
26
+ /* Small overrides */
82
27
  :host([theme~='small']) > [part='splitter'] {
83
- border-left: 1px solid var(--lumo-contrast-10pct);
84
- border-top: 1px solid var(--lumo-contrast-10pct);
85
- }
86
-
87
- :host(:is([theme~='small'], [theme~='minimal'])) > [part='splitter'] {
88
- min-width: 0;
89
- min-height: 0;
90
- background-color: transparent;
91
- }
92
-
93
- :host(:is([theme~='small'], [theme~='minimal'])) > [part='splitter']::after {
94
- content: '';
95
- position: absolute;
96
- inset: -4px;
28
+ --vaadin-split-layout-handle-size: 5px;
29
+ background: var(--lumo-contrast-10pct);
97
30
  }
98
31
 
99
- :host(:is([theme~='small'], [theme~='minimal'])) > [part='splitter'] > [part='handle'] {
100
- left: calc(50% - 0.5px);
101
- top: calc(50% - 0.5px);
32
+ /* Minimal */
33
+ :host([theme~='minimal']) > [part='splitter'] {
34
+ --vaadin-split-layout-splitter-size: 0px;
35
+ --vaadin-split-layout-handle-size: 5px;
36
+ --vaadin-split-layout-splitter-target-size: 5px;
102
37
  }
103
38
 
104
- :host(:is([theme~='small'], [theme~='minimal'])) > [part='splitter'] > [part='handle']::after {
39
+ :host([theme~='minimal']) > [part='splitter'] > [part='handle'] {
105
40
  opacity: 0;
106
- --_handle-size: 5px;
107
41
  }
108
42
 
109
- :host(:is([theme~='small'], [theme~='minimal'])) > [part='splitter']:hover > [part='handle']::after,
110
- :host(:is([theme~='small'], [theme~='minimal'])) > [part='splitter']:active > [part='handle']::after {
43
+ :host([theme~='minimal']) > [part='splitter']:is(:hover, :active) > [part='handle'] {
111
44
  opacity: 1;
112
45
  }
113
46
 
114
47
  /* Hover style */
115
48
  @media (any-hover: hover) {
116
- [part='splitter']:hover [part='handle']::after {
49
+ [part='splitter']:hover [part='handle'] {
117
50
  background-color: var(--lumo-contrast-40pct);
118
51
  }
119
52
  }
120
-
121
- @media (forced-colors: active) {
122
- [part~='splitter'] {
123
- outline: 1px solid;
124
- }
125
-
126
- [part~='handle']::after {
127
- background-color: AccentColor !important;
128
- forced-color-adjust: none;
129
- }
130
- }
131
53
  }
@@ -33,6 +33,10 @@
33
33
  margin: calc(var(--lumo-space-xs) * -1) calc(var(--lumo-space-s) * -1);
34
34
  }
35
35
 
36
+ ::slotted([hidden]) {
37
+ display: none !important;
38
+ }
39
+
36
40
  [part='content'] {
37
41
  position: relative;
38
42
  flex: 1;
@@ -99,14 +99,14 @@
99
99
 
100
100
  /* Use sticky positioning to keep prefix/suffix/clear button visible when scrolling textarea container */
101
101
  [part='input-field'] ::slotted([slot$='fix']),
102
- [part='clear-button'] {
102
+ [part~='clear-button'] {
103
103
  position: sticky;
104
104
  top: 0;
105
105
  align-self: flex-start;
106
106
  }
107
107
 
108
108
  [part='input-field'] ::slotted(vaadin-icon[slot$='fix']),
109
- [part='clear-button'] {
109
+ [part~='clear-button'] {
110
110
  /* Vertically align icon prefix/suffix/clear button with the first line of text */
111
111
  top: calc((var(--lumo-icon-size-m) - 1em * var(--lumo-line-height-s)) / -2);
112
112
  margin-top: calc((var(--lumo-icon-size-m) - 1em * var(--lumo-line-height-s)) / -2);
@@ -12,7 +12,7 @@
12
12
  cursor: pointer;
13
13
  }
14
14
 
15
- [part='toggle-button']::before {
15
+ [part~='toggle-button']::before {
16
16
  content: var(--lumo-icons-clock);
17
17
  }
18
18
 
@@ -18,10 +18,13 @@
18
18
  }
19
19
 
20
20
  [part='content'] {
21
- white-space: pre-wrap;
22
21
  padding: var(--lumo-space-xs) var(--lumo-space-s);
23
22
  }
24
23
 
24
+ :host(:not([markdown])) [part='content'] {
25
+ white-space: pre-wrap;
26
+ }
27
+
25
28
  :host([position^='top'][top-aligned]) [part='overlay'],
26
29
  :host([position^='bottom'][top-aligned]) [part='overlay'] {
27
30
  margin-top: var(--vaadin-tooltip-offset-top, var(--_vaadin-tooltip-default-offset));
@@ -5,39 +5,16 @@
5
5
  */
6
6
  @media lumo_components_upload-file {
7
7
  :host {
8
- display: block;
9
- padding: var(--lumo-space-s) 0;
10
- outline: none;
8
+ padding: var(--vaadin-upload-file-padding, var(--lumo-space-s) 0);
9
+ gap: var(--vaadin-upload-file-gap, 0 var(--lumo-space-xs));
10
+ border-radius: var(--vaadin-upload-file-border-radius, var(--lumo-border-radius-s));
11
11
  --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
12
12
  --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
13
13
  }
14
14
 
15
- [hidden] {
16
- display: none;
17
- }
18
-
19
- [part='row'] {
20
- list-style-type: none;
21
- display: flex;
22
- align-items: baseline;
23
- justify-content: space-between;
24
- }
25
-
26
- button {
27
- background: transparent;
28
- padding: 0;
29
- border: none;
30
- box-shadow: none;
31
- }
32
-
33
- :host([complete]) ::slotted([slot='progress']),
34
- :host([error]) ::slotted([slot='progress']) {
35
- display: none !important;
36
- }
37
-
38
- :host([focus-ring]) [part='row'] {
39
- border-radius: var(--lumo-border-radius-s);
40
- box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
15
+ :host(:focus-visible) {
16
+ outline: var(--_focus-ring-width) solid var(--_focus-ring-color);
17
+ outline-offset: calc(var(--_focus-ring-width) * -1);
41
18
  }
42
19
 
43
20
  [part='status'],
@@ -46,57 +23,48 @@
46
23
  font-size: var(--lumo-font-size-s);
47
24
  }
48
25
 
49
- [part='info'] {
50
- display: flex;
51
- align-items: baseline;
52
- flex: auto;
53
- }
54
-
55
- [part='meta'] {
56
- width: 0.001px;
57
- flex: 1 1 auto;
58
- }
59
-
60
26
  [part='name'] {
27
+ color: var(--lumo-body-text-color);
61
28
  white-space: nowrap;
62
- overflow: hidden;
63
- text-overflow: ellipsis;
64
29
  }
65
30
 
66
31
  [part='commands'] {
67
- display: flex;
68
- align-items: baseline;
69
- flex: none;
32
+ align-self: start;
70
33
  }
71
34
 
72
35
  [part$='icon'] {
73
- margin-right: var(--lumo-space-xs);
74
36
  font-size: var(--lumo-icon-size-m);
75
37
  font-family: 'lumo-icons';
76
38
  line-height: 1;
77
- }
78
-
79
- /* When both icons are hidden, let us keep space for one */
80
- [part='done-icon'][hidden] + [part='warning-icon'][hidden] {
81
- display: block !important;
82
- visibility: hidden;
39
+ align-self: start;
83
40
  }
84
41
 
85
42
  [part$='button'] {
86
- flex: none;
87
- margin-left: var(--lumo-space-xs);
43
+ border: none;
44
+ box-shadow: none;
45
+ outline: none;
46
+ padding: 0;
47
+ border-radius: var(--lumo-border-radius-s);
88
48
  cursor: var(--lumo-clickable-cursor);
89
49
  }
90
50
 
91
51
  [part$='button']:focus {
92
- outline: none;
93
- border-radius: var(--lumo-border-radius-s);
94
- box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
52
+ outline: var(--_focus-ring-width) solid var(--_focus-ring-color);
53
+ outline-offset: calc(var(--_focus-ring-width) * -1);
54
+ }
55
+
56
+ /* Vertically align icons / buttons with the first line of text */
57
+ [part$='icon'],
58
+ [part$='button'] {
59
+ margin-top: calc((1em * var(--lumo-line-height-m) - var(--lumo-icon-size-m)) / 2);
95
60
  }
96
61
 
97
62
  [part$='icon']::before,
98
63
  [part$='button']::before {
99
- vertical-align: -0.25em;
64
+ background: transparent;
65
+ mask-image: none;
66
+ width: auto;
67
+ height: auto;
100
68
  }
101
69
 
102
70
  [part='done-icon']::before {
@@ -126,8 +94,6 @@
126
94
  }
127
95
 
128
96
  ::slotted([slot='progress']) {
129
- width: auto;
130
- margin-left: calc(var(--lumo-icon-size-m) + var(--lumo-space-xs));
131
- margin-right: calc(var(--lumo-icon-size-m) + var(--lumo-space-xs));
97
+ margin-inline-end: calc(var(--lumo-icon-size-m) + var(--lumo-space-xs));
132
98
  }
133
99
  }
@@ -3,7 +3,8 @@
3
3
  * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
- :where(:root, :host) {
6
+ :where(:root),
7
+ :where(:host) {
7
8
  color: var(--lumo-body-text-color);
8
9
  background-color: var(--lumo-base-color);
9
10
  color-scheme: light;
@@ -3,6 +3,6 @@
3
3
  * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
- import type { CSSResult } from 'lit';
7
-
8
- export const userColors: CSSResult;
6
+ @import './badge.css';
7
+ @import './color-scheme.css';
8
+ @import './typography.css';
@@ -3,7 +3,8 @@
3
3
  * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
- :where(body, :host) {
6
+ :where(body),
7
+ :where(:host) {
7
8
  font-family: var(--lumo-font-family);
8
9
  font-size: var(--lumo-font-size-m);
9
10
  line-height: var(--lumo-line-height-m);
@@ -6,12 +6,9 @@
6
6
 
7
7
  @media lumo_mixins_dashboard-item {
8
8
  :host {
9
- box-sizing: border-box;
10
9
  --_widget-background: var(--vaadin-dashboard-widget-background, var(--lumo-base-color));
11
10
  --_widget-border-radius: var(--vaadin-dashboard-widget-border-radius, var(--lumo-border-radius-l));
12
- --_widget-border-width: var(--vaadin-dashboard-widget-border-width, 1px);
13
11
  --_widget-border-color: var(--vaadin-dashboard-widget-border-color, var(--lumo-contrast-20pct));
14
- --_widget-shadow: var(--vaadin-dashboard-widget-shadow, 0 0 0 0 transparent);
15
12
  --_widget-editable-shadow: var(--lumo-box-shadow-s);
16
13
  --_widget-selected-shadow:
17
14
  0 2px 4px -1px var(--lumo-primary-color-10pct), 0 3px 12px -1px var(--lumo-primary-color-50pct);
@@ -32,166 +29,40 @@
32
29
  filter: var(--_widget-filter);
33
30
  }
34
31
 
35
- :host([dragging]) * {
36
- visibility: hidden;
37
- }
38
-
39
- :host(:not([editable])) [part~='move-button'],
40
- :host(:not([editable])) [part~='remove-button'],
41
- :host(:not([editable])) #focus-button,
42
- :host(:not([editable])) #focus-button-wrapper,
43
- :host(:not([editable])) .mode-controls {
44
- display: none;
45
- }
46
-
47
- #focustrap {
48
- display: contents;
49
- }
50
-
51
- #focus-button-wrapper,
52
- #focus-button {
53
- position: absolute;
54
- inset: 0;
55
- opacity: 0;
56
- }
57
-
58
- #focus-button {
59
- pointer-events: none;
60
- padding: 0;
61
- border: none;
62
- }
63
-
64
- .mode-controls {
65
- position: absolute;
66
- inset: 0;
67
- z-index: 2;
68
- }
69
-
70
- .mode-controls[hidden] {
71
- display: none;
72
- }
73
-
74
- /* Move-mode buttons */
75
- [part~='move-backward-button'],
76
- [part~='move-forward-button'],
77
32
  [part~='move-apply-button'] {
78
- position: absolute;
79
- top: 50%;
80
- }
81
-
82
- [part~='move-backward-button'] {
83
- inset-inline-start: 0;
84
- transform: translateY(-50%);
85
- }
86
-
87
- [part~='move-forward-button'] {
88
- inset-inline-end: 0;
89
- transform: translateY(-50%);
90
- }
91
-
92
- [part~='move-apply-button'] {
93
- left: 50%;
94
- transform: translate(-50%, -50%);
95
33
  --icon: var(--lumo-icons-checkmark);
96
34
  font-size: var(--lumo-icon-size-m);
97
35
  }
98
36
 
99
- :host([first-child]) [part~='move-backward-button'],
100
- :host([last-child]) [part~='move-forward-button'] {
101
- display: none;
102
- }
103
-
104
- /* Resize-mode buttons */
105
- [part~='resize-shrink-width-button'],
106
- [part~='resize-shrink-height-button'],
107
- [part~='resize-grow-width-button'],
108
- [part~='resize-grow-height-button'],
109
- [part~='resize-apply-button'] {
110
- position: absolute;
111
- }
112
-
113
- [part~='resize-shrink-width-button'] {
114
- inset-inline-end: 0;
115
- top: 50%;
116
- }
117
-
118
- :host(:not([dir='rtl'])) [part~='resize-shrink-width-button'] {
119
- transform: translateY(-50%) translateX(-100%);
120
- }
121
-
122
- :host([dir='rtl']) [part~='resize-shrink-width-button'] {
123
- transform: translateY(-50%) translateX(100%);
124
- }
125
-
126
- .mode-controls:has([part~='resize-grow-width-button'][hidden]) [part~='resize-shrink-width-button'] {
127
- transform: translateY(-50%);
128
- }
129
-
130
- [part~='resize-grow-width-button'] {
131
- inset-inline-start: 100%;
132
- top: 50%;
133
- }
134
-
135
- :host(:not([dir='rtl'])) [part~='resize-grow-width-button'] {
136
- transform: translateY(-50%) translateX(-100%);
137
- }
138
-
139
- :host([dir='rtl']) [part~='resize-grow-width-button'] {
140
- transform: translateY(-50%) translateX(100%);
141
- }
142
-
143
- [part~='resize-shrink-height-button'] {
144
- bottom: 0;
145
- left: 50%;
146
- transform: translateX(-50%) translateY(-100%);
147
- }
148
-
149
- [part~='resize-grow-height-button'] {
150
- top: 100%;
151
- left: 50%;
152
- transform: translateX(-50%) translateY(-100%);
153
- }
154
-
155
- [part~='resize-apply-button'] {
156
- left: 50%;
157
- top: 50%;
158
-
159
- transform: translate(-50%, -50%);
160
- }
161
-
162
37
  :host([focused]) {
163
- z-index: 1;
38
+ outline: none;
164
39
  }
165
40
 
166
41
  header {
167
42
  overflow: hidden;
168
- display: flex;
169
43
  align-items: start;
170
- box-sizing: border-box;
171
- justify-content: space-between;
44
+ gap: 0;
172
45
  }
173
46
 
174
47
  [part='title'] {
175
- flex: 1;
176
48
  color: var(--lumo-header-text-color);
177
- white-space: var(--vaadin-dashboard-widget-title-wrap, wrap);
178
- text-overflow: ellipsis;
179
- overflow: hidden;
180
49
  line-height: var(--lumo-line-height-s);
181
50
  margin: 0 0 1px;
182
- align-self: safe center;
183
51
  }
184
52
 
185
53
  vaadin-dashboard-button {
186
54
  font-family: 'lumo-icons';
187
55
  font-size: var(--lumo-icon-size-m);
188
56
  margin: 0;
189
- z-index: 1;
190
57
  }
191
58
 
192
59
  vaadin-dashboard-button .icon::before {
193
60
  display: block;
194
61
  content: var(--icon);
62
+ background: transparent;
63
+ mask-image: none;
64
+ width: auto;
65
+ height: auto;
195
66
  }
196
67
 
197
68
  /* Common styles for non-mode edit buttons */
@@ -218,13 +89,11 @@
218
89
 
219
90
  /* Drag handle */
220
91
  [part~='move-button'] {
221
- cursor: move;
222
92
  --icon: var(--lumo-icons-drag-handle);
223
93
  }
224
94
 
225
95
  /* Remove button */
226
96
  [part~='remove-button'] {
227
- cursor: pointer;
228
97
  --icon: var(--lumo-icons-cross);
229
98
  margin-inline-start: var(--lumo-space-xs);
230
99
  }
@@ -236,17 +105,17 @@
236
105
 
237
106
  /* Move mode */
238
107
 
108
+ :host([move-mode]) :is([part~='move-forward-button'], [part~='move-backward-button']) .icon {
109
+ rotate: none;
110
+ }
111
+
239
112
  :host(:not([dir='rtl'])) [part~='move-backward-button'],
240
113
  :host([dir='rtl']) [part~='move-forward-button'] {
241
- border-top-left-radius: 0;
242
- border-bottom-left-radius: 0;
243
114
  --icon: var(--lumo-icons-angle-left);
244
115
  }
245
116
 
246
117
  :host(:not([dir='rtl'])) [part~='move-forward-button'],
247
118
  :host([dir='rtl']) [part~='move-backward-button'] {
248
- border-top-right-radius: 0;
249
- border-bottom-right-radius: 0;
250
119
  --icon: var(--lumo-icons-angle-right);
251
120
  }
252
121
  }
@@ -166,7 +166,7 @@
166
166
  font-weight: 400;
167
167
  }
168
168
 
169
- [part='clear-button']::before {
169
+ [part~='clear-button']::before {
170
170
  content: var(--lumo-icons-cross);
171
171
  }
172
172
 
@@ -31,16 +31,16 @@
31
31
  display: block;
32
32
  }
33
33
 
34
- [part='clear-button'] {
34
+ [part~='clear-button'] {
35
35
  display: none;
36
36
  cursor: default;
37
37
  }
38
38
 
39
- [part='clear-button']::before {
39
+ [part~='clear-button']::before {
40
40
  content: '\2715';
41
41
  }
42
42
 
43
- :host([clear-button-visible][has-value]:not([disabled]):not([readonly])) [part='clear-button'] {
43
+ :host([clear-button-visible][has-value]:not([disabled]):not([readonly])) [part~='clear-button'] {
44
44
  display: block;
45
45
  }
46
46
  }
@@ -38,7 +38,7 @@
38
38
  /* CSS API for host */
39
39
  --vaadin-overlay-viewport-bottom: 0;
40
40
 
41
- inset: var(--lumo-space-m) var(--lumo-space-m) var(--lumo-space-m) var(--lumo-space-m);
41
+ inset: var(--vaadin-overlay-viewport-inset, var(--lumo-space-m));
42
42
  /* Workaround for Edge issue (only on Surface), where an overflowing vaadin-list-box inside vaadin-select-overlay makes the overlay transparent */
43
43
  /* stylelint-disable-next-line */
44
44
  outline: 0px solid transparent;
@@ -65,13 +65,23 @@
65
65
  box-shadow:
66
66
  0 0 0 1px var(--lumo-shade-5pct),
67
67
  var(--lumo-box-shadow-m);
68
+
69
+ /* CSS reset for font styles */
68
70
  color: var(--lumo-body-text-color);
69
71
  font-family: var(--lumo-font-family);
70
72
  font-size: var(--lumo-font-size-m);
73
+ font-style: normal;
71
74
  font-weight: 400;
75
+ font-variant: normal;
72
76
  line-height: var(--lumo-line-height-m);
73
77
  letter-spacing: 0;
78
+ text-align: initial;
79
+ text-decoration: none;
80
+ text-indent: initial;
74
81
  text-transform: none;
82
+ user-select: text;
83
+ white-space: initial;
84
+ word-spacing: initial;
75
85
  -webkit-text-size-adjust: 100%;
76
86
  -webkit-font-smoothing: antialiased;
77
87
  -moz-osx-font-smoothing: grayscale;
@@ -17,7 +17,8 @@
17
17
  }
18
18
 
19
19
  .resizer-container {
20
- overflow: auto;
20
+ display: flex;
21
+ flex-direction: column;
21
22
  flex-grow: 1;
22
23
  border-radius: inherit; /* prevent child elements being drawn outside part=overlay */
23
24
  }
@@ -3,7 +3,8 @@
3
3
  * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
- :where(:root, :host) {
6
+ :where(:root),
7
+ :where(:host) {
7
8
  /* Base (background) */
8
9
  --lumo-base-color: #fff;
9
10
 
@@ -92,7 +93,8 @@
92
93
 
93
94
  /* forced-colors mode adjustments */
94
95
  @media (forced-colors: active) {
95
- :where(:root, :host) {
96
+ :where(:root),
97
+ :where(:host) {
96
98
  --lumo-disabled-text-color: GrayText;
97
99
  }
98
100
  }