@vaadin/grid 23.0.9 → 23.0.12

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 (50) hide show
  1. package/package.json +9 -9
  2. package/src/vaadin-grid-a11y-mixin.js +5 -5
  3. package/src/vaadin-grid-active-item-mixin.d.ts +1 -1
  4. package/src/vaadin-grid-active-item-mixin.js +7 -7
  5. package/src/vaadin-grid-array-data-provider-mixin.d.ts +1 -1
  6. package/src/vaadin-grid-array-data-provider-mixin.js +4 -4
  7. package/src/vaadin-grid-column-group.js +7 -7
  8. package/src/vaadin-grid-column-reordering-mixin.d.ts +1 -1
  9. package/src/vaadin-grid-column-reordering-mixin.js +10 -10
  10. package/src/vaadin-grid-column-resizing-mixin.js +4 -4
  11. package/src/vaadin-grid-column.d.ts +2 -2
  12. package/src/vaadin-grid-column.js +19 -19
  13. package/src/vaadin-grid-data-provider-mixin.d.ts +2 -2
  14. package/src/vaadin-grid-data-provider-mixin.js +23 -28
  15. package/src/vaadin-grid-drag-and-drop-mixin.d.ts +1 -1
  16. package/src/vaadin-grid-drag-and-drop-mixin.js +9 -9
  17. package/src/vaadin-grid-dynamic-columns-mixin.js +3 -3
  18. package/src/vaadin-grid-event-context-mixin.d.ts +1 -1
  19. package/src/vaadin-grid-event-context-mixin.js +1 -1
  20. package/src/vaadin-grid-filter-column.js +1 -1
  21. package/src/vaadin-grid-filter-mixin.js +3 -3
  22. package/src/vaadin-grid-filter.d.ts +2 -2
  23. package/src/vaadin-grid-filter.js +2 -2
  24. package/src/vaadin-grid-keyboard-navigation-mixin.js +15 -15
  25. package/src/vaadin-grid-row-details-mixin.d.ts +2 -2
  26. package/src/vaadin-grid-row-details-mixin.js +4 -4
  27. package/src/vaadin-grid-scroll-mixin.js +3 -3
  28. package/src/vaadin-grid-selection-column.d.ts +2 -2
  29. package/src/vaadin-grid-selection-column.js +7 -7
  30. package/src/vaadin-grid-selection-mixin.d.ts +1 -1
  31. package/src/vaadin-grid-selection-mixin.js +26 -7
  32. package/src/vaadin-grid-sort-column.d.ts +2 -2
  33. package/src/vaadin-grid-sort-column.js +2 -2
  34. package/src/vaadin-grid-sort-mixin.js +5 -5
  35. package/src/vaadin-grid-sorter.d.ts +2 -2
  36. package/src/vaadin-grid-sorter.js +4 -4
  37. package/src/vaadin-grid-styles.js +1 -1
  38. package/src/vaadin-grid-styling-mixin.d.ts +1 -1
  39. package/src/vaadin-grid-styling-mixin.js +1 -1
  40. package/src/vaadin-grid-tree-column.js +3 -3
  41. package/src/vaadin-grid-tree-toggle.d.ts +2 -2
  42. package/src/vaadin-grid-tree-toggle.js +4 -4
  43. package/src/vaadin-grid.d.ts +5 -5
  44. package/src/vaadin-grid.js +34 -34
  45. package/theme/lumo/vaadin-grid-sorter-styles.js +1 -1
  46. package/theme/lumo/vaadin-grid-styles.js +2 -2
  47. package/theme/lumo/vaadin-grid-tree-toggle-styles.js +1 -1
  48. package/theme/material/vaadin-grid-sorter-styles.js +1 -1
  49. package/theme/material/vaadin-grid-styles.js +1 -1
  50. package/theme/material/vaadin-grid-tree-toggle-styles.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/grid",
