@vaadin/vaadin-lumo-styles 25.0.0-alpha8 → 25.0.0-beta1

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 (188) 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 +14 -5
  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 +3 -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 +3 -5
  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/horizontal-layout.css +0 -4
  106. package/src/components/icon.css +2 -2
  107. package/src/components/input-container.css +1 -3
  108. package/src/components/login-form-wrapper.css +5 -26
  109. package/src/components/login-overlay-wrapper.css +14 -4
  110. package/src/components/menu-bar-button.css +7 -7
  111. package/src/components/message.css +7 -32
  112. package/src/components/multi-select-combo-box.css +6 -2
  113. package/src/components/notification-container.css +8 -1
  114. package/src/components/number-field.css +6 -6
  115. package/src/components/password-field.css +4 -4
  116. package/src/components/popover-overlay.css +2 -138
  117. package/src/components/radio-button.css +1 -1
  118. package/src/components/rich-text-editor.css +40 -142
  119. package/src/components/scroller.css +3 -22
  120. package/src/components/select.css +15 -2
  121. package/src/components/side-nav-item.css +13 -0
  122. package/src/components/split-layout.css +19 -97
  123. package/src/components/tabsheet.css +5 -1
  124. package/src/components/text-area.css +2 -2
  125. package/src/components/time-picker.css +1 -1
  126. package/src/components/tooltip-overlay.css +4 -1
  127. package/src/components/upload-file.css +27 -61
  128. package/src/components/upload-icon.css +6 -0
  129. package/src/components/user-tags-overlay.css +2 -5
  130. package/src/components/vertical-layout.css +0 -4
  131. package/src/global/color-scheme.css +2 -1
  132. package/{user-colors.d.ts → src/global/index.css} +3 -3
  133. package/src/global/typography.css +2 -1
  134. package/src/mixins/dashboard-item.css +10 -142
  135. package/src/mixins/field-base.css +1 -1
  136. package/src/mixins/field-button.css +3 -3
  137. package/src/mixins/overlay.css +11 -1
  138. package/src/mixins/resizable-overlay.css +2 -1
  139. package/src/props/color.css +4 -2
  140. package/src/props/icons.css +21 -18
  141. package/src/props/index.css +12 -0
  142. package/src/props/reset.css +2 -1
  143. package/src/props/sizing.css +2 -1
  144. package/src/props/spacing.css +2 -1
  145. package/src/props/style.css +2 -1
  146. package/src/props/typography.css +2 -1
  147. package/utility.css +0 -1
  148. package/vaadin-iconset.js +2 -0
  149. package/auto-complete.css +0 -2512
  150. package/badge-global.js +0 -9
  151. package/badge.d.ts +0 -3
  152. package/badge.js +0 -178
  153. package/color-global.js +0 -9
  154. package/color.d.ts +0 -5
  155. package/color.js +0 -221
  156. package/components.css +0 -71
  157. package/font-icons.js +0 -69
  158. package/global.css +0 -8
  159. package/global.js +0 -5
  160. package/presets/compact.js +0 -40
  161. package/props.css +0 -12
  162. package/sizing.d.ts +0 -3
  163. package/sizing.js +0 -29
  164. package/spacing.d.ts +0 -3
  165. package/spacing.js +0 -37
  166. package/src/components/form-layout.css +0 -11
  167. package/src/components/master-detail-layout.css +0 -21
  168. package/src/components/upload-file-list.css +0 -24
  169. package/style.d.ts +0 -3
  170. package/style.js +0 -31
  171. package/typography-global.js +0 -13
  172. package/typography.d.ts +0 -7
  173. package/typography.js +0 -129
  174. package/user-colors.js +0 -33
  175. package/utilities/accessibility.js +0 -21
  176. package/utilities/background.js +0 -156
  177. package/utilities/border.js +0 -147
  178. package/utilities/filter.js +0 -34
  179. package/utilities/flexbox-grid.js +0 -619
  180. package/utilities/layout.js +0 -504
  181. package/utilities/shadows.js +0 -28
  182. package/utilities/sizing.js +0 -121
  183. package/utilities/spacing.js +0 -542
  184. package/utilities/transition.js +0 -50
  185. package/utilities/typography.js +0 -344
  186. package/utility-global.js +0 -9
  187. package/utility.d.ts +0 -3
  188. 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;
@@ -54,6 +58,6 @@
54
58
  }
55
59
 
56
60
  :host([theme~='no-padding']) [part='content'] {
57
- padding: 0;
61
+ padding: 0 !important;
58
62
  }
59
63
  }
@@ -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
  }
