@vaadin/grid 24.4.0-alpha9 → 24.4.0-dev.4b20a0c55
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.
- package/README.md +0 -1
- package/package.json +10 -10
- package/src/vaadin-grid-data-provider-mixin.js +1 -5
- package/src/vaadin-grid-mixin.js +25 -12
- package/src/vaadin-grid-scroll-mixin.js +13 -0
- package/src/vaadin-grid-selection-column-base-mixin.js +18 -0
- package/src/vaadin-grid-tree-toggle-mixin.js +2 -4
- package/theme/lumo/all-imports.d.ts +0 -11
- package/theme/lumo/lit-all-imports.d.ts +0 -11
- package/theme/lumo/vaadin-grid-column-group.d.ts +0 -1
- package/theme/lumo/vaadin-grid-column.d.ts +0 -1
- package/theme/lumo/vaadin-grid-filter-column.d.ts +0 -2
- package/theme/lumo/vaadin-grid-filter.d.ts +0 -2
- package/theme/lumo/vaadin-grid-selection-column.d.ts +0 -2
- package/theme/lumo/vaadin-grid-sort-column.d.ts +0 -2
- package/theme/lumo/vaadin-grid-sorter-styles.d.ts +0 -3
- package/theme/lumo/vaadin-grid-sorter.d.ts +0 -2
- package/theme/lumo/vaadin-grid-styles.d.ts +0 -6
- package/theme/lumo/vaadin-grid-tree-column.d.ts +0 -2
- package/theme/lumo/vaadin-grid-tree-toggle-styles.d.ts +0 -3
- package/theme/lumo/vaadin-grid-tree-toggle.d.ts +0 -2
- package/theme/lumo/vaadin-grid.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid-column-group.d.ts +0 -1
- package/theme/lumo/vaadin-lit-grid-column.d.ts +0 -1
- package/theme/lumo/vaadin-lit-grid-filter-column.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid-filter.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid-selection-column.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid-sort-column.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid-sorter.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid-tree-column.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid-tree-toggle.d.ts +0 -2
- package/theme/lumo/vaadin-lit-grid.d.ts +0 -2
- package/theme/material/all-imports.d.ts +0 -11
- package/theme/material/lit-all-imports.d.ts +0 -11
- package/theme/material/vaadin-grid-column-group.d.ts +0 -1
- package/theme/material/vaadin-grid-column.d.ts +0 -1
- package/theme/material/vaadin-grid-filter-column.d.ts +0 -2
- package/theme/material/vaadin-grid-filter.d.ts +0 -2
- package/theme/material/vaadin-grid-selection-column.d.ts +0 -2
- package/theme/material/vaadin-grid-sort-column.d.ts +0 -2
- package/theme/material/vaadin-grid-sorter-styles.d.ts +0 -2
- package/theme/material/vaadin-grid-sorter.d.ts +0 -2
- package/theme/material/vaadin-grid-styles.d.ts +0 -2
- package/theme/material/vaadin-grid-tree-column.d.ts +0 -2
- package/theme/material/vaadin-grid-tree-toggle-styles.d.ts +0 -3
- package/theme/material/vaadin-grid-tree-toggle.d.ts +0 -2
- package/theme/material/vaadin-grid.d.ts +0 -2
- package/theme/material/vaadin-lit-grid-column-group.d.ts +0 -1
- package/theme/material/vaadin-lit-grid-column.d.ts +0 -1
- package/theme/material/vaadin-lit-grid-filter-column.d.ts +0 -2
- package/theme/material/vaadin-lit-grid-filter.d.ts +0 -2
- package/theme/material/vaadin-lit-grid-selection-column.d.ts +0 -2
- package/theme/material/vaadin-lit-grid-sort-column.d.ts +0 -2
- package/theme/material/vaadin-lit-grid-sorter.d.ts +0 -2
- package/theme/material/vaadin-lit-grid-tree-column.d.ts +0 -2
- package/theme/material/vaadin-lit-grid-tree-toggle.d.ts +0 -2
- package/theme/material/vaadin-lit-grid.d.ts +0 -2
- package/web-types.json +0 -2575
- package/web-types.lit.json +0 -1091
package/README.md
CHANGED
|
@@ -5,7 +5,6 @@ A web component for showing tabular data.
|
|
|
5
5
|
[Documentation + Live Demo ↗](https://vaadin.com/docs/latest/components/grid)
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@vaadin/grid)
|
|
8
|
-
[](https://discord.gg/PHmkCKC)
|
|
9
8
|
|
|
10
9
|
```html
|
|
11
10
|
<vaadin-grid theme="row-dividers" column-reordering-allowed multi-sort>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/grid",
|
|
3
|
-
"version": "24.4.0-
|
|
3
|
+
"version": "24.4.0-dev.4b20a0c55",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
48
48
|
"@polymer/polymer": "^3.0.0",
|
|
49
|
-
"@vaadin/a11y-base": "24.4.0-
|
|
50
|
-
"@vaadin/checkbox": "24.4.0-
|
|
51
|
-
"@vaadin/component-base": "24.4.0-
|
|
52
|
-
"@vaadin/lit-renderer": "24.4.0-
|
|
53
|
-
"@vaadin/text-field": "24.4.0-
|
|
54
|
-
"@vaadin/vaadin-lumo-styles": "24.4.0-
|
|
55
|
-
"@vaadin/vaadin-material-styles": "24.4.0-
|
|
56
|
-
"@vaadin/vaadin-themable-mixin": "24.4.0-
|
|
49
|
+
"@vaadin/a11y-base": "24.4.0-dev.4b20a0c55",
|
|
50
|
+
"@vaadin/checkbox": "24.4.0-dev.4b20a0c55",
|
|
51
|
+
"@vaadin/component-base": "24.4.0-dev.4b20a0c55",
|
|
52
|
+
"@vaadin/lit-renderer": "24.4.0-dev.4b20a0c55",
|
|
53
|
+
"@vaadin/text-field": "24.4.0-dev.4b20a0c55",
|
|
54
|
+
"@vaadin/vaadin-lumo-styles": "24.4.0-dev.4b20a0c55",
|
|
55
|
+
"@vaadin/vaadin-material-styles": "24.4.0-dev.4b20a0c55",
|
|
56
|
+
"@vaadin/vaadin-themable-mixin": "24.4.0-dev.4b20a0c55",
|
|
57
57
|
"lit": "^3.0.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"web-types.json",
|
|
66
66
|
"web-types.lit.json"
|
|
67
67
|
],
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "b79c81e5f6fd24684b34ee0dc434e94d943ea13e"
|
|
69
69
|
}
|
|
@@ -206,10 +206,6 @@ export const DataProviderMixin = (superClass) =>
|
|
|
206
206
|
* @protected
|
|
207
207
|
*/
|
|
208
208
|
_getItem(index, el) {
|
|
209
|
-
if (index >= this._flatSize) {
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
209
|
el.index = index;
|
|
214
210
|
|
|
215
211
|
const { item } = this._dataProviderController.getFlatIndexContext(index);
|
|
@@ -374,7 +370,7 @@ export const DataProviderMixin = (superClass) =>
|
|
|
374
370
|
this._hasData = false;
|
|
375
371
|
this.__updateVisibleRows();
|
|
376
372
|
|
|
377
|
-
if (!this.__virtualizer.size) {
|
|
373
|
+
if (!this.__virtualizer || !this.__virtualizer.size) {
|
|
378
374
|
this._dataProviderController.loadFirstPage();
|
|
379
375
|
}
|
|
380
376
|
}
|
package/src/vaadin-grid-mixin.js
CHANGED
|
@@ -316,11 +316,6 @@ export const GridMixin = (superClass) =>
|
|
|
316
316
|
}
|
|
317
317
|
}
|
|
318
318
|
|
|
319
|
-
/** @private */
|
|
320
|
-
__hasRowsWithClientHeight() {
|
|
321
|
-
return !!Array.from(this.$.items.children).filter((row) => row.clientHeight).length;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
319
|
/** @private */
|
|
325
320
|
__getIntrinsicWidth(col) {
|
|
326
321
|
if (!this.__intrinsicWidthCache.has(col)) {
|
|
@@ -498,12 +493,26 @@ export const GridMixin = (superClass) =>
|
|
|
498
493
|
|
|
499
494
|
/** @private */
|
|
500
495
|
__tryToRecalculateColumnWidthsIfPending() {
|
|
501
|
-
if (
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
496
|
+
if (!this.__pendingRecalculateColumnWidths || isElementHidden(this) || this._dataProviderController.isLoading()) {
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// Delay recalculation if any rows are missing an index.
|
|
501
|
+
// This can happen during the grid's initialization if the recalculation is triggered
|
|
502
|
+
// as a result of the data provider responding synchronously to a page request created
|
|
503
|
+
// in the middle of the virtualizer update loop. In this case, rows after the one that
|
|
504
|
+
// triggered the page request may not have an index property yet. The lack of index
|
|
505
|
+
// prevents _onDataProviderPageReceived from requesting children for these rows,
|
|
506
|
+
// resulting in loading state being set to false and the recalculation beginning
|
|
507
|
+
// before all the data is loaded. Note, rows without index get updated in later iterations
|
|
508
|
+
// of the virtualizer update loop, ensuring the grid eventually reaches a stable state.
|
|
509
|
+
const hasRowsWithUndefinedIndex = [...this.$.items.children].some((row) => row.index === undefined);
|
|
510
|
+
if (hasRowsWithUndefinedIndex) {
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
const hasRowsWithClientHeight = [...this.$.items.children].some((row) => row.clientHeight > 0);
|
|
515
|
+
if (hasRowsWithClientHeight) {
|
|
507
516
|
this.__pendingRecalculateColumnWidths = false;
|
|
508
517
|
this.recalculateColumnWidths();
|
|
509
518
|
}
|
|
@@ -580,6 +589,10 @@ export const GridMixin = (superClass) =>
|
|
|
580
589
|
});
|
|
581
590
|
}
|
|
582
591
|
|
|
592
|
+
if (column && column._onCellKeyDown) {
|
|
593
|
+
cell.addEventListener('keydown', column._onCellKeyDown.bind(column));
|
|
594
|
+
}
|
|
595
|
+
|
|
583
596
|
const slot = document.createElement('slot');
|
|
584
597
|
slot.setAttribute('name', slotName);
|
|
585
598
|
|
|
@@ -711,7 +724,7 @@ export const GridMixin = (superClass) =>
|
|
|
711
724
|
// Header & footer
|
|
712
725
|
const tagName = section === 'header' ? 'th' : 'td';
|
|
713
726
|
if (isColumnRow || column.localName === 'vaadin-grid-column-group') {
|
|
714
|
-
cell = column[`_${section}Cell`] || this._createCell(tagName);
|
|
727
|
+
cell = column[`_${section}Cell`] || this._createCell(tagName, column);
|
|
715
728
|
cell._column = column;
|
|
716
729
|
row.appendChild(cell);
|
|
717
730
|
column[`_${section}Cell`] = cell;
|
|
@@ -123,6 +123,19 @@ export const ScrollMixin = (superClass) =>
|
|
|
123
123
|
this.$.items.addEventListener('focusin', (e) => {
|
|
124
124
|
const itemsIndex = e.composedPath().indexOf(this.$.items);
|
|
125
125
|
this._rowWithFocusedElement = e.composedPath()[itemsIndex - 1];
|
|
126
|
+
|
|
127
|
+
if (this._rowWithFocusedElement) {
|
|
128
|
+
// Make sure the row with the focused element is fully inside the visible viewport
|
|
129
|
+
this.__scrollIntoViewport(this._rowWithFocusedElement.index);
|
|
130
|
+
|
|
131
|
+
if (!this.$.table.contains(e.relatedTarget)) {
|
|
132
|
+
// Virtualizer can't catch the event because if orginates from the light DOM.
|
|
133
|
+
// Dispatch a virtualizer-element-focused event for virtualizer to catch.
|
|
134
|
+
this.$.table.dispatchEvent(
|
|
135
|
+
new CustomEvent('virtualizer-element-focused', { detail: { element: this._rowWithFocusedElement } }),
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
126
139
|
});
|
|
127
140
|
this.$.items.addEventListener('focusout', () => {
|
|
128
141
|
this._rowWithFocusedElement = undefined;
|
|
@@ -31,6 +31,14 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
31
31
|
sync: true,
|
|
32
32
|
},
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Override `autoWidth` to enable auto-width
|
|
36
|
+
*/
|
|
37
|
+
autoWidth: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
value: true,
|
|
40
|
+
},
|
|
41
|
+
|
|
34
42
|
/**
|
|
35
43
|
* Flex grow ratio for the cell widths. When set to 0, cell width is fixed.
|
|
36
44
|
* @attr {number} flex-grow
|
|
@@ -233,6 +241,16 @@ export const GridSelectionColumnBaseMixin = (superClass) =>
|
|
|
233
241
|
}
|
|
234
242
|
}
|
|
235
243
|
|
|
244
|
+
/** @private */
|
|
245
|
+
_onCellKeyDown(e) {
|
|
246
|
+
const target = e.composedPath()[0];
|
|
247
|
+
// Toggle on Space without having to enter interaction mode first
|
|
248
|
+
if (e.keyCode === 32 && (target === this._headerCell || (this._cells.includes(target) && !this.autoSelect))) {
|
|
249
|
+
const checkbox = target._content.firstElementChild;
|
|
250
|
+
checkbox.checked = !checkbox.checked;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
236
254
|
/** @private */
|
|
237
255
|
__dragAutoScroller() {
|
|
238
256
|
if (this.__dragStartIndex === undefined) {
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import './vaadin-grid-column-group.js';
|
|
2
|
-
import './vaadin-grid-column.js';
|
|
3
|
-
import './vaadin-grid-filter.js';
|
|
4
|
-
import './vaadin-grid-filter-column.js';
|
|
5
|
-
import './vaadin-grid-selection-column.js';
|
|
6
|
-
import './vaadin-grid-sorter.js';
|
|
7
|
-
import './vaadin-grid-sort-column.js';
|
|
8
|
-
import './vaadin-grid-tree-toggle.js';
|
|
9
|
-
import './vaadin-grid-tree-column.js';
|
|
10
|
-
import './vaadin-grid.js';
|
|
11
|
-
import '../../src/all-imports.js';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import './vaadin-lit-grid-column-group.js';
|
|
2
|
-
import './vaadin-lit-grid-column.js';
|
|
3
|
-
import './vaadin-lit-grid-filter.js';
|
|
4
|
-
import './vaadin-lit-grid-filter-column.js';
|
|
5
|
-
import './vaadin-lit-grid-selection-column.js';
|
|
6
|
-
import './vaadin-lit-grid-sorter.js';
|
|
7
|
-
import './vaadin-lit-grid-sort-column.js';
|
|
8
|
-
import './vaadin-lit-grid-tree-toggle.js';
|
|
9
|
-
import './vaadin-lit-grid-tree-column.js';
|
|
10
|
-
import './vaadin-lit-grid.js';
|
|
11
|
-
import '../../src/lit-all-imports.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-grid-column-group.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-grid-column.js';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import '@vaadin/vaadin-lumo-styles/color.js';
|
|
2
|
-
import '@vaadin/vaadin-lumo-styles/font-icons.js';
|
|
3
|
-
import '@vaadin/vaadin-lumo-styles/sizing.js';
|
|
4
|
-
import '@vaadin/vaadin-lumo-styles/spacing.js';
|
|
5
|
-
import '@vaadin/vaadin-lumo-styles/style.js';
|
|
6
|
-
import '@vaadin/vaadin-lumo-styles/typography.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-lit-grid-column-group.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-lit-grid-column.js';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import './vaadin-grid-column-group.js';
|
|
2
|
-
import './vaadin-grid-column.js';
|
|
3
|
-
import './vaadin-grid-filter.js';
|
|
4
|
-
import './vaadin-grid-filter-column.js';
|
|
5
|
-
import './vaadin-grid-selection-column.js';
|
|
6
|
-
import './vaadin-grid-sorter.js';
|
|
7
|
-
import './vaadin-grid-sort-column.js';
|
|
8
|
-
import './vaadin-grid-tree-toggle.js';
|
|
9
|
-
import './vaadin-grid-tree-column.js';
|
|
10
|
-
import './vaadin-grid.js';
|
|
11
|
-
import '../../src/all-imports.js';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import './vaadin-lit-grid-column-group.js';
|
|
2
|
-
import './vaadin-lit-grid-column.js';
|
|
3
|
-
import './vaadin-lit-grid-filter.js';
|
|
4
|
-
import './vaadin-lit-grid-filter-column.js';
|
|
5
|
-
import './vaadin-lit-grid-selection-column.js';
|
|
6
|
-
import './vaadin-lit-grid-sorter.js';
|
|
7
|
-
import './vaadin-lit-grid-sort-column.js';
|
|
8
|
-
import './vaadin-lit-grid-tree-toggle.js';
|
|
9
|
-
import './vaadin-lit-grid-tree-column.js';
|
|
10
|
-
import './vaadin-lit-grid.js';
|
|
11
|
-
import '../../src/lit-all-imports.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-grid-column-group.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-grid-column.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-lit-grid-column-group.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/vaadin-lit-grid-column.js';
|