@vaadin/grid 23.0.0-alpha1 → 23.0.0-alpha5
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/package.json +10 -9
- package/src/all-imports.js +1 -1
- package/src/array-data-provider.js +2 -3
- package/src/vaadin-grid-a11y-mixin.js +1 -1
- package/src/vaadin-grid-active-item-mixin.d.ts +1 -1
- package/src/vaadin-grid-active-item-mixin.js +1 -1
- package/src/vaadin-grid-array-data-provider-mixin.d.ts +1 -1
- package/src/vaadin-grid-array-data-provider-mixin.js +1 -1
- package/src/vaadin-grid-column-group.d.ts +1 -1
- package/src/vaadin-grid-column-group.js +2 -2
- package/src/vaadin-grid-column-reordering-mixin.d.ts +1 -1
- package/src/vaadin-grid-column-reordering-mixin.js +5 -8
- package/src/vaadin-grid-column-resizing-mixin.js +3 -4
- package/src/vaadin-grid-column.d.ts +1 -1
- package/src/vaadin-grid-column.js +25 -14
- package/src/vaadin-grid-data-provider-mixin.d.ts +1 -1
- package/src/vaadin-grid-data-provider-mixin.js +4 -6
- package/src/vaadin-grid-drag-and-drop-mixin.d.ts +1 -1
- package/src/vaadin-grid-drag-and-drop-mixin.js +1 -1
- package/src/vaadin-grid-dynamic-columns-mixin.js +6 -9
- package/src/vaadin-grid-event-context-mixin.d.ts +1 -1
- package/src/vaadin-grid-event-context-mixin.js +1 -1
- package/src/vaadin-grid-filter-column.d.ts +1 -1
- package/src/vaadin-grid-filter-column.js +1 -1
- package/src/vaadin-grid-filter-mixin.js +1 -1
- package/src/vaadin-grid-filter.d.ts +1 -1
- package/src/vaadin-grid-filter.js +1 -1
- package/src/vaadin-grid-helpers.js +3 -3
- package/src/vaadin-grid-keyboard-navigation-mixin.js +77 -70
- package/src/vaadin-grid-row-details-mixin.d.ts +1 -1
- package/src/vaadin-grid-row-details-mixin.js +1 -2
- package/src/vaadin-grid-scroll-mixin.d.ts +1 -1
- package/src/vaadin-grid-scroll-mixin.js +6 -6
- package/src/vaadin-grid-selection-column.d.ts +1 -1
- package/src/vaadin-grid-selection-column.js +2 -2
- package/src/vaadin-grid-selection-mixin.d.ts +1 -1
- package/src/vaadin-grid-selection-mixin.js +1 -1
- package/src/vaadin-grid-sort-column.d.ts +1 -1
- package/src/vaadin-grid-sort-column.js +1 -1
- package/src/vaadin-grid-sort-mixin.d.ts +1 -1
- package/src/vaadin-grid-sort-mixin.js +8 -10
- package/src/vaadin-grid-sorter.d.ts +1 -1
- package/src/vaadin-grid-sorter.js +1 -1
- package/src/vaadin-grid-styles.js +1 -1
- package/src/vaadin-grid-styling-mixin.d.ts +1 -1
- package/src/vaadin-grid-styling-mixin.js +1 -1
- package/src/vaadin-grid-tree-column.d.ts +1 -1
- package/src/vaadin-grid-tree-column.js +1 -1
- package/src/vaadin-grid-tree-toggle.d.ts +1 -1
- package/src/vaadin-grid-tree-toggle.js +1 -1
- package/src/vaadin-grid.d.ts +19 -27
- package/src/vaadin-grid.js +34 -35
- package/theme/lumo/vaadin-grid-styles.js +4 -0
- package/theme/material/vaadin-grid-styles.js +4 -2
package/src/vaadin-grid.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2016 - 2022 Vaadin Ltd.
|
|
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';
|
|
@@ -139,20 +139,16 @@ import { StylingMixin } from './vaadin-grid-styling-mixin.js';
|
|
|
139
139
|
* in the second argument of the data provider callback:__
|
|
140
140
|
*
|
|
141
141
|
* ```javascript
|
|
142
|
-
* grid.dataProvider =
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* );
|
|
153
|
-
* };
|
|
154
|
-
* xhr.open('GET', url, true);
|
|
155
|
-
* xhr.send();
|
|
142
|
+
* grid.dataProvider = ({page, pageSize}, callback) => {
|
|
143
|
+
* // page: the requested page index
|
|
144
|
+
* // pageSize: number of items on one page
|
|
145
|
+
* const url = `https://api.example/data?page=${page}&per_page=${pageSize}`;
|
|
146
|
+
*
|
|
147
|
+
* fetch(url)
|
|
148
|
+
* .then((res) => res.json())
|
|
149
|
+
* .then(({ employees, totalSize }) => {
|
|
150
|
+
* callback(employees, totalSize);
|
|
151
|
+
* });
|
|
156
152
|
* };
|
|
157
153
|
* ```
|
|
158
154
|
*
|
|
@@ -160,17 +156,12 @@ import { StylingMixin } from './vaadin-grid-styling-mixin.js';
|
|
|
160
156
|
*
|
|
161
157
|
* ```javascript
|
|
162
158
|
* grid.size = 200; // The total number of items
|
|
163
|
-
* grid.dataProvider =
|
|
164
|
-
* const url =
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* const response = JSON.parse(xhr.responseText);
|
|
170
|
-
* callback(response.employees);
|
|
171
|
-
* };
|
|
172
|
-
* xhr.open('GET', url, true);
|
|
173
|
-
* xhr.send();
|
|
159
|
+
* grid.dataProvider = ({page, pageSize}, callback) => {
|
|
160
|
+
* const url = `https://api.example/data?page=${page}&per_page=${pageSize}`;
|
|
161
|
+
*
|
|
162
|
+
* fetch(url)
|
|
163
|
+
* .then((res) => res.json())
|
|
164
|
+
* .then((resJson) => callback(resJson.employees));
|
|
174
165
|
* };
|
|
175
166
|
* ```
|
|
176
167
|
*
|
|
@@ -203,7 +194,7 @@ import { StylingMixin } from './vaadin-grid-styling-mixin.js';
|
|
|
203
194
|
* `reorder-status` | Reflects the status of a cell while columns are being reordered | cell
|
|
204
195
|
* `frozen` | Frozen cell | cell
|
|
205
196
|
* `last-frozen` | Last frozen cell | cell
|
|
206
|
-
*
|
|
197
|
+
* `first-column` | First visible cell on a row | cell
|
|
207
198
|
* `last-column` | Last visible cell on a row | cell
|
|
208
199
|
* `selected` | Selected row | row
|
|
209
200
|
* `expanded` | Expanded row | row
|
|
@@ -211,6 +202,7 @@ import { StylingMixin } from './vaadin-grid-styling-mixin.js';
|
|
|
211
202
|
* `loading` | Row that is waiting for data from data provider | row
|
|
212
203
|
* `odd` | Odd row | row
|
|
213
204
|
* `first` | The first body row | row
|
|
205
|
+
* `last` | The last body row | row
|
|
214
206
|
* `dragstart` | Set for one frame when drag of a row is starting. The value is a number when multiple rows are dragged | row
|
|
215
207
|
* `dragover` | Set when the row is dragged over | row
|
|
216
208
|
* `drag-disabled` | Set to a row that isn't available for dragging | row
|
|
@@ -288,7 +280,7 @@ class Grid extends ElementMixin(
|
|
|
288
280
|
loading$="[[loading]]"
|
|
289
281
|
column-reordering-allowed$="[[columnReorderingAllowed]]"
|
|
290
282
|
>
|
|
291
|
-
<table id="table" role="
|
|
283
|
+
<table id="table" role="treegrid" aria-multiselectable="true" tabindex="0">
|
|
292
284
|
<caption id="sizer" part="row"></caption>
|
|
293
285
|
<thead id="header" role="rowgroup"></thead>
|
|
294
286
|
<tbody id="items" role="rowgroup"></tbody>
|
|
@@ -498,6 +490,7 @@ class Grid extends ElementMixin(
|
|
|
498
490
|
const cellCoordinates = this.__getBodyCellCoordinates(cell);
|
|
499
491
|
|
|
500
492
|
virtualizer.size = effectiveSize;
|
|
493
|
+
virtualizer.update();
|
|
501
494
|
virtualizer.flush();
|
|
502
495
|
|
|
503
496
|
// If the focused cell's parent row got hidden by the size change, focus the corresponding new cell
|
|
@@ -552,7 +545,9 @@ class Grid extends ElementMixin(
|
|
|
552
545
|
|
|
553
546
|
/** @private */
|
|
554
547
|
__getDistributedWidth(col, innerColumn) {
|
|
555
|
-
if (col == null || col === this)
|
|
548
|
+
if (col == null || col === this) {
|
|
549
|
+
return 0;
|
|
550
|
+
}
|
|
556
551
|
|
|
557
552
|
const columnWidth = Math.max(this.__getIntrinsicWidth(col), this.__getDistributedWidth(col.parentElement, col));
|
|
558
553
|
|
|
@@ -589,6 +584,9 @@ class Grid extends ElementMixin(
|
|
|
589
584
|
* @private
|
|
590
585
|
*/
|
|
591
586
|
_recalculateColumnWidths(cols) {
|
|
587
|
+
// Flush to make sure DOM is up-to-date when measuring the column widths
|
|
588
|
+
this.__virtualizer.flush();
|
|
589
|
+
|
|
592
590
|
cols.forEach((col) => {
|
|
593
591
|
col.width = `${this.__getDistributedWidth(col)}px`;
|
|
594
592
|
});
|
|
@@ -694,6 +692,7 @@ class Grid extends ElementMixin(
|
|
|
694
692
|
* @param {boolean} noNotify
|
|
695
693
|
* @protected
|
|
696
694
|
*/
|
|
695
|
+
// eslint-disable-next-line max-params
|
|
697
696
|
_updateRow(row, columns, section, isColumnRow, noNotify) {
|
|
698
697
|
section = section || 'body';
|
|
699
698
|
|
|
@@ -802,13 +801,12 @@ class Grid extends ElementMixin(
|
|
|
802
801
|
// -> row should be visible
|
|
803
802
|
return true;
|
|
804
803
|
}
|
|
805
|
-
} else {
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
return true;
|
|
810
|
-
}
|
|
804
|
+
} else if (column.footerRenderer) {
|
|
805
|
+
// The cell is the footer cell of a column that has a footer renderer
|
|
806
|
+
// -> row should be visible
|
|
807
|
+
return true;
|
|
811
808
|
}
|
|
809
|
+
return false;
|
|
812
810
|
});
|
|
813
811
|
|
|
814
812
|
if (row.hidden !== !visibleRowCells.length) {
|
|
@@ -828,6 +826,7 @@ class Grid extends ElementMixin(
|
|
|
828
826
|
}
|
|
829
827
|
|
|
830
828
|
row.toggleAttribute('first', index === 0);
|
|
829
|
+
row.toggleAttribute('last', index === this._effectiveSize - 1);
|
|
831
830
|
row.toggleAttribute('odd', index % 2);
|
|
832
831
|
this._a11yUpdateRowRowindex(row, index);
|
|
833
832
|
this._getItem(index, row);
|
|
@@ -133,6 +133,10 @@ registerStyles(
|
|
|
133
133
|
margin-top: -1px;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
+
:host([all-rows-visible]) [part~='row'][last][dragover='below'] [part~='cell']::after {
|
|
137
|
+
height: 1px;
|
|
138
|
+
}
|
|
139
|
+
|
|
136
140
|
[part~='row'][dragover='above'] [part~='cell']::after {
|
|
137
141
|
top: auto;
|
|
138
142
|
bottom: 100%;
|
|
@@ -183,6 +183,10 @@ registerStyles(
|
|
|
183
183
|
margin-top: -1px;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
+
:host([all-rows-visible]) [part~='row'][last][dragover='below'] [part~='cell']::after {
|
|
187
|
+
height: 1px;
|
|
188
|
+
}
|
|
189
|
+
|
|
186
190
|
[part~='row'][dragover='above'] [part~='cell']::after {
|
|
187
191
|
top: auto;
|
|
188
192
|
bottom: 100%;
|
|
@@ -200,8 +204,6 @@ registerStyles(
|
|
|
200
204
|
}
|
|
201
205
|
|
|
202
206
|
[part~='row'][dragstart] {
|
|
203
|
-
/* Add bottom-space to the row so the drag number doesn't get clipped. Needed for IE/Edge */
|
|
204
|
-
border-bottom: 100px solid transparent;
|
|
205
207
|
z-index: 100 !important;
|
|
206
208
|
opacity: 0.9;
|
|
207
209
|
}
|