@vaadin/grid 24.2.3 → 24.3.0-alpha10

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 (61) hide show
  1. package/package.json +18 -13
  2. package/src/vaadin-grid-a11y-mixin.js +1 -1
  3. package/src/vaadin-grid-active-item-mixin.js +1 -0
  4. package/src/vaadin-grid-array-data-provider-mixin.js +14 -17
  5. package/src/vaadin-grid-column-group-mixin.d.ts +20 -0
  6. package/src/vaadin-grid-column-group-mixin.js +364 -0
  7. package/src/vaadin-grid-column-group.d.ts +4 -14
  8. package/src/vaadin-grid-column-group.js +5 -355
  9. package/src/vaadin-grid-column-mixin.d.ts +170 -0
  10. package/src/vaadin-grid-column-mixin.js +958 -0
  11. package/src/vaadin-grid-column.d.ts +11 -138
  12. package/src/vaadin-grid-column.js +5 -876
  13. package/src/vaadin-grid-data-provider-mixin.d.ts +6 -30
  14. package/src/vaadin-grid-data-provider-mixin.js +122 -246
  15. package/src/vaadin-grid-drag-and-drop-mixin.js +17 -5
  16. package/src/vaadin-grid-dynamic-columns-mixin.js +22 -17
  17. package/src/vaadin-grid-filter-column-mixin.d.ts +22 -0
  18. package/src/vaadin-grid-filter-column-mixin.js +106 -0
  19. package/src/vaadin-grid-filter-column.d.ts +9 -11
  20. package/src/vaadin-grid-filter-column.js +3 -90
  21. package/src/vaadin-grid-filter-element-mixin.d.ts +34 -0
  22. package/src/vaadin-grid-filter-element-mixin.js +108 -0
  23. package/src/vaadin-grid-filter-mixin.js +4 -4
  24. package/src/vaadin-grid-filter.d.ts +4 -21
  25. package/src/vaadin-grid-filter.js +5 -84
  26. package/src/vaadin-grid-helpers.js +94 -0
  27. package/src/vaadin-grid-keyboard-navigation-mixin.js +11 -4
  28. package/src/vaadin-grid-mixin.js +21 -37
  29. package/src/vaadin-grid-row-details-mixin.js +7 -8
  30. package/src/vaadin-grid-scroll-mixin.js +2 -1
  31. package/src/vaadin-grid-selection-column-base-mixin.js +12 -4
  32. package/src/vaadin-grid-selection-column-mixin.d.ts +24 -0
  33. package/src/vaadin-grid-selection-column-mixin.js +194 -0
  34. package/src/vaadin-grid-selection-column.d.ts +13 -17
  35. package/src/vaadin-grid-selection-column.js +4 -186
  36. package/src/vaadin-grid-selection-mixin.js +4 -3
  37. package/src/vaadin-grid-sort-column-mixin.d.ts +36 -0
  38. package/src/vaadin-grid-sort-column-mixin.js +101 -0
  39. package/src/vaadin-grid-sort-column.d.ts +8 -26
  40. package/src/vaadin-grid-sort-column.js +3 -87
  41. package/src/vaadin-grid-sorter-mixin.d.ts +44 -0
  42. package/src/vaadin-grid-sorter-mixin.js +200 -0
  43. package/src/vaadin-grid-sorter.d.ts +3 -32
  44. package/src/vaadin-grid-sorter.js +5 -181
  45. package/src/vaadin-grid-styles.js +341 -345
  46. package/src/vaadin-grid-styling-mixin.js +8 -2
  47. package/src/vaadin-grid-tree-column-mixin.d.ts +18 -0
  48. package/src/vaadin-grid-tree-column-mixin.js +99 -0
  49. package/src/vaadin-grid-tree-column.d.ts +9 -7
  50. package/src/vaadin-grid-tree-column.js +3 -82
  51. package/src/vaadin-grid-tree-toggle-mixin.d.ts +39 -0
  52. package/src/vaadin-grid-tree-toggle-mixin.js +153 -0
  53. package/src/vaadin-grid-tree-toggle.d.ts +4 -27
  54. package/src/vaadin-grid-tree-toggle.js +9 -141
  55. package/src/vaadin-grid.d.ts +3 -0
  56. package/src/vaadin-grid.js +7 -2
  57. package/theme/lumo/vaadin-grid-sorter-styles.js +1 -1
  58. package/theme/lumo/vaadin-grid-styles.js +15 -14
  59. package/theme/material/vaadin-grid-styles.js +15 -10
  60. package/web-types.json +331 -126
  61. package/web-types.lit.json +114 -58