3
- "version": "23.0.9",
3
+ "version": "23.0.12",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -41,19 +41,19 @@
41
41
  "dependencies": {
42
42
  "@open-wc/dedupe-mixin": "^1.3.0",
43
43
  "@polymer/polymer": "^3.0.0",
44
- "@vaadin/checkbox": "^23.0.9",
45
- "@vaadin/component-base": "^23.0.9",
46
- "@vaadin/text-field": "^23.0.9",
47
- "@vaadin/vaadin-lumo-styles": "^23.0.9",
48
- "@vaadin/vaadin-material-styles": "^23.0.9",
49
- "@vaadin/vaadin-themable-mixin": "^23.0.9"
44
+ "@vaadin/checkbox": "^23.0.12",
45
+ "@vaadin/component-base": "^23.0.12",
46
+ "@vaadin/text-field": "^23.0.12",
47
+ "@vaadin/vaadin-lumo-styles": "^23.0.12",
48
+ "@vaadin/vaadin-material-styles": "^23.0.12",
49
+ "@vaadin/vaadin-themable-mixin": "^23.0.12"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@esm-bundle/chai": "^4.3.4",
53
- "@vaadin/polymer-legacy-adapter": "^23.0.9",
53
+ "@vaadin/polymer-legacy-adapter": "^23.0.12",
54
54
  "@vaadin/testing-helpers": "^0.3.2",
55
55
  "lit": "^2.0.0",
56
56
  "sinon": "^9.2.0"
57
57
  },
58
- "gitHead": "4d687bdd48ba78d55f3371a78b70818e4dfca1a3"
58
+ "gitHead": "717908c222c1e241259e30b4144cd5ba32734819"
59
59
  }
@@ -32,7 +32,7 @@ export const A11yMixin = (superClass) =>
32
32
  const bodyColumns = _columnTree[_columnTree.length - 1];
33
33
  this.$.table.setAttribute(
34
34
  'aria-rowcount',
35
- size + this._a11yGetHeaderRowCount(_columnTree) + this._a11yGetFooterRowCount(_columnTree)
35
+ size + this._a11yGetHeaderRowCount(_columnTree) + this._a11yGetFooterRowCount(_columnTree),
36
36
  );
37
37
  this.$.table.setAttribute('aria-colcount', (bodyColumns && bodyColumns.length) || 0);
38
38
 
@@ -43,14 +43,14 @@ export const A11yMixin = (superClass) =>
43
43
  /** @protected */
44
44
  _a11yUpdateHeaderRows() {
45
45
  Array.from(this.$.header.children).forEach((headerRow, index) =>
46
- headerRow.setAttribute('aria-rowindex', index + 1)
46
+ headerRow.setAttribute('aria-rowindex', index + 1),
47
47
  );
48
48
  }
49
49
 
50
50
  /** @protected */
51
51
  _a11yUpdateFooterRows() {
52
52
  Array.from(this.$.footer.children).forEach((footerRow, index) =>
53
- footerRow.setAttribute('aria-rowindex', this._a11yGetHeaderRowCount(this._columnTree) + this.size + index + 1)
53
+ footerRow.setAttribute('aria-rowindex', this._a11yGetHeaderRowCount(this._columnTree) + this.size + index + 1),
54
54
  );
55
55
  }
56
56
 
@@ -137,8 +137,8 @@ export const A11yMixin = (superClass) =>
137
137
  'aria-sort',
138
138
  {
139
139
  asc: 'ascending',
140
- desc: 'descending'
141
- }[String(sorter.direction)] || 'none'
140
+ desc: 'descending',
141
+ }[String(sorter.direction)] || 'none',
142
142
  );
143
143
  }
144
144
  });
@@ -6,7 +6,7 @@
6
6
  import { Constructor } from '@open-wc/dedupe-mixin';
7
7
 
8
8
  export declare function ActiveItemMixin<TItem, T extends Constructor<HTMLElement>>(
9
- base: T
9
+ base: T,
10
10
  ): T & Constructor<ActiveItemMixinClass<TItem>>;
11
11
 