@@ -4,11 +4,17 @@
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_upload-icon {
7
+ :host {
8
+ display: inline-block;
9
+ }
10
+
7
11
  :host::before {
8
12
  content: var(--lumo-icons-upload);
9
13
  font-family: lumo-icons;
10
14
  font-size: var(--lumo-icon-size-m);
11
15
  line-height: 1;
12
16
  vertical-align: -0.25em;
17
+ background-color: transparent;
18
+ mask-image: none;
13
19
  }
14
20
  }
@@ -15,10 +15,11 @@
15
15
  will-change: opacity, transform;
16
16
  }
17
17
 
18
- ::slotted([part='tags']) {
18
+ [part='content'] {
19
19
  display: flex;
20
20
  flex-direction: column;
21
21
  align-items: flex-start;
22
+ padding: 0;
22
23
  }
23
24
 
24
25
  :host([dir='rtl']) [part='overlay'] {
@@ -26,10 +27,6 @@
26
27
  right: -4px;
27
28
  }
28
29
 
29
- [part='content'] {
30
- padding: 0;
31
- }
32
-
33
30
  :host([opening]),
34
31
  :host([closing]) {
35
32
  animation: 0.14s user-tags-overlay-dummy-animation;
@@ -31,8 +31,4 @@
31
31
  :host([theme~='spacing-xl']) {
32
32
  gap: var(--lumo-space-xl);
33
33
  }
34
-
35
- :host([theme~='wrap']) {
36
- flex-wrap: wrap;
37
- }
38
34
  }
@@ -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);
@@ -5,14 +5,10 @@
5
5
  */
6
6
 
7
7
  @media lumo_mixins_dashboard-item {
8
- /* stylelint-disable length-zero-no-unit */
9
8
  :host {
10
- box-sizing: border-box;
11
9
  --_widget-background: var(--vaadin-dashboard-widget-background, var(--lumo-base-color));
12
10
  --_widget-border-radius: var(--vaadin-dashboard-widget-border-radius, var(--lumo-border-radius-l));
13
- --_widget-border-width: var(--vaadin-dashboard-widget-border-width, 1px);
14
11
  --_widget-border-color: var(--vaadin-dashboard-widget-border-color, var(--lumo-contrast-20pct));
15
- --_widget-shadow: var(--vaadin-dashboard-widget-shadow, 0 0 0 0 transparent);
16
12
  --_widget-editable-shadow: var(--lumo-box-shadow-s);
17
13
  --_widget-selected-shadow:
18
14
  0 2px 4px -1px var(--lumo-primary-color-10pct), 0 3px 12px -1px var(--lumo-primary-color-50pct);
@@ -33,166 +29,40 @@
33
29
  filter: var(--_widget-filter);
34
30
  }
35
31
 
36
- :host([dragging]) * {
37
- visibility: hidden;
38
- }
39
-
40
- :host(:not([editable])) [part~='move-button'],
41
- :host(:not([editable])) [part~='remove-button'],
42
- :host(:not([editable])) #focus-button,
43
- :host(:not([editable])) #focus-button-wrapper,
44
- :host(:not([editable])) .mode-controls {
45
- display: none;
46
- }
47
-
48
- #focustrap {
49
- display: contents;
50
- }
51
-
52
- #focus-button-wrapper,
53
- #focus-button {
54
- position: absolute;
55
- inset: 0;
56
- opacity: 0;
57
- }
58
-
59
- #focus-button {
60
- pointer-events: none;
61
- padding: 0;
62
- border: none;
63
- }
64
-
65
- .mode-controls {
66
- position: absolute;
67
- inset: 0;
68
- z-index: 2;
69
- }
70
-
71
- .mode-controls[hidden] {
72
- display: none;
73
- }
74
-
75
- /* Move-mode buttons */
76
- [part~='move-backward-button'],
77
- [part~='move-forward-button'],
78
32
  [part~='move-apply-button'] {
79
- position: absolute;
80
- top: 50%;
81
- }
82
-
83
- [part~='move-backward-button'] {
84
- inset-inline-start: 0;
85
- transform: translateY(-50%);
86
- }
87
-
88
- [part~='move-forward-button'] {
89
- inset-inline-end: 0;
90
- transform: translateY(-50%);
91
- }
92
-
93
- [part~='move-apply-button'] {
94
- left: 50%;
95
- transform: translate(-50%, -50%);
96
33
  --icon: var(--lumo-icons-checkmark);
97
34
  font-size: var(--lumo-icon-size-m);
98
35
  }
99
36
 