@@ -4,13 +4,15 @@
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
  import './vaadin-grid-column.js';
7
- import './vaadin-grid-styles.js';
8
7
  import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
9
8
  import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
10
9
  import { defineCustomElement } from '@vaadin/component-base/src/define.js';
11
10
  import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
12
- import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
11
+ import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
13
12
  import { GridMixin } from './vaadin-grid-mixin.js';
13
+ import { gridStyles } from './vaadin-grid-styles.js';
14
+
15
+ registerStyles('vaadin-grid', gridStyles, { moduleId: 'vaadin-grid-styles' });
14
16
 
15
17
  /**
16
18
  * `<vaadin-grid>` is a free, high quality data grid / data table Web Component. The content of the
@@ -154,6 +156,8 @@ import { GridMixin } from './vaadin-grid-mixin.js';
154
156
  * Part name | Description
155
157
  * ---------------------------|----------------
156
158
  * `row` | Row in the internal table
159
+ * `body-row` | Body row in the internal table
160
+ * `collapsed-row` | Collapsed row
157
161
  * `expanded-row` | Expanded row
158
162
  * `selected-row` | Selected row
159
163
  * `details-opened-row` | Row with details open
@@ -183,6 +187,7 @@ import { GridMixin } from './vaadin-grid-mixin.js';
183
187
  * `last-footer-row-cell` | Cell in the last footer row
184
188
  * `loading-row-cell` | Cell in a row that is waiting for data from data provider
185
189
  * `selected-row-cell` | Cell in a selected row
190
+ * `collapsed-row-cell` | Cell in a collapsed row
186
191
  * `expanded-row-cell` | Cell in an expanded row
187
192
  * `details-opened-row-cell` | Cell in an row with details open
188
193
  * `dragstart-row-cell` | Cell in a row that user started to drag (set for one frame)
@@ -34,7 +34,7 @@ registerStyles(
34
34
  }
35
35
 
36
36
  :host([direction]) {
37
- color: var(--lumo-primary-text-color);
37
+ color: var(--vaadin-selection-color-text, var(--lumo-primary-text-color));
38
38
  }
39
39
 
40
40
  [part='order'] {
@@ -4,7 +4,7 @@ import '@vaadin/vaadin-lumo-styles/sizing.js';
4
4
  import '@vaadin/vaadin-lumo-styles/spacing.js';
5
5
  import '@vaadin/vaadin-lumo-styles/style.js';
6
6
  import '@vaadin/vaadin-lumo-styles/typography.js';
7
- import '@vaadin/checkbox/theme/lumo/vaadin-checkbox.js';
7
+ import '@vaadin/checkbox/theme/lumo/vaadin-checkbox-styles.js';
8
8
  import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
9
9
 
10
10
  registerStyles(
@@ -21,7 +21,8 @@ registerStyles(
21
21
  -webkit-tap-highlight-color: transparent;
22
22
  -webkit-font-smoothing: antialiased;
23
23
  -moz-osx-font-smoothing: grayscale;
24
-
24
+ --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
25
+ --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
25
26
  /* For internal use only */
26
27
  --_lumo-grid-border-color: var(--lumo-contrast-20pct);
27
28
  --_lumo-grid-secondary-border-color: var(--lumo-contrast-10pct);