12
12
  export declare class ActiveItemMixinClass<TItem> {
@@ -19,8 +19,8 @@ export const ActiveItemMixin = (superClass) =>
19
19
  activeItem: {
20
20
  type: Object,
21
21
  notify: true,
22
- value: null
23
- }
22
+ value: null,
23
+ },
24
24
  };
25
25
  }
26
26
 
@@ -68,9 +68,9 @@ export const ActiveItemMixin = (superClass) =>
68
68
  this.dispatchEvent(
69
69
  new CustomEvent('cell-activate', {
70
70
  detail: {
71
- model: this.__getRowModel(cell.parentElement)
72
- }
73
- })
71
+ model: this.__getRowModel(cell.parentElement),
72
+ },
73
+ }),
74
74
  );
75
75
  }
76
76
  }
@@ -108,8 +108,8 @@ export const isFocusable = (target) => {
108
108
  }
109
109
  const focusables = Array.from(
110
110
  target.parentNode.querySelectorAll(
111
- '[tabindex], button, input, select, textarea, object, iframe, label, a[href], area[href]'
112
- )
111
+ '[tabindex], button, input, select, textarea, object, iframe, label, a[href], area[href]',
112
+ ),
113
113
  ).filter((element) => element.getAttribute('part') !== 'cell body-cell');
114
114
 
115
115
  const isFocusableElement = focusables.indexOf(target) !== -1;
@@ -6,7 +6,7 @@
6
6
  import { Constructor } from '@open-wc/dedupe-mixin';
7
7
 
8
8
  export declare function ArrayDataProviderMixin<TItem, T extends Constructor<HTMLElement>>(
9
- base: T
9
+ base: T,
10
10
  ): T & Constructor<ArrayDataProviderMixinClass<TItem>>;
11
11
 
12
12
  export declare class ArrayDataProviderMixinClass<TItem> {
@@ -17,7 +17,7 @@ export const ArrayDataProviderMixin = (superClass) =>
17
17
  *
18
18
  * @type {Array<!GridItem> | undefined}
19
19
  */
20
- items: Array
20
+ items: Array,
21
21
  };
22
22
  }
23
23
 
@@ -32,7 +32,7 @@ export const ArrayDataProviderMixin = (superClass) =>
32
32
  this.setProperties({
33
33
  _arrayDataProvider: arrayDataProvider,
34
34
  size: items.length,
35
- dataProvider: arrayDataProvider
35
+ dataProvider: arrayDataProvider,
36
36
  });
37
37
  }
38
38
 
@@ -49,14 +49,14 @@ export const ArrayDataProviderMixin = (superClass) =>
49
49
  // A custom data provider was set externally
50
50
  this.setProperties({
51
51
  _arrayDataProvider: undefined,
52
- items: undefined
52
+ items: undefined,
53
53
  });
54
54
  } else if (!items) {
55
55
  // The items array was unset
56
56
  this.setProperties({
57
57
  _arrayDataProvider: undefined,
58
58
  dataProvider: undefined,
59
- size: 0
59
+ size: 0,
60
60
  });
61
61
  this.clearCache();
62
62
  } else if (this._arrayDataProvider.__items === items) {
@@ -52,7 +52,7 @@ class GridColumnGroup extends ColumnBaseMixin(PolymerElement) {
52
52
  _childColumns: {
53
53
  value: function () {
54
54
  return this._getChildColumns(this);
55
- }
55
+ },
56
56
  },
57
57
 
58
58
  /**
@@ -61,7 +61,7 @@ class GridColumnGroup extends ColumnBaseMixin(PolymerElement) {
61
61
  */
62
62
  flexGrow: {
63
63
  type: Number,
64
- readOnly: true
64
+ readOnly: true,
65
65
  },
66
66
 
67
67
  /**
@@ -69,7 +69,7 @@ class GridColumnGroup extends ColumnBaseMixin(PolymerElement) {
69
69
  */
70
70
  width: {
71
71
  type: String,
72
- readOnly: true
72
+ readOnly: true,
73
73
  },
74
74
 
75
75
  /** @private */
@@ -79,7 +79,7 @@ class GridColumnGroup extends ColumnBaseMixin(PolymerElement) {
79
79
  _colSpan: Number,
80
80
 
81
81
  /** @private */
82
- _rootColumns: Array
82
+ _rootColumns: Array,
83
83
  };
84
84
  }
