@vaadin/grid 24.2.0-dev.f254716fe → 24.3.0-alpha1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/grid",
3
- "version": "24.2.0-dev.f254716fe",
3
+ "version": "24.3.0-alpha1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -46,18 +46,18 @@
46
46
  "dependencies": {
47
47
  "@open-wc/dedupe-mixin": "^1.3.0",
48
48
  "@polymer/polymer": "^3.0.0",
49
- "@vaadin/a11y-base": "24.2.0-dev.f254716fe",
50
- "@vaadin/checkbox": "24.2.0-dev.f254716fe",
51
- "@vaadin/component-base": "24.2.0-dev.f254716fe",
52
- "@vaadin/lit-renderer": "24.2.0-dev.f254716fe",
53
- "@vaadin/text-field": "24.2.0-dev.f254716fe",
54
- "@vaadin/vaadin-lumo-styles": "24.2.0-dev.f254716fe",
55
- "@vaadin/vaadin-material-styles": "24.2.0-dev.f254716fe",
56
- "@vaadin/vaadin-themable-mixin": "24.2.0-dev.f254716fe"
49
+ "@vaadin/a11y-base": "24.3.0-alpha1",
50
+ "@vaadin/checkbox": "24.3.0-alpha1",
51
+ "@vaadin/component-base": "24.3.0-alpha1",
52
+ "@vaadin/lit-renderer": "24.3.0-alpha1",
53
+ "@vaadin/text-field": "24.3.0-alpha1",
54
+ "@vaadin/vaadin-lumo-styles": "24.3.0-alpha1",
55
+ "@vaadin/vaadin-material-styles": "24.3.0-alpha1",
56
+ "@vaadin/vaadin-themable-mixin": "24.3.0-alpha1"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@esm-bundle/chai": "^4.3.4",
60
- "@vaadin/testing-helpers": "^0.4.3",
60
+ "@vaadin/testing-helpers": "^0.5.0",
61
61
  "lit": "^2.0.0",
62
62
  "sinon": "^13.0.2"
63
63
  },
@@ -65,5 +65,5 @@
65
65
  "web-types.json",
66
66
  "web-types.lit.json"
67
67
  ],
68
- "gitHead": "da54950b9f8c14c6451ede0d426e16a489c7fb9b"
68
+ "gitHead": "9ca6f3ca220a777e8eea181a1f5717e39a732240"
69
69
  }
@@ -7,6 +7,7 @@ import { FlattenedNodesObserver } from '@polymer/polymer/lib/utils/flattened-nod
7
7
  import { PolymerElement } from '@polymer/polymer/polymer-element.js';
8
8
  import { animationFrame } from '@vaadin/component-base/src/async.js';
9
9
  import { Debouncer } from '@vaadin/component-base/src/debounce.js';
10
+ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
10
11
  import { ColumnBaseMixin } from './vaadin-grid-column.js';
11
12
  import { updateColumnOrders } from './vaadin-grid-helpers.js';
12
13
 
@@ -39,6 +40,7 @@ import { updateColumnOrders } from './vaadin-grid-helpers.js';
39
40
  * column2.renderer = (root, column, model) => { ... };