@@ -43,12 +44,15 @@ registerStyles(
43
44
 
44
45
  [part~='cell'] {
45
46
  min-height: var(--lumo-size-m);
46
- background-color: var(--lumo-base-color);
47
+ background-color: var(--vaadin-grid-cell-background, var(--lumo-base-color));
48
+ cursor: default;
49
+ --_cell-padding: var(--vaadin-grid-cell-padding, var(--_cell-default-padding));
50
+ --_cell-default-padding: var(--lumo-space-xs) var(--lumo-space-m);
47
51
  }
48
52
 
49
53
  [part~='cell'] ::slotted(vaadin-grid-cell-content) {
50
- cursor: default;
51
- padding: var(--lumo-space-xs) var(--lumo-space-m);
54
+ cursor: inherit;
55
+ padding: var(--_cell-padding);
52
56
  }
53
57
 
54
58
  /* Apply row borders by default and introduce the "no-row-borders" variant */
@@ -79,7 +83,7 @@ registerStyles(
79
83
  position: absolute;
80
84
  inset: 0;
81
85
  pointer-events: none;
82
- box-shadow: inset 0 0 0 2px var(--lumo-primary-color-50pct);
86
+ box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
83
87
  }
84
88
 
85
89
  :host([navigating]) [part~='row']:focus::before {
@@ -94,7 +98,7 @@ registerStyles(
94
98
  z-index: 100;
95
99
  inset: 0;
96
100
  pointer-events: none;
97
- box-shadow: inset 0 0 0 2px var(--lumo-primary-color-50pct);
101
+ box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
98
102
  }
99
103
 
100
104
  [part~='row'][dragover] {
@@ -187,14 +191,14 @@ registerStyles(
187
191
 
188
192
  /* Headers and footers */
189
193
 
190
- [part~='header-cell'] ::slotted(vaadin-grid-cell-content),
191
- [part~='footer-cell'] ::slotted(vaadin-grid-cell-content),
194
+ [part~='header-cell'],
195
+ [part~='footer-cell'],
192
196
  [part~='reorder-ghost'] {
193
197
  font-size: var(--lumo-font-size-s);
194
198
  font-weight: 500;
195
199
  }
196
200
 
197
- [part~='footer-cell'] ::slotted(vaadin-grid-cell-content) {
201
+ [part~='footer-cell'] {
198
202
  font-weight: 400;
199
203
  }
200
204
 
@@ -331,16 +335,13 @@ registerStyles(
331
335
 
332
336
  :host([theme~='compact']) [part~='cell'] {
333
337
  min-height: var(--lumo-size-s);
338
+ --_cell-default-padding: var(--lumo-space-xs) var(--lumo-space-s);
334
339
  }
335
340
 
336
341
  :host([theme~='compact']) [part~='first-row'] [part~='cell']:not([part~='details-cell']) {
337
342
  min-height: calc(var(--lumo-size-s) - var(--_lumo-grid-border-width));
338
343
  }
339
344
 
340
- :host([theme~='compact']) [part~='cell'] ::slotted(vaadin-grid-cell-content) {
341
- padding: var(--lumo-space-xs) var(--lumo-space-s);
342
- }
343
-
344
345
  /* Wrap cell contents */
345
346
 
346
347
  :host([theme~='wrap-cell-content']) [part~='cell'] ::slotted(vaadin-grid-cell-content) {
@@ -20,19 +20,21 @@ registerStyles(
20
20
  [part~='cell'] {
21
21
  min-height: 48px;
22
22
  -webkit-tap-highlight-color: transparent;
23
+ --_cell-padding: var(--vaadin-grid-cell-padding, var(--_cell-default-padding));
24
+ --_cell-default-padding: 8px 16px;
23
25
  }
24
26
 
25
27
  [part~='cell'] ::slotted(vaadin-grid-cell-content) {
26
- padding: 8px 16px;
28
+ padding: var(--_cell-padding);
27
29
  }
28
30
 
29
- [part~='details-cell'] ::slotted(vaadin-grid-cell-content) {
30
- padding: 14px 16px;
31
+ [part~='details-cell'] {
32
+ --_cell-default-padding: 14px 16px;
31
33
  }
32
34
 
33
35
  [part~='header-cell'],
34
36
  [part~='footer-cell'] {
35
- background-color: var(--material-background-color);
37
+ background-color: var(--vaadin-grid-cell-background, var(--material-background-color));
36
38
  color: var(--material-secondary-text-color);
37
39
  font-size: var(--material-caption-font-size);
38
40
  font-weight: 500;
@@ -53,15 +55,18 @@ registerStyles(
53
55
  /* Body rows/cells */
54
56
 
55
57
  [part~='body-cell'] {
56
- background-color: var(--material-background-color);
58
+ background-color: var(--vaadin-grid-cell-background, var(--material-background-color));
57
59
  }
58
60
 
59
61
  [part~='row']:hover > [part~='body-cell'] {
60
- background: linear-gradient(
61
- var(--_material-grid-row-hover-background-color, rgba(0, 0, 0, 0.04)),
62
- var(--_material-grid-row-hover-background-color, rgba(0, 0, 0, 0.04))
63
- )
64
- var(--material-background-color);
62
+ background: var(
63
+ --vaadin-grid-cell-background,
64
+ linear-gradient(
65
+ var(--_material-grid-row-hover-background-color, rgba(0, 0, 0, 0.04)),
66
+ var(--_material-grid-row-hover-background-color, rgba(0, 0, 0, 0.04))
67
+ )
68
+ var(--material-background-color)
69
+ );
65
70
  }
66
71
 
67
72
  @media (hover: none) {