85
85
 
@@ -90,7 +90,7 @@ class GridColumnGroup extends ColumnBaseMixin(PolymerElement) {
90
90
  '_colSpanChanged(_colSpan, _headerCell, _footerCell)',
91
91
  '_groupOrderChanged(_order, _rootColumns)',
92
92
  '_groupReorderStatusChanged(_reorderStatus, _rootColumns)',
93
- '_groupResizableChanged(resizable, _rootColumns)'
93
+ '_groupResizableChanged(resizable, _rootColumns)',
94
94
  ];
95
95
  }
96
96
 
@@ -209,10 +209,10 @@ class GridColumnGroup extends ColumnBaseMixin(PolymerElement) {
209
209
  .call(
210
210
  this._visibleChildColumns,
211
211
  (prev, curr) => (prev += ' + ' + (curr.width || '0px').replace('calc', '')),
212
- ''
212
+ '',
213
213
  )
214
214
  .substring(3) +
215
- ')'
215
+ ')',
216
216
  );
217
217
  } else {
218
218
  this._setWidth('0px');
@@ -6,7 +6,7 @@
6
6
  import { Constructor } from '@open-wc/dedupe-mixin';
7
7
 
8
8
  export declare function ColumnReorderingMixin<T extends Constructor<HTMLElement>>(
9
- base: T
9
+ base: T,
10
10
  ): T & Constructor<ColumnReorderingMixinClass>;
11
11
 
12
12
  export declare class ColumnReorderingMixinClass {
@@ -20,14 +20,14 @@ export const ColumnReorderingMixin = (superClass) =>
20
20
  */
21
21
  columnReorderingAllowed: {
22
22
  type: Boolean,
23
- value: false
23
+ value: false,
24
24
  },
25
25
 
26
26
  /** @private */
27
27
  _orderBaseScope: {
28
28
  type: Number,
29
- value: 10000000
30
- }
29
+ value: 10000000,
30
+ },
31
31
  };
32
32
  }
33
33
 
@@ -60,8 +60,8 @@ export const ColumnReorderingMixin = (superClass) =>
60
60
  this._onTrackStart({
61
61
  detail: {
62
62
  x: e.touches[0].clientX,
63
- y: e.touches[0].clientY
64
- }
63
+ y: e.touches[0].clientY,
64
+ },
65
65
  });
66
66
  }, 100);
67
67
  }
@@ -184,9 +184,9 @@ export const ColumnReorderingMixin = (superClass) =>
184
184
  this.dispatchEvent(
185
185
  new CustomEvent('column-reorder', {
186
186
  detail: {
187
- columns: this._getColumnsInOrder()
188
- }
189
- })
187
+ columns: this._getColumnsInOrder(),
188
+ },
189
+ }),
190
190
  );
191
191
  }
192
192
 
@@ -261,7 +261,7 @@ export const ColumnReorderingMixin = (superClass) =>
261
261
  'padding',
262
262
  'border',
263
263
  'flex-direction',
264
- 'overflow'
264
+ 'overflow',
265
265
  ].forEach((propertyName) => (ghost.style[propertyName] = style[propertyName]));
266
266
  return ghost;
267
267
  }
@@ -330,7 +330,7 @@ export const ColumnReorderingMixin = (superClass) =>
330
330
  */