40
41
  * ```
41
42
  *
43
+ * @customElement
42
44
  * @extends HTMLElement
43
45
  * @mixes ColumnBaseMixin
44
46
  */
@@ -396,6 +398,6 @@ class GridColumnGroup extends ColumnBaseMixin(PolymerElement) {
396
398
  }
397
399
  }
398
400
 
399
- customElements.define(GridColumnGroup.is, GridColumnGroup);
401
+ defineCustomElement(GridColumnGroup);
400
402
 
401
403
  export { GridColumnGroup };
@@ -6,7 +6,9 @@
6
6
  import { PolymerElement } from '@polymer/polymer/polymer-element.js';
7
7
  import { animationFrame } from '@vaadin/component-base/src/async.js';
8
8
  import { Debouncer } from '@vaadin/component-base/src/debounce.js';
9
+ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
9
10
  import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
11
+ import { get } from '@vaadin/component-base/src/path-utils.js';
10
12
  import { processTemplates } from '@vaadin/component-base/src/templates.js';
11
13
  import { updateCellState } from './vaadin-grid-helpers.js';
12
14
 
@@ -713,7 +715,7 @@ export const ColumnBaseMixin = (superClass) =>
713
715
  return;
714
716
  }
715
717
 
716
- this.__setTextContent(root, this.get(this.path, item));
718
+ this.__setTextContent(root, get(this.path, item));
717
719
  }
718
720
 
719
721
  /**
@@ -783,6 +785,7 @@ export const ColumnBaseMixin = (superClass) =>
783
785
  * See [`<vaadin-grid>`](#/elements/vaadin-grid) documentation for instructions on how
784
786
  * to configure the `<vaadin-grid-column>`.
785
787
  *
788
+ * @customElement
786
789
  * @extends HTMLElement
787
790
  * @mixes ColumnBaseMixin
788
791
  */
@@ -894,6 +897,6 @@ class GridColumn extends ColumnBaseMixin(DirMixin(PolymerElement)) {
894
897
  }
895
898
  }
896
899
 
897
- customElements.define(GridColumn.is, GridColumn);
900
+ defineCustomElement(GridColumn);
898
901
 
899
902
  export { GridColumn };
@@ -4,8 +4,9 @@
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
  import { timeOut } from '@vaadin/component-base/src/async.js';
7
- import { DataProviderController } from '@vaadin/component-base/src/data-provider-controller.js';
7
+ import { DataProviderController } from '@vaadin/component-base/src/data-provider-controller/data-provider-controller.js';
8
8
  import { Debouncer } from '@vaadin/component-base/src/debounce.js';
9
+ import { get } from '@vaadin/component-base/src/path-utils.js';
9
10
  import { getBodyRowCells, updateCellsPart, updateState } from './vaadin-grid-helpers.js';
10
11
 
11
12
  /**
@@ -175,12 +176,12 @@ export const DataProviderMixin = (superClass) =>
175
176
 
176
177
  el.index = index;
177
178
 
178
- const { item } = this._dataProviderController.getFlatIndexInfo(index);
179
+ const { item } = this._dataProviderController.getFlatIndexContext(index);
179
180
  if (item) {
180
181
  this.__updateLoading(el, false);
181
182
  this._updateItem(el, item);
182
183
  if (this._isExpanded(item)) {
183
- this._dataProviderController.ensureFlatIndexChildrenLoaded(index);
184
+ this._dataProviderController.ensureFlatIndexHierarchy(index);
184
185
  }
185
186
  } else {
186
187
  this.__updateLoading(el, true);
@@ -210,7 +211,7 @@ export const DataProviderMixin = (superClass) =>
210
211
  * @return {!GridItem | !unknown}
211
212
  */
212
213
  getItemId(item) {
213
- return this.itemIdPath ? this.get(this.itemIdPath, item) : item;
214
+ return this.itemIdPath ? get(this.itemIdPath, item) : item;
214
215
  }
215
216
 
216
217
  /**
@@ -266,7 +267,7 @@ export const DataProviderMixin = (superClass) =>
266
267
  * @protected
267
268
  */
268
269
  _getIndexLevel(index = 0) {
269
- const { level } = this._dataProviderController.getFlatIndexInfo(index);
270
+ const { level } = this._dataProviderController.getFlatIndexContext(index);
270
271
  return level;
271
272
  }
272
273
 
@@ -282,7 +283,7 @@ export const DataProviderMixin = (superClass) =>
282
283
 
283
284
  // After updating the cache, check if some of the expanded items should have sub-caches loaded
284
285
  this._getRenderedRows().forEach((row) => {
285
- this._dataProviderController.ensureFlatIndexChildrenLoaded(row.index);
286
+ this._dataProviderController.ensureFlatIndexHierarchy(row.index);
286
287
  });
287
288
 
288
289
  this._hasData = true;
@@ -295,7 +296,7 @@ export const DataProviderMixin = (superClass) =>
295
296
  this._setLoading(false);
296
297
 
297
298
  this._getRenderedRows().forEach((row) => {
298
- const { item } = this._dataProviderController.getFlatIndexInfo(row.index);
299
+ const { item } = this._dataProviderController.getFlatIndexContext(row.index);
299
300
  if (item) {
300
301
  this._getItem(row.index, row);
301
302
  }
@@ -317,16 +318,18 @@ export const DataProviderMixin = (superClass) =>
317
318
  this._dataProviderController.clearCache();
318
319
  this._hasData = false;
319
320
  this.__updateVisibleRows();
320
- this._ensureFirstPageLoaded();
321
+
322
+ if (!this._effectiveSize) {
323
+ this._dataProviderController.loadFirstPage();
324
+ }
321
325
  }
322
326
 
323
327
  /** @private */
324
328
  _pageSizeChanged(pageSize, oldPageSize) {
325
329
  this._dataProviderController.setPageSize(pageSize);
330
+
326
331
  if (oldPageSize !== undefined && pageSize !== oldPageSize) {
327
- this._hasData = false;
328
- this.__updateVisibleRows();
329
- this._ensureFirstPageLoaded();
332
+ this.clearCache();
330
333
  }
331
334
  }
332
335
 
@@ -347,8 +350,7 @@ export const DataProviderMixin = (superClass) =>
347
350
  this._dataProviderController.setDataProvider(dataProvider ? dataProvider.bind(this) : null);
348
351
 
349
352
  if (oldDataProvider !== undefined) {
350
- this._hasData = false;
351
- this.__updateVisibleRows();
353
+ this.clearCache();
352
354
  }
353
355
 
354
356
  this._ensureFirstPageLoaded();
@@ -365,7 +367,7 @@ export const DataProviderMixin = (superClass) =>
365
367
  if (!this._hasData) {
366
368
  // Load data before adding rows to make sure they have content when
367
369
  // rendered for the first time.
368
- this._dataProviderController.ensureFirstPageLoaded();
370
+ this._dataProviderController.loadFirstPage();
369
371
  }
370
372
  }
371
373
 
@@ -112,7 +112,7 @@ export const DynamicColumnsMixin = (superClass) =>
112
112
  if (hasColumnElements(info.addedNodes) || hasColumnElements(info.removedNodes)) {
113
113
  const allRemovedCells = info.removedNodes.flatMap((c) => c._allCells);
114
114
  const filterNotConnected = (element) =>
115
- allRemovedCells.filter((cell) => cell._content.contains(element)).length;
115
+ allRemovedCells.filter((cell) => cell && cell._content.contains(element)).length;
116
116
 
117
117
  this.__removeSorters(this._sorters.filter(filterNotConnected));
118
118
  this.__removeFilters(this._filters.filter(filterNotConnected));
@@ -4,6 +4,7 @@
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-filter.js';
7
+ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
7
8
  import { GridColumn } from './vaadin-grid-column.js';
8
9
 
9
10
  /**
@@ -18,6 +19,9 @@ import { GridColumn } from './vaadin-grid-column.js';
18
19
  * <vaadin-grid-column>
19
20
  * ...
20
21
  * ```