100
- :host([first-child]) [part~='move-backward-button'],
101
- :host([last-child]) [part~='move-forward-button'] {
102
- display: none;
103
- }
104
-
105
- /* Resize-mode buttons */
106
- [part~='resize-shrink-width-button'],
107
- [part~='resize-shrink-height-button'],
108
- [part~='resize-grow-width-button'],
109
- [part~='resize-grow-height-button'],
110
- [part~='resize-apply-button'] {
111
- position: absolute;
112
- }
113
-
114
- [part~='resize-shrink-width-button'] {
115
- inset-inline-end: 0;
116
- top: 50%;
117
- }
118
-
119
- :host(:not([dir='rtl'])) [part~='resize-shrink-width-button'] {
120
- transform: translateY(-50%) translateX(-100%);
121
- }
122
-
123
- :host([dir='rtl']) [part~='resize-shrink-width-button'] {
124
- transform: translateY(-50%) translateX(100%);
125
- }
126
-
127
- .mode-controls:has([part~='resize-grow-width-button'][hidden]) [part~='resize-shrink-width-button'] {
128
- transform: translateY(-50%);
129
- }
130
-
131
- [part~='resize-grow-width-button'] {
132
- inset-inline-start: 100%;
133
- top: 50%;
134
- }
135
-
136
- :host(:not([dir='rtl'])) [part~='resize-grow-width-button'] {
137
- transform: translateY(-50%) translateX(-100%);
138
- }
139
-
140
- :host([dir='rtl']) [part~='resize-grow-width-button'] {
141
- transform: translateY(-50%) translateX(100%);
142
- }
143
-
144
- [part~='resize-shrink-height-button'] {
145
- bottom: 0;
146
- left: 50%;
147
- transform: translateX(-50%) translateY(-100%);
148
- }
149
-
150
- [part~='resize-grow-height-button'] {
151
- top: 100%;
152
- left: 50%;
153
- transform: translateX(-50%) translateY(-100%);
154
- }
155
-
156
- [part~='resize-apply-button'] {
157
- left: 50%;
158
- top: 50%;
159
-
160
- transform: translate(-50%, -50%);
161
- }
162
-
163
37
  :host([focused]) {
164
- z-index: 1;
38
+ outline: none;
165
39
  }
166
40
 
167
41
  header {
168
42
  overflow: hidden;
169
- display: flex;
170
43
  align-items: start;
171
- box-sizing: border-box;
172
- justify-content: space-between;
44
+ gap: 0;
173
45
  }
174
46
 
175
47
  [part='title'] {
176
- flex: 1;
177
48
  color: var(--lumo-header-text-color);
178
- white-space: var(--vaadin-dashboard-widget-title-wrap, wrap);
179
- text-overflow: ellipsis;
180
- overflow: hidden;
181
49
  line-height: var(--lumo-line-height-s);
182
50
  margin: 0 0 1px;
183
- align-self: safe center;
184
51
  }
185
52
 
186
53
  vaadin-dashboard-button {
187
54
  font-family: 'lumo-icons';
188
55
  font-size: var(--lumo-icon-size-m);
189
56
  margin: 0;
190
- z-index: 1;
191
57
  }
192
58
 
193
59
  vaadin-dashboard-button .icon::before {
194
60
  display: block;
195
61
  content: var(--icon);
62
+ background: transparent;
63
+ mask-image: none;
64
+ width: auto;
65
+ height: auto;
196
66
  }
197
67
 
198
68
  /* Common styles for non-mode edit buttons */
@@ -219,13 +89,11 @@
219
89
 
220
90
  /* Drag handle */
221
91
  [part~='move-button'] {
222
- cursor: move;
223
92
  --icon: var(--lumo-icons-drag-handle);
224
93
  }
225
94
 
226
95
  /* Remove button */
227
96
  [part~='remove-button'] {
228
- cursor: pointer;
229
97
  --icon: var(--lumo-icons-cross);
230
98
  margin-inline-start: var(--lumo-space-xs);
231
99
  }
@@ -237,17 +105,17 @@
237
105
 
238
106
  /* Move mode */
239
107
 
108
+ :host([move-mode]) :is([part~='move-forward-button'], [part~='move-backward-button']) .icon {
109
+ rotate: none;
110
+ }
111
+
240
112
  :host(:not([dir='rtl'])) [part~='move-backward-button'],
241
113
  :host([dir='rtl']) [part~='move-forward-button'] {
242
- border-top-left-radius: 0;
243
- border-bottom-left-radius: 0;
244
114
  --icon: var(--lumo-icons-angle-left);
245
115
  }
246
116
 
247
117
  :host(:not([dir='rtl'])) [part~='move-forward-button'],
248
118
  :host([dir='rtl']) [part~='move-backward-button'] {
249
- border-top-right-radius: 0;
250
- border-bottom-right-radius: 0;
251
119
  --icon: var(--lumo-icons-angle-right);
252
120
  }
253
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
  }