331
331
  _isSwappableByPosition(targetColumn, clientX) {
332
332
  const targetCell = Array.from(this.$.header.querySelectorAll('tr:not([hidden]) [part~="cell"]')).filter((cell) =>
333
- targetColumn.contains(cell._column)
333
+ targetColumn.contains(cell._column),
334
334
  )[0];
335
335
  const sourceCellRect = this.$.header
336
336
  .querySelector('tr:not([hidden]) [reorder-status=dragging]')
@@ -21,13 +21,13 @@ export const ColumnResizingMixin = (superClass) =>
21
21
  // Disable contextmenu on any resize separator.
22
22
  scroller.addEventListener(
23
23
  'contextmenu',
24
- (e) => e.target.getAttribute('part') == 'resize-handle' && e.preventDefault()
24
+ (e) => e.target.getAttribute('part') == 'resize-handle' && e.preventDefault(),
25
25
  );
26
26
 
27
27
  // Disable native cell focus when resizing
28
28
  scroller.addEventListener(
29
29
  'mousedown',
30
- (e) => e.target.getAttribute('part') === 'resize-handle' && e.preventDefault()
30
+ (e) => e.target.getAttribute('part') === 'resize-handle' && e.preventDefault(),
31
31
  );
32
32
  }
33
33
 
@@ -90,8 +90,8 @@ export const ColumnResizingMixin = (superClass) =>
90
90
  this.$.scroller.toggleAttribute('column-resizing', false);
91
91
  this.dispatchEvent(
92
92
  new CustomEvent('column-resize', {
93
- detail: { resizedColumn: column }
94
- })
93
+ detail: { resizedColumn: column },
94
+ }),
95
95
  );
96
96
  }
97
97
 
@@ -9,7 +9,7 @@ import { GridDefaultItem, GridItemModel } from './vaadin-grid.js';
9
9
  export type GridBodyRenderer<TItem> = (
10
10
  root: HTMLElement,
11
11
  column: GridColumn<TItem>,
12
- model: GridItemModel<TItem>
12
+ model: GridItemModel<TItem>,
13
13
  ) => void;
14
14
 
15
15
  export type GridColumnTextAlign = 'start' | 'center' | 'end' | null;
@@ -17,7 +17,7 @@ export type GridColumnTextAlign = 'start' | 'center' | 'end' | null;
17
17
  export type GridHeaderFooterRenderer<TItem> = (root: HTMLElement, column: GridColumn<TItem>) => void;
18
18
 
19
19
  export declare function ColumnBaseMixin<TItem, T extends Constructor<HTMLElement>>(
20
- base: T
20
+ base: T,
21
21
  ): T & Constructor<ColumnBaseMixinClass<TItem>>;
22
22
 
23
23
  export declare class ColumnBaseMixinClass<TItem> {
@@ -32,7 +32,7 @@ export const ColumnBaseMixin = (superClass) =>
32
32
  return parent.resizable || false;
33
33
  }
34
34
  return false;
35
- }
35
+ },
36
36
  },
37
37
 
38
38
  /**
@@ -42,7 +42,7 @@ export const ColumnBaseMixin = (superClass) =>
42
42
  */
43
43
  frozen: {
44
44
  type: Boolean,
45
- value: false
45
+ value: false,
46
46
  },
47
47
 
48
48
  /**
@@ -50,14 +50,14 @@ export const ColumnBaseMixin = (superClass) =>
50
50
  */
51
51
  hidden: {
52
52
  type: Boolean,
53
- value: false
53
+ value: false,
54
54
  },
55
55
 
56
56
  /**
57
57
  * Text content to display in the header cell of the column.
58
58
  */
59
59
  header: {
60
- type: String
60
+ type: String,
61
61
  },
62
62
 
63
63
  /**
@@ -67,7 +67,7 @@ export const ColumnBaseMixin = (superClass) =>
67
67
  * @type {GridColumnTextAlign | null | undefined}
68
68
  */
69
69
  textAlign: {
70
- type: String
70
+ type: String,
71
71
  },
72
72
 
73
73
  /**
@@ -76,7 +76,7 @@ export const ColumnBaseMixin = (superClass) =>
76
76
  */
77
77
  _lastFrozen: {
78
78
  type: Boolean,
79
- value: false
79
+ value: false,
80
80
  },
81
81
 
82
82
  /** @protected */
@@ -110,7 +110,7 @@ export const ColumnBaseMixin = (superClass) =>
110
110
  */
111
111
  __initialized: {
112
112
  type: Boolean,
113
- value: true
113
+ value: true,
114
114
  },
115
115
 
116
116
  /**
@@ -133,7 +133,7 @@ export const ColumnBaseMixin = (superClass) =>
133
133
  */
134
134
  _headerRenderer: {
135
135
  type: Function,
136
- computed: '_computeHeaderRenderer(headerRenderer, header, __initialized)'
136
+ computed: '_computeHeaderRenderer(headerRenderer, header, __initialized)',
137
137
  },
138
138
 
139
139
  /**
@@ -156,7 +156,7 @@ export const ColumnBaseMixin = (superClass) =>
156
156
  */
157
157
  _footerRenderer: {
158
158
  type: Function,
159
- computed: '_computeFooterRenderer(footerRenderer, __initialized)'
159
+ computed: '_computeFooterRenderer(footerRenderer, __initialized)',
160
160
  },
161
161
 
162
162
  /**
@@ -167,8 +167,8 @@ export const ColumnBaseMixin = (superClass) =>
167
167
  */
168
168
  __gridColumnElement: {
169
169
  type: Boolean,
170
- value: true
171
- }
170
+ value: true,
171
+ },
172
172
  };
173
173
  }
174
174
 
@@ -185,7 +185,7 @@ export const ColumnBaseMixin = (superClass) =>
185
185
  '_onFooterRendererOrBindingChanged(_footerRenderer, _footerCell)',
186
186
  '_resizableChanged(resizable, _headerCell)',
187
187
  '_reorderStatusChanged(_reorderStatus, _headerCell, _footerCell, _cells.*)',
188
- '_hiddenChanged(hidden, _headerCell, _footerCell, _cells.*)'
188
+ '_hiddenChanged(hidden, _headerCell, _footerCell, _cells.*)',
189
189
  ];
190
190
  }
191
191
 
@@ -418,7 +418,7 @@ export const ColumnBaseMixin = (superClass) =>
418
418
  if (this._grid && this._grid._renderColumnTree) {
419
419
  this._grid._renderColumnTree(this._grid._columnTree);
420
420
  }
421
- }
421
+ },
422
422
  );
423
423
 
424
424
  this._grid._updateLastFrozen && this._grid._updateLastFrozen();
@@ -672,7 +672,7 @@ class GridColumn extends ColumnBaseMixin(DirMixin(PolymerElement)) {
672
672
  */
673
673
  width: {
674
674
  type: String,
675
- value: '100px'
675
+ value: '100px',
676
676
  },
677
677
 
678
678
  /**
@@ -682,7 +682,7 @@ class GridColumn extends ColumnBaseMixin(DirMixin(PolymerElement)) {
682
682
  */
683
683
  flexGrow: {
684
684
  type: Number,
685
- value: 1
685
+ value: 1,
686
686
  },
687
687
 
688
688
  /**
@@ -713,7 +713,7 @@ class GridColumn extends ColumnBaseMixin(DirMixin(PolymerElement)) {
713
713
  */
714
714
  _renderer: {
715
715
  type: Function,
716
- computed: '_computeRenderer(renderer, __initialized)'
716
+ computed: '_computeRenderer(renderer, __initialized)',
717
717
  },
718
718
 
719
719
  /**
@@ -721,7 +721,7 @@ class GridColumn extends ColumnBaseMixin(DirMixin(PolymerElement)) {
721
721
  * The property name is also shown in the column header if an explicit header or renderer isn't defined.
722
722
  */
723
723
  path: {
724
- type: String
724
+ type: String,
725
725
  },
726
726
 
727
727
  /**
@@ -743,14 +743,14 @@ class GridColumn extends ColumnBaseMixin(DirMixin(PolymerElement)) {
743
743
  */
744
744
  autoWidth: {
745
745
  type: Boolean,
746
- value: false
746
+ value: false,
747
747
  },
748
748
 
749
749
  /**
750
750
  * @type {Array<!HTMLElement>}
751
751
  * @protected
752
752
  */
753
- _cells: Array
753
+ _cells: Array,
754
754
  };