22
+ *
23
+ * @customElement
24
+ * @extends GridColumn
21
25
  */
22
26
  class GridFilterColumn extends GridColumn {
23
27
  static get is() {
@@ -114,6 +118,6 @@ class GridFilterColumn extends GridColumn {
114
118
  }
115
119
  }
116
120
 
117
- customElements.define(GridFilterColumn.is, GridFilterColumn);
121
+ defineCustomElement(GridFilterColumn);
118
122
 
119
123
  export { GridFilterColumn };
@@ -8,6 +8,7 @@ import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
8
8
  import { timeOut } from '@vaadin/component-base/src/async.js';
9
9
  import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
10
10
  import { Debouncer } from '@vaadin/component-base/src/debounce.js';
11
+ import { defineCustomElement } from '@vaadin/component-base/src/define.js';
11
12
  import { SlotController } from '@vaadin/component-base/src/slot-controller.js';
12
13
 
13
14
  /**
@@ -35,6 +36,7 @@ import { SlotController } from '@vaadin/component-base/src/slot-controller.js';
35
36
  *
36
37
  * @fires {CustomEvent} value-changed - Fired when the `value` property changes.
37
38
  *
39
+ * @customElement
38
40
  * @extends HTMLElement
39
41
  */
40
42
  class GridFilter extends ControllerMixin(PolymerElement) {
@@ -125,6 +127,6 @@ class GridFilter extends ControllerMixin(PolymerElement) {
125
127
  }
126
128
  }
127
129
 
128
- customElements.define(GridFilter.is, GridFilter);
130
+ defineCustomElement(GridFilter);
129
131
 
130
132
  export { GridFilter };
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { isKeyboardActive } from '@vaadin/a11y-base/src/focus-utils.js';
7
7
  import { addValueToAttribute, removeValueFromAttribute } from '@vaadin/component-base/src/dom-utils.js';
8
+ import { get } from '@vaadin/component-base/src/path-utils.js';
8
9
 
9
10
  /**
10
11
  * @polymerMixin
@@ -266,7 +267,7 @@ export const KeyboardNavigationMixin = (superClass) =>
266
267
  __isRowExpandable(row) {
267
268
  if (this.itemHasChildrenPath) {
268
269
  const item = row._item;
269
- return item && this.get(this.itemHasChildrenPath, item) && !this._isExpanded(item);
270
+ return item && get(this.itemHasChildrenPath, item) && !this._isExpanded(item);
270
271
  }
271
272
  }
272
273
 
@@ -475,7 +476,7 @@ export const KeyboardNavigationMixin = (superClass) =>
475
476
  // Row details navigation logic
476
477
  if (activeRowGroup === this.$.items) {
477
478
  const item = activeRow._item;
478
- const { item: dstItem } = this._dataProviderController.getFlatIndexInfo(dstRowIndex);
479
+ const { item: dstItem } = this._dataProviderController.getFlatIndexContext(dstRowIndex);
479
480
  // Should we navigate to row details?
480
481
  if (isRowDetails) {
481
482
  dstIsRowDetails = dy === 0;
@@ -681,7 +682,26 @@ export const KeyboardNavigationMixin = (superClass) =>
681
682
  }
682
683
  }
683
684
 
684
- return tabOrder[index];
685
+ let focusStepTarget = tabOrder[index];
686
+
687
+ // If the target focusable is tied to a column that is not visible,
688
+ // find the first visible column and update the target in order to
689
+ // prevent scrolling to the start of the row.
690
+ if (focusStepTarget && focusStepTarget._column && !this.__isColumnInViewport(focusStepTarget._column)) {
691
+ const firstVisibleColumn = this._getColumnsInOrder().find((column) => this.__isColumnInViewport(column));
692
+ if (firstVisibleColumn) {
693
+ if (focusStepTarget === this._headerFocusable) {
694
+ focusStepTarget = firstVisibleColumn._headerCell;
695
+ } else if (focusStepTarget === this._itemsFocusable) {
696
+ const rowIndex = focusStepTarget._column._cells.indexOf(focusStepTarget);
697
+ focusStepTarget = firstVisibleColumn._cells[rowIndex];
698
+ } else if (focusStepTarget === this._footerFocusable) {
699
+ focusStepTarget = firstVisibleColumn._footerCell;
700
+ }
701
+ }
702
+ }
703
+
704
+ return focusStepTarget;
685
705
  }
686
706
 
687
707
  /** @private */
@@ -0,0 +1,218 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2016 - 2023 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ import type { Constructor } from '@open-wc/dedupe-mixin';
7
+ import type { DisabledMixinClass } from '@vaadin/a11y-base/src/disabled-mixin.js';
8
+ import type { ActiveItemMixinClass } from './vaadin-grid-active-item-mixin.js';
9
+ import type { ArrayDataProviderMixinClass } from './vaadin-grid-array-data-provider-mixin.js';
10
+ import type { GridColumn } from './vaadin-grid-column.js';
11
+ import { GridBodyRenderer, GridHeaderFooterRenderer } from './vaadin-grid-column.js';
12
+ import type { ColumnReorderingMixinClass } from './vaadin-grid-column-reordering-mixin.js';
13
+ import type { DataProviderMixinClass } from './vaadin-grid-data-provider-mixin.js';
14
+ import {
15
+ GridDataProvider,
16
+ GridDataProviderCallback,
17
+ GridDataProviderParams,
18
+ GridFilterDefinition,
19
+ GridSorterDefinition,
20
+ GridSorterDirection,
21
+ } from './vaadin-grid-data-provider-mixin.js';
22
+ import type { DragAndDropMixinClass } from './vaadin-grid-drag-and-drop-mixin.js';
23
+ import { GridDragAndDropFilter, GridDropLocation, GridDropMode } from './vaadin-grid-drag-and-drop-mixin.js';
24
+ import type { EventContextMixinClass } from './vaadin-grid-event-context-mixin.js';
25
+ import { GridEventContext } from './vaadin-grid-event-context-mixin.js';
26
+ import type { RowDetailsMixinClass } from './vaadin-grid-row-details-mixin.js';
27
+ import { GridRowDetailsRenderer } from './vaadin-grid-row-details-mixin.js';
28
+ import type { ScrollMixinClass } from './vaadin-grid-scroll-mixin.js';
29
+ import type { SelectionMixinClass } from './vaadin-grid-selection-mixin.js';
30
+ import type { SortMixinClass } from './vaadin-grid-sort-mixin.js';
31
+ import type {
32
+ GridCellClassNameGenerator,
33
+ GridCellPartNameGenerator,
34
+ StylingMixinClass,
35
+ } from './vaadin-grid-styling-mixin.js';
36
+
37
+ export {
38
+ GridBodyRenderer,
39
+ GridCellClassNameGenerator,
40
+ GridCellPartNameGenerator,
41
+ GridDataProvider,
42
+ GridDataProviderCallback,
43
+ GridDataProviderParams,
44
+ GridDragAndDropFilter,
45
+ GridDropLocation,
46
+ GridDropMode,
47
+ GridEventContext,
48
+ GridFilterDefinition,
49
+ GridHeaderFooterRenderer,
50
+ GridRowDetailsRenderer,
51
+ GridSorterDefinition,
52
+ GridSorterDirection,
53
+ };
54
+
55
+ export interface GridItemModel<TItem> {
56
+ index: number;
57
+ item: TItem;
58
+ selected?: boolean;
59
+ expanded?: boolean;
60
+ level?: number;
61
+ detailsOpened?: boolean;
62
+ }
63
+
64
+ /**
65
+ * Fired when the `activeItem` property changes.
66
+ */
67
+ export type GridActiveItemChangedEvent<TItem> = CustomEvent<{ value: TItem | null | undefined }>;
68
+
69
+ /**
70
+ * Fired when the cell is activated with click or keyboard.
71
+ */
72
+ export type GridCellActivateEvent<TItem> = CustomEvent<{ model: GridItemModel<TItem> }>;
73
+
74
+ /**
75
+ * Fired when a cell is focused with click or keyboard navigation.
76
+ */
77
+ export type GridCellFocusEvent<TItem> = CustomEvent<{ context: GridEventContext<TItem> }>;
78
+
79
+ /**
80
+ * Fired when the columns in the grid are reordered.
81
+ */
82
+ export type GridColumnReorderEvent<TItem> = CustomEvent<{ columns: Array<GridColumn<TItem>> }>;
83
+
84
+ /**
85
+ * Fired when the grid column resize is finished.
86
+ */
87
+ export type GridColumnResizeEvent<TItem> = CustomEvent<{ resizedColumn: GridColumn<TItem> }>;
88
+
89
+ /**
90
+ * Fired when the `dataProvider` property changes.
91
+ */
92
+ export type GridDataProviderChangedEvent<TItem> = CustomEvent<{ value: GridDataProvider<TItem> }>;
93
+
94
+ /**
95
+ * Fired when the `expandedItems` property changes.
96
+ */
97
+ export type GridExpandedItemsChangedEvent<TItem> = CustomEvent<{ value: TItem[] }>;
98
+
99
+ /**
100
+ * Fired when starting to drag grid rows.
101
+ */
102
+ export type GridDragStartEvent<TItem> = CustomEvent<{
103
+ draggedItems: TItem[];
104
+ setDraggedItemsCount(count: number): void;
105
+ setDragData(type: string, data: string): void;
106
+ }>;
107
+
108
+ /**
109
+ * Fired when a drop occurs on top of the grid.
110
+ */
111
+ export type GridDropEvent<TItem> = CustomEvent<{
112
+ dropTargetItem: TItem;
113
+ dropLocation: GridDropLocation;
114
+ dragData: Array<{ type: string; data: string }>;
115
+ }>;
116
+
117
+ /**
118
+ * Fired when the `loading` property changes.
119
+ */
120
+ export type GridLoadingChangedEvent = CustomEvent<{ value: boolean }>;
121
+
122
+ /**
123
+ * Fired when the `selectedItems` property changes.
124
+ */
125
+ export type GridSelectedItemsChangedEvent<TItem> = CustomEvent<{ value: TItem[] }>;
126
+
127
+ /**
128
+ * Fired when the `size` property changes.
129
+ */
130
+ export type GridSizeChangedEvent = CustomEvent<{ value: number }>;
131
+
132
+ export interface GridCustomEventMap<TItem> {
133
+ 'active-item-changed': GridActiveItemChangedEvent<TItem>;
134
+
135
+ 'cell-activate': GridCellActivateEvent<TItem>;
136
+
137
+ 'cell-focus': GridCellFocusEvent<TItem>;
138
+
139
+ 'column-reorder': GridColumnReorderEvent<TItem>;
140
+
141
+ 'column-resize': GridColumnResizeEvent<TItem>;
142
+
143
+ 'data-provider-changed': GridDataProviderChangedEvent<TItem>;
144
+
145
+ 'expanded-items-changed': GridExpandedItemsChangedEvent<TItem>;
146
+
147
+ 'grid-dragstart': GridDragStartEvent<TItem>;
148
+
149
+ 'grid-dragend': Event;
150
+
151
+ 'grid-drop': GridDropEvent<TItem>;
152
+
153
+ 'loading-changed': GridLoadingChangedEvent;
154
+
155
+ 'selected-items-changed': GridSelectedItemsChangedEvent<TItem>;
156
+
157
+ 'size-changed': GridSizeChangedEvent;
158
+ }
159
+
160
+ export interface GridEventMap<TItem> extends HTMLElementEventMap, GridCustomEventMap<TItem> {}
161
+
162
+ export declare function GridMixin<TItem, T extends Constructor<HTMLElement>>(
163
+ base: T,
164
+ ): Constructor<ActiveItemMixinClass<TItem>> &
165
+ Constructor<ArrayDataProviderMixinClass<TItem>> &
166
+ Constructor<ColumnReorderingMixinClass> &
167
+ Constructor<DataProviderMixinClass<TItem>> &
168
+ Constructor<DisabledMixinClass> &
169
+ Constructor<DragAndDropMixinClass<TItem>> &
170
+ Constructor<EventContextMixinClass<TItem>> &
171
+ Constructor<GridMixinClass<TItem>> &
172
+ Constructor<RowDetailsMixinClass<TItem>> &
173
+ Constructor<ScrollMixinClass> &
174
+ Constructor<SelectionMixinClass<TItem>> &
175
+ Constructor<SortMixinClass> &
176
+ Constructor<StylingMixinClass<TItem>> &
177
+ T;
178
+
179
+ export interface GridMixinClass<TItem>
180
+ extends DisabledMixinClass,
181
+ ActiveItemMixinClass<TItem>,
182
+ ArrayDataProviderMixinClass<TItem>,
183
+ DataProviderMixinClass<TItem>,
184
+ RowDetailsMixinClass<TItem>,
185
+ ScrollMixinClass,
186
+ SelectionMixinClass<TItem>,
187
+ SortMixinClass,
188
+ ColumnReorderingMixinClass,
189
+ EventContextMixinClass<TItem>,
190
+ StylingMixinClass<TItem>,
191
+ DragAndDropMixinClass<TItem> {
192
+ /**
193
+ * If true, the grid's height is defined by its rows.
194
+ *
195
+ * Effectively, this disables the grid's virtual scrolling so that all the rows are rendered in the DOM at once.
196
+ * If the grid has a large number of items, using the feature is discouraged to avoid performance issues.
197
+ * @attr {boolean} all-rows-visible
198
+ */
199
+ allRowsVisible: boolean;
200
+
201
+ /**
202
+ * Updates the `width` of all columns which have `autoWidth` set to `true`.
203
+ */
204
+ recalculateColumnWidths(): void;
205
+
206
+ /**
207
+ * Requests an update for the content of cells.
208
+ *
209
+ * While performing the update, the following renderers are invoked:
210
+ * - `Grid.rowDetailsRenderer`
211
+ * - `GridColumn.renderer`
212
+ * - `GridColumn.headerRenderer`
213
+ * - `GridColumn.footerRenderer`
214
+ *
215
+ * It is not guaranteed that the update happens immediately (synchronously) after it is requested.
216
+ */
217
+ requestContentUpdate(): void;
218
+ }