755
755
  }
756
756
  }
@@ -30,7 +30,7 @@ export type GridDataProviderParams<TItem> = {
30
30
 
31
31
  export type GridDataProvider<TItem> = (
32
32
  params: GridDataProviderParams<TItem>,
33
- callback: GridDataProviderCallback<TItem>
33
+ callback: GridDataProviderCallback<TItem>,
34
34
  ) => void;
35
35
 
36
36
  export declare class ItemCache<TItem> {
@@ -57,7 +57,7 @@ export declare class ItemCache<TItem> {
57
57
  }
58
58
 
59
59
  export declare function DataProviderMixin<TItem, T extends Constructor<HTMLElement>>(
60
- base: T
60
+ base: T,
61
61
  ): T & Constructor<DataProviderMixinClass<TItem>>;
62
62
 
63
63
  export declare class DataProviderMixinClass<TItem> {
@@ -42,7 +42,7 @@ export const ItemCache = class ItemCache {
42
42
  Object.keys(this.pendingRequests).length ||
43
43
  Object.keys(this.itemCaches).filter((index) => {
44
44
  return this.itemCaches[index].isLoading();
45
- })[0]
45
+ })[0],
46
46
  );
47
47
  }
48
48
 
@@ -113,7 +113,7 @@ export const DataProviderMixin = (superClass) =>
113
113
  */
114
114
  size: {
115
115
  type: Number,
116
- notify: true
116
+ notify: true,
117
117
  },
118
118
 
119
119
  /**
@@ -124,7 +124,7 @@ export const DataProviderMixin = (superClass) =>
124
124
  pageSize: {
125
125
  type: Number,
126
126
  value: 50,
127
- observer: '_pageSizeChanged'
127
+ observer: '_pageSizeChanged',
128
128
  },
129
129
 
130
130
  /**
@@ -153,7 +153,7 @@ export const DataProviderMixin = (superClass) =>
153
153
  dataProvider: {
154
154
  type: Object,
155
155
  notify: true,
156
- observer: '_dataProviderChanged'
156
+ observer: '_dataProviderChanged',
157
157
  },
158
158
 
159
159
  /**
@@ -163,7 +163,7 @@ export const DataProviderMixin = (superClass) =>
163
163
  type: Boolean,
164
164
  notify: true,
165
165
  readOnly: true,
166
- reflectToAttribute: true
166
+ reflectToAttribute: true,
167
167
  },
168
168
 
169
169
  /**
@@ -175,7 +175,7 @@ export const DataProviderMixin = (superClass) =>
175
175
  value: function () {
176
176
  const cache = new ItemCache(this);
177
177
  return cache;
178
- }
178
+ },
179
179
  },
180
180
 
181
181
  /**
@@ -183,7 +183,7 @@ export const DataProviderMixin = (superClass) =>
183
183
  */
184
184
  _hasData: {
185
185
  type: Boolean,
186
- value: false
186
+ value: false,
187
187
  },
188
188
 
189
189
  /**
@@ -192,7 +192,7 @@ export const DataProviderMixin = (superClass) =>
192
192
  */
193
193
  itemHasChildrenPath: {
194
194
  type: String,
195
- value: 'children'
195
+ value: 'children',
196
196
  },
197
197
 
198
198
  /**
@@ -201,7 +201,7 @@ export const DataProviderMixin = (superClass) =>
201
201
  */
202
202
  itemIdPath: {
203
203
  type: String,
204
- value: null
204
+ value: null,
205
205
  },
206
206
 
207
207
  /**
@@ -211,7 +211,7 @@ export const DataProviderMixin = (superClass) =>
211
211
  expandedItems: {
212
212
  type: Object,
213
213
  notify: true,
214
- value: () => []
214
+ value: () => [],
215
215
  },
216
216
 
217
217
  /**
@@ -219,13 +219,13 @@ export const DataProviderMixin = (superClass) =>
219
219
  */
220
220
  __expandedKeys: {
221
221
  type: Object,
222
- value: () => new Set()
223
- }
222
+ computed: '__computeExpandedKeys(itemIdPath, expandedItems.*)',
223
+ },
224
224
  };
225
225
  }
226
226
 
227
227
  static get observers() {
228
- return ['_sizeChanged(size)', '_itemIdPathChanged(itemIdPath)', '_expandedItemsChanged(expandedItems.*)'];
228
+ return ['_sizeChanged(size)', '_expandedItemsChanged(expandedItems.*)'];
229
229
  }
230
230
 
231
231
  /** @private */
@@ -282,25 +282,20 @@ export const DataProviderMixin = (superClass) =>
282
282
 
283
283
  /** @private */
284
284
  _expandedItemsChanged() {
285
- this.__cacheExpandedKeys();
286
285
  this._cache.updateSize();
287
286
  this._effectiveSize = this._cache.effectiveSize;
288
287
  this.__updateVisibleRows();
289
288
  }
290
289
 
291
290
  /** @private */
292
- _itemIdPathChanged() {
293
- this.__cacheExpandedKeys();
294
- }
291
+ __computeExpandedKeys(itemIdPath, expandedItems) {
292
+ const expanded = expandedItems.base || [];
293
+ const expandedKeys = new Set();
294
+ expanded.forEach((item) => {
295
+ expandedKeys.add(this.getItemId(item));
296
+ });
295
297
 
296
- /** @private */
297
- __cacheExpandedKeys() {
298
- if (this.expandedItems) {
299
- this.__expandedKeys = new Set();
300
- this.expandedItems.forEach((item) => {
301
- this.__expandedKeys.add(this.getItemId(item));
302
- });
303
- }
298
+ return expandedKeys;
304
299
  }
305
300
 
306
301
  /**
@@ -353,7 +348,7 @@ export const DataProviderMixin = (superClass) =>
353
348
  pageSize: this.pageSize,
354
349
  sortOrders: this._mapSorters(),
355
350
  filters: this._mapFilters(),
356
- parentItem: cache.parentItem
351
+ parentItem: cache.parentItem,
357
352
  };
358
353
 
359
354
  this.dataProvider(params, (items, size) => {
@@ -443,7 +438,7 @@ export const DataProviderMixin = (superClass) =>
443
438
  'The <vaadin-grid> needs the total number of items' +
444
439
  ' in order to display rows. Set the total number of items' +
445
440
  ' to the `size` property, or provide the total number of items' +
446
- ' in the second argument of the `dataProvider`’s `callback` call.'
441
+ ' in the second argument of the `dataProvider`’s `callback` call.',
447
442
  );
448
443
  }
449
444
  }
@@ -459,7 +454,7 @@ export const DataProviderMixin = (superClass) =>
459
454
  this._debouncerCheckSize = Debouncer.debounce(
460
455
  this._debouncerCheckSize,
461
456
  timeOut.after(2000),
462
- this._checkSize.bind(this)
457
+ this._checkSize.bind(this),
463
458
  );
464
459
  }
465
460
 
@@ -13,7 +13,7 @@ export type GridDropLocation = 'above' | 'on-top' | 'below' | 'empty';
13
13
  export type GridDropMode = 'between' | 'on-top' | 'on-top-or-between' | 'on-grid';
14
14
 
15
15
  export declare function DragAndDropMixin<TItem, T extends Constructor<HTMLElement>>(
16
- base: T
16
+ base: T,
17
17
  ): T & Constructor<DragAndDropMixinClass<TItem>>;
18
18
 
19
19
  export declare class DragAndDropMixinClass<TItem> {