@vaadin/vaadin-grid 22.0.0-alpha6 → 22.0.0-beta1

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 (84) hide show
  1. package/package.json +24 -34
  2. package/src/vaadin-grid-column-group.d.ts +14 -57
  3. package/src/vaadin-grid-column-group.js +4 -311
  4. package/src/vaadin-grid-column.d.ts +14 -142
  5. package/src/vaadin-grid-column.js +4 -759
  6. package/src/vaadin-grid-filter-column.d.ts +14 -30
  7. package/src/vaadin-grid-filter-column.js +4 -111
  8. package/src/vaadin-grid-filter.d.ts +11 -60
  9. package/src/vaadin-grid-filter.js +4 -116
  10. package/src/vaadin-grid-selection-column.d.ts +12 -75
  11. package/src/vaadin-grid-selection-column.js +4 -276
  12. package/src/vaadin-grid-sort-column.d.ts +12 -56
  13. package/src/vaadin-grid-sort-column.js +4 -109
  14. package/src/vaadin-grid-sorter.d.ts +11 -82
  15. package/src/vaadin-grid-sorter.js +4 -221
  16. package/src/vaadin-grid-tree-column.d.ts +14 -31
  17. package/src/vaadin-grid-tree-column.js +4 -110
  18. package/src/vaadin-grid-tree-toggle.d.ts +11 -91
  19. package/src/vaadin-grid-tree-toggle.js +4 -196
  20. package/src/vaadin-grid.d.ts +10 -422
  21. package/src/vaadin-grid.js +4 -1026
  22. package/theme/lumo/vaadin-grid-column-group.js +1 -1
  23. package/theme/lumo/vaadin-grid-column.js +1 -1
  24. package/theme/lumo/vaadin-grid-filter-column.js +1 -2
  25. package/theme/lumo/vaadin-grid-filter.js +1 -2
  26. package/theme/lumo/vaadin-grid-selection-column.js +1 -2
  27. package/theme/lumo/vaadin-grid-sort-column.js +1 -2
  28. package/theme/lumo/vaadin-grid-sorter.js +1 -2
  29. package/theme/lumo/vaadin-grid-tree-column.js +1 -2
  30. package/theme/lumo/vaadin-grid-tree-toggle.js +1 -2
  31. package/theme/lumo/vaadin-grid.js +1 -9
  32. package/theme/material/vaadin-grid-column-group.js +1 -1
  33. package/theme/material/vaadin-grid-column.js +1 -1
  34. package/theme/material/vaadin-grid-filter-column.js +1 -2
  35. package/theme/material/vaadin-grid-filter.js +1 -2
  36. package/theme/material/vaadin-grid-selection-column.js +1 -2
  37. package/theme/material/vaadin-grid-sort-column.js +1 -2
  38. package/theme/material/vaadin-grid-sorter.js +1 -2
  39. package/theme/material/vaadin-grid-tree-column.js +1 -2
  40. package/theme/material/vaadin-grid-tree-toggle.js +1 -2
  41. package/theme/material/vaadin-grid.js +1 -2
  42. package/vaadin-grid.d.ts +0 -1
  43. package/src/array-data-provider.js +0 -145
  44. package/src/interfaces.d.ts +0 -78
  45. package/src/vaadin-grid-a11y-mixin.d.ts +0 -27
  46. package/src/vaadin-grid-a11y-mixin.js +0 -158
  47. package/src/vaadin-grid-active-item-mixin.d.ts +0 -28
  48. package/src/vaadin-grid-active-item-mixin.js +0 -117
  49. package/src/vaadin-grid-array-data-provider-mixin.d.ts +0 -20
  50. package/src/vaadin-grid-array-data-provider-mixin.js +0 -75
  51. package/src/vaadin-grid-column-reordering-mixin.d.ts +0 -47
  52. package/src/vaadin-grid-column-reordering-mixin.js +0 -387
  53. package/src/vaadin-grid-column-resizing-mixin.d.ts +0 -11
  54. package/src/vaadin-grid-column-resizing-mixin.js +0 -111
  55. package/src/vaadin-grid-data-provider-mixin.d.ts +0 -126
  56. package/src/vaadin-grid-data-provider-mixin.js +0 -520
  57. package/src/vaadin-grid-drag-and-drop-mixin.d.ts +0 -73
  58. package/src/vaadin-grid-drag-and-drop-mixin.js +0 -435
  59. package/src/vaadin-grid-dynamic-columns-mixin.d.ts +0 -27
  60. package/src/vaadin-grid-dynamic-columns-mixin.js +0 -180
  61. package/src/vaadin-grid-event-context-mixin.d.ts +0 -33
  62. package/src/vaadin-grid-event-context-mixin.js +0 -57
  63. package/src/vaadin-grid-filter-mixin.d.ts +0 -13
  64. package/src/vaadin-grid-filter-mixin.js +0 -76
  65. package/src/vaadin-grid-helpers.js +0 -23
  66. package/src/vaadin-grid-keyboard-navigation-mixin.d.ts +0 -31
  67. package/src/vaadin-grid-keyboard-navigation-mixin.js +0 -891
  68. package/src/vaadin-grid-row-details-mixin.d.ts +0 -54
  69. package/src/vaadin-grid-row-details-mixin.js +0 -200
  70. package/src/vaadin-grid-scroll-mixin.d.ts +0 -22
  71. package/src/vaadin-grid-scroll-mixin.js +0 -202
  72. package/src/vaadin-grid-selection-mixin.d.ts +0 -39
  73. package/src/vaadin-grid-selection-mixin.js +0 -93
  74. package/src/vaadin-grid-sort-mixin.d.ts +0 -21
  75. package/src/vaadin-grid-sort-mixin.js +0 -139
  76. package/src/vaadin-grid-styles.js +0 -297
  77. package/src/vaadin-grid-styling-mixin.d.ts +0 -37
  78. package/src/vaadin-grid-styling-mixin.js +0 -71
  79. package/theme/lumo/vaadin-grid-sorter-styles.js +0 -54
  80. package/theme/lumo/vaadin-grid-styles.js +0 -380
  81. package/theme/lumo/vaadin-grid-tree-toggle-styles.js +0 -112
  82. package/theme/material/vaadin-grid-sorter-styles.js +0 -72
  83. package/theme/material/vaadin-grid-styles.js +0 -252
  84. package/theme/material/vaadin-grid-tree-toggle-styles.js +0 -42
@@ -3,203 +3,11 @@
3
3
  * Copyright (c) 2021 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
- import { PolymerElement, html } from '@polymer/polymer/polymer-element.js';
7
- import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
8
- import { DirMixin } from '@vaadin/vaadin-element-mixin/vaadin-dir-mixin.js';
9
- import { isFocusable } from './vaadin-grid-active-item-mixin.js';
10
-
11
- const $_documentContainer = document.createElement('template');
12
-
13
- $_documentContainer.innerHTML = `
14
- <style>
15
- @font-face {
16
- font-family: "vaadin-grid-tree-icons";
17
- src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAQkAA0AAAAABrwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAECAAAABoAAAAcgHwa6EdERUYAAAPsAAAAHAAAAB4AJwAOT1MvMgAAAZQAAAA/AAAAYA8TBIJjbWFwAAAB8AAAAFUAAAFeGJvXWmdhc3AAAAPkAAAACAAAAAgAAAAQZ2x5ZgAAAlwAAABLAAAAhIrPOhFoZWFkAAABMAAAACsAAAA2DsJI02hoZWEAAAFcAAAAHQAAACQHAgPHaG10eAAAAdQAAAAZAAAAHAxVAgBsb2NhAAACSAAAABIAAAASAIAAVG1heHAAAAF8AAAAGAAAACAACgAFbmFtZQAAAqgAAAECAAACTwflzbdwb3N0AAADrAAAADYAAABZQ7Ajh3icY2BkYGAA4twv3Vfi+W2+MnCzMIDANSOmbGSa2YEZRHEwMIEoAAoiB6sAeJxjYGRgYD7w/wADAwsDCDA7MDAyoAI2AFEEAtIAAAB4nGNgZGBg4GBgZgDRDAxMDGgAAAGbABB4nGNgZp7JOIGBlYGBaSbTGQYGhn4IzfiawZiRkwEVMAqgCTA4MDA+38d84P8BBgdmIAapQZJVYGAEAGc/C54AeJxjYYAAxlAIzQTELAwMBxgZGB0ACy0BYwAAAHicY2BgYGaAYBkGRgYQiADyGMF8FgYbIM3FwMHABISMDArP9/3/+/8/WJXC8z0Q9v8nEp5gHVwMMMAIMo+RDYiZoQJMQIKJARUA7WBhGN4AACFKDtoAAAAAAAAAAAgACAAQABgAJgA0AEIAAHichYvBEYBADAKBVHBjBT4swl9KS2k05o0XHd/yW1hAfBFwCv9sIlJu3nZaNS3PXAaXXHI8Lge7DlzF7C1RgXc7xkK6+gvcD2URmQB4nK2RQWoCMRiFX3RUqtCli65yADModOMBLLgQSqHddRFnQghIAnEUvEA3vUUP0LP0Fj1G+yb8R5iEhO9/ef/7FwFwj28o9EthiVp4hBlehcfUP4Ur8o/wBAv8CU+xVFvhOR7UB7tUdUdlVRJ6HnHWTnhM/V24In8JT5j/KzzFSi2E53hUz7jCcrcIiDDwyKSW1JEct2HdIPH1DFytbUM0PofWdNk5E5oUqb/Q6HHBiVGZpfOXkyUMEj5IyBuNmYZQjBobfsuassvnkKLe1OuBBj0VQ8cRni2xjLWsHaM0jrjx3peYA0/vrdmUYqe9iy7bzrX6eNP7Jh1SijX+AaUVbB8AAHicY2BiwA84GBgYmRiYGJkZmBlZGFkZ2djScyoLMgzZS/MyDQwMwLSruZMzlHaB0q4A76kLlwAAAAEAAf//AA94nGNgZGBg4AFiMSBmYmAEQnYgZgHzGAAD6wA2eJxjYGBgZACCKxJigiD6mhFTNowGACmcA/8AAA==) format('woff');
18
- font-weight: normal;
19
- font-style: normal;
20
- }
21
- </style>
22
- `;
23
-
24
- document.head.appendChild($_documentContainer.content);
6
+ import { GridTreeToggle } from '@vaadin/grid/src/vaadin-grid-tree-toggle.js';
25
7
 
26
8
  /**
27
- * `<vaadin-grid-tree-toggle>` is a helper element for the `<vaadin-grid>`
28
- * that provides toggle and level display functionality for the item tree.
29
- *
30
- * #### Example:
31
- * ```html
32
- * <vaadin-grid-column id="column"></vaadin-grid-column>
33
- * ```
34
- * ```js
35
- * const column = document.querySelector('#column');
36
- * column.renderer = (root, column, model) => {
37
- * let treeToggle = root.firstElementChild;
38
- * if (!treeToggle) {
39
- * treeToggle = document.createElement('vaadin-grid-tree-toggle');
40
- * treeToggle.addEventListener('expanded-changed', () => { ... });
41
- * root.appendChild(treeToggle);
42
- * }
43
- * treeToggle.leaf = !model.item.hasChildren;
44
- * treeToggle.level = level;
45
- * treeToggle.expanded = expanded;
46
- * treeToggle.textContent = model.item.name;
47
- * };
48
- * ```
49
- *
50
- * ### Styling
51
- *
52
- * The following shadow DOM parts are available for styling:
53
- *
54
- * Part name | Description
55
- * ---|---
56
- * `toggle` | The tree toggle icon
57
- *
58
- * The following state attributes are available for styling:
59
- *
60
- * Attribute | Description | Part name
61
- * ---|---|---
62
- * `expanded` | When present, the toggle is expanded | :host
63
- * `leaf` | When present, the toggle is not expandable, i. e., the current item is a leaf | :host
64
- *
65
- * The following custom CSS properties are available on
66
- * the `<vaadin-grid-tree-toggle>` element:
67
- *
68
- * Custom CSS property | Description | Default
69
- * ---|---|---
70
- * `--vaadin-grid-tree-toggle-level-offset` | Visual offset step for each tree sublevel | `1em`
71
- *
72
- * @fires {CustomEvent} expanded-changed - Fired when the `expanded` property changes.
73
- *
74
- * @extends HTMLElement
75
- * @mixes ThemableMixin
9
+ * @deprecated Import `GridTreeToggle` from `@vaadin/grid/vaadin-grid-tree-toggle` instead.
76
10
  */
77
- class GridTreeToggleElement extends ThemableMixin(DirMixin(PolymerElement)) {
78
- static get template() {
79
- return html`
80
- <style>
81
- :host {
82
- display: inline-flex;
83
- align-items: baseline;
84
-
85
- /* CSS API for :host */
86
- --vaadin-grid-tree-toggle-level-offset: 1em;
87
- --_collapsed-icon: '\\e7be\\00a0';
88
- }
89
-
90
- :host([dir='rtl']) {
91
- --_collapsed-icon: '\\e7bd\\00a0';
92
- }
93
-
94
- :host([hidden]) {
95
- display: none !important;
96
- }
97
-
98
- :host(:not([leaf])) {
99
- cursor: pointer;
100
- }
101
-
102
- #level-spacer,
103
- [part='toggle'] {
104
- flex: none;
105
- }
106
-
107
- #level-spacer {
108
- display: inline-block;
109
- width: calc(var(---level, '0') * var(--vaadin-grid-tree-toggle-level-offset));
110
- }
111
-
112
- [part='toggle']::before {
113
- font-family: 'vaadin-grid-tree-icons';
114
- line-height: 1em; /* make icon font metrics not affect baseline */
115
- }
116
-
117
- :host(:not([expanded])) [part='toggle']::before {
118
- content: var(--_collapsed-icon);
119
- }
120
-
121
- :host([expanded]) [part='toggle']::before {
122
- content: '\\e7bc\\00a0'; /* icon glyph + single non-breaking space */
123
- }
124
-
125
- :host([leaf]) [part='toggle'] {
126
- visibility: hidden;
127
- }
128
- </style>
129
-
130
- <span id="level-spacer"></span>
131
- <span part="toggle"></span>
132
- <slot></slot>
133
- `;
134
- }
135
-
136
- static get is() {
137
- return 'vaadin-grid-tree-toggle';
138
- }
139
-
140
- static get properties() {
141
- return {
142
- /**
143
- * Current level of the tree represented with a horizontal offset
144
- * of the toggle button.
145
- * @type {number}
146
- */
147
- level: {
148
- type: Number,
149
- value: 0,
150
- observer: '_levelChanged'
151
- },
152
-
153
- /**
154
- * Hides the toggle icon and disables toggling a tree sublevel.
155
- * @type {boolean}
156
- */
157
- leaf: {
158
- type: Boolean,
159
- value: false,
160
- reflectToAttribute: true
161
- },
162
-
163
- /**
164
- * Sublevel toggle state.
165
- * @type {boolean}
166
- */
167
- expanded: {
168
- type: Boolean,
169
- value: false,
170
- reflectToAttribute: true,
171
- notify: true
172
- }
173
- };
174
- }
175
-
176
- /** @protected */
177
- ready() {
178
- super.ready();
179
-
180
- this.addEventListener('click', (e) => this._onClick(e));
181
- }
182
-
183
- /** @private */
184
- _onClick(e) {
185
- if (this.leaf) {
186
- return;
187
- }
188
- if (isFocusable(e.target)) {
189
- return;
190
- }
191
-
192
- e.preventDefault();
193
- this.expanded = !this.expanded;
194
- }
195
-
196
- /** @private */
197
- _levelChanged(level) {
198
- const value = Number(level).toString();
199
- this.style.setProperty('---level', value);
200
- }
201
- }
202
-
203
- customElements.define(GridTreeToggleElement.is, GridTreeToggleElement);
11
+ export const GridTreeToggleElement = GridTreeToggle;
204
12
 
205
- export { GridTreeToggleElement };
13
+ export * from '@vaadin/grid/src/vaadin-grid-tree-toggle.js';
@@ -1,431 +1,19 @@
1
- import { ElementMixin } from '@vaadin/vaadin-element-mixin/vaadin-element-mixin.js';
2
-
3
- import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
4
-
5
- import { GridDefaultItem, GridDropLocation, GridEventContext, GridItemModel } from './interfaces';
6
-
7
- import { A11yMixin } from './vaadin-grid-a11y-mixin.js';
8
-
9
- import { ActiveItemMixin } from './vaadin-grid-active-item-mixin.js';
10
-
11
- import { ArrayDataProviderMixin } from './vaadin-grid-array-data-provider-mixin.js';
12
-
13
- import { ColumnResizingMixin } from './vaadin-grid-column-resizing-mixin.js';
14
-
15
- import { DataProviderMixin } from './vaadin-grid-data-provider-mixin.js';
16
-
17
- import { DynamicColumnsMixin } from './vaadin-grid-dynamic-columns-mixin.js';
18
-
19
- import { EventContextMixin } from './vaadin-grid-event-context-mixin.js';
20
-
21
- import { FilterMixin } from './vaadin-grid-filter-mixin.js';
22
-
23
- import { RowDetailsMixin } from './vaadin-grid-row-details-mixin.js';
24
-
25
- import { ScrollMixin } from './vaadin-grid-scroll-mixin.js';
26
-
27
- import { SelectionMixin } from './vaadin-grid-selection-mixin.js';
28
-
29
- import { SortMixin } from './vaadin-grid-sort-mixin.js';
30
-
31
- import { StylingMixin } from './vaadin-grid-styling-mixin.js';
32
-
33
- import { DragAndDropMixin } from './vaadin-grid-drag-and-drop-mixin.js';
34
-
35
- import { KeyboardNavigationMixin } from './vaadin-grid-keyboard-navigation-mixin.js';
36
-
37
- import { ColumnReorderingMixin } from './vaadin-grid-column-reordering-mixin.js';
38
-
39
- import { GridColumnElement } from './vaadin-grid-column.js';
40
-
41
- /**
42
- * Fired when the `activeItem` property changes.
43
- */
44
- export type GridActiveItemChangedEvent<TItem> = CustomEvent<{ value: TItem }>;
45
-
46
- /**
47
- * Fired when the cell is activated with click or keyboard.
48
- */
49
- export type GridCellActivateEvent<TItem> = CustomEvent<{ model: GridItemModel<TItem> }>;
50
-
51
- /**
52
- * Fired when a cell is focused with click or keyboard navigation.
53
- */
54
- export type GridCellFocusEvent<TItem> = CustomEvent<{ context: GridEventContext<TItem> }>;
55
-
56
- /**
57
- * Fired when the columns in the grid are reordered.
58
- */
59
- export type GridColumnReorderEvent<TItem> = CustomEvent<{ columns: GridColumnElement<TItem>[] }>;
60
-
61
- /**
62
- * Fired when the grid column resize is finished.
63
- */
64
- export type GridColumnResizeEvent<TItem> = CustomEvent<{ resizedColumn: GridColumnElement<TItem> }>;
65
-
66
- /**
67
- * Fired when the `expandedItems` property changes.
68
- */
69
- export type GridExpandedItemsChangedEvent<TItem> = CustomEvent<{ value: TItem[] }>;
70
-
71
- /**
72
- * Fired when starting to drag grid rows.
73
- */
74
- export type GridDragStartEvent<TItem> = CustomEvent<{
75
- draggedItems: TItem[];
76
- setDraggedItemsCount: (count: number) => void;
77
- setDragData: (type: string, data: string) => void;
78
- }>;
79
-
80
1
  /**
81
- * Fired when a drop occurs on top of the grid.
2
+ * @license
3
+ * Copyright (c) 2021 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
82
5
  */
83
- export type GridDropEvent<TItem> = CustomEvent<{
84
- dropTargetItem: TItem;
85
- dropLocation: GridDropLocation;
86
- dragData: Array<{ type: string; data: string }>;
87
- }>;
6
+ import { GridDefaultItem } from '@vaadin/grid/src/vaadin-grid.js';
7
+ import { Grid } from '@vaadin/grid/src/vaadin-grid.js';
88
8
 
89
9
  /**
90
- * Fired when the `loading` property changes.
10
+ * @deprecated Import `Grid` from `@vaadin/grid` instead.
91
11
  */
92
- export type GridLoadingChangedEvent = CustomEvent<{ value: boolean }>;
93
-
94
- /**
95
- * Fired when the `selectedItems` property changes.
96
- */
97
- export type GridSelectedItemsChangedEvent<TItem> = CustomEvent<{ value: TItem[] }>;
98
-
99
- export interface GridElementEventMap<TItem> {
100
- 'active-item-changed': GridActiveItemChangedEvent<TItem>;
101
-
102
- 'cell-activate': GridCellActivateEvent<TItem>;
103
-
104
- 'cell-focus': GridCellFocusEvent<TItem>;
105
-
106
- 'column-reorder': GridColumnReorderEvent<TItem>;
107
-
108
- 'column-resize': GridColumnResizeEvent<TItem>;
109
-
110
- 'expanded-items-changed': GridExpandedItemsChangedEvent<TItem>;
111
-
112
- 'grid-dragstart': GridDragStartEvent<TItem>;
113
-
114
- 'grid-dragend': Event;
115
-
116
- 'grid-drop': GridDropEvent<TItem>;
117
-
118
- 'loading-changed': GridLoadingChangedEvent;
119
-
120
- 'selected-items-changed': GridSelectedItemsChangedEvent<TItem>;
121
- }
122
-
123
- export interface GridEventMap<TItem> extends HTMLElementEventMap, GridElementEventMap<TItem> {}
12
+ export type GridElement<TItem = GridDefaultItem> = Grid<TItem>;
124
13
 
125
14
  /**
126
- * `<vaadin-grid>` is a free, high quality data grid / data table Web Component. The content of the
127
- * the grid can be populated by using renderer callback function.
128
- *
129
- * ### Quick Start
130
- *
131
- * Start with an assigning an array to the [`items`](#/elements/vaadin-grid#property-items) property to visualize your data.
132
- *
133
- * Use the [`<vaadin-grid-column>`](#/elements/vaadin-grid-column) element to configure the grid columns. Set `path` and `header`
134
- * shorthand properties for the columns to define what gets rendered in the cells of the column.
135
- *
136
- * #### Example:
137
- * ```html
138
- * <vaadin-grid>
139
- * <vaadin-grid-column path="name.first" header="First name"></vaadin-grid-column>
140
- * <vaadin-grid-column path="name.last" header="Last name"></vaadin-grid-column>
141
- * <vaadin-grid-column path="email"></vaadin-grid-column>
142
- * </vaadin-grid>
143
- * ```
144
- *
145
- * For custom content `vaadin-grid-column` element provides you with three types of `renderer` callback functions: `headerRenderer`,
146
- * `renderer` and `footerRenderer`.
147
- *
148
- * Each of those renderer functions provides `root`, `column`, `model` arguments when applicable.
149
- * Generate DOM content, append it to the `root` element and control the state
150
- * of the host element by accessing `column`. Before generating new content,
151
- * users are able to check if there is already content in `root` for reusing it.
152
- *
153
- * Renderers are called on initialization of new column cells and each time the
154
- * related row model is updated. DOM generated during the renderer call can be reused
155
- * in the next renderer call and will be provided with the `root` argument.
156
- * On first call it will be empty.
157
- *
158
- * #### Example:
159
- * ```html
160
- * <vaadin-grid>
161
- * <vaadin-grid-column></vaadin-grid-column>
162
- * <vaadin-grid-column></vaadin-grid-column>
163
- * <vaadin-grid-column></vaadin-grid-column>
164
- * </vaadin-grid>
165
- * ```
166
- * ```js
167
- * const grid = document.querySelector('vaadin-grid');
168
- * grid.items = [{'name': 'John', 'surname': 'Lennon', 'role': 'singer'},
169
- * {'name': 'Ringo', 'surname': 'Starr', 'role': 'drums'}];
170
- *
171
- * const columns = grid.querySelectorAll('vaadin-grid-column');
172
- *
173
- * columns[0].headerRenderer = function(root) {
174
- * root.textContent = 'Name';
175
- * };
176
- * columns[0].renderer = function(root, column, model) {
177
- * root.textContent = model.item.name;
178
- * };
179
- *
180
- * columns[1].headerRenderer = function(root) {
181
- * root.textContent = 'Surname';
182
- * };
183
- * columns[1].renderer = function(root, column, model) {
184
- * root.textContent = model.item.surname;
185
- * };
186
- *
187
- * columns[2].headerRenderer = function(root) {
188
- * root.textContent = 'Role';
189
- * };
190
- * columns[2].renderer = function(root, column, model) {
191
- * root.textContent = model.item.role;
192
- * };
193
- * ```
194
- *
195
- * The following properties are available in the `model` argument:
196
- *
197
- * Property name | Type | Description
198
- * --------------|------|------------
199
- * `index`| Number | The index of the item.
200
- * `item` | String or Object | The item.
201
- * `level` | Number | Number of the item's tree sublevel, starts from 0.
202
- * `expanded` | Boolean | True if the item's tree sublevel is expanded.
203
- * `selected` | Boolean | True if the item is selected.
204
- * `detailsOpened` | Boolean | True if the item's row details are open.
205
- *
206
- * The following helper elements can be used for further customization:
207
- * - [`<vaadin-grid-column-group>`](#/elements/vaadin-grid-column-group)
208
- * - [`<vaadin-grid-filter>`](#/elements/vaadin-grid-filter)
209
- * - [`<vaadin-grid-sorter>`](#/elements/vaadin-grid-sorter)
210
- * - [`<vaadin-grid-selection-column>`](#/elements/vaadin-grid-selection-column)
211
- * - [`<vaadin-grid-tree-toggle>`](#/elements/vaadin-grid-tree-toggle)
212
- *
213
- * __Note that the helper elements must be explicitly imported.__
214
- * If you want to import everything at once you can use the `all-imports.html` bundle.
215
- *
216
- * ### Lazy Loading with Function Data Provider
217
- *
218
- * In addition to assigning an array to the items property, you can alternatively
219
- * provide the `<vaadin-grid>` data through the
220
- * [`dataProvider`](#/elements/vaadin-grid#property-dataProvider) function property.
221
- * The `<vaadin-grid>` calls this function lazily, only when it needs more data
222
- * to be displayed.
223
- *
224
- * See the [`dataProvider`](#/elements/vaadin-grid#property-dataProvider) in
225
- * the API reference below for the detailed data provider arguments description,
226
- * and the “Assigning Data” page in the demos.
227
- *
228
- * __Note that expanding the tree grid's item will trigger a call to the `dataProvider`.__
229
- *
230
- * __Also, note that when using function data providers, the total number of items
231
- * needs to be set manually. The total number of items can be returned
232
- * in the second argument of the data provider callback:__
233
- *
234
- * ```javascript
235
- * grid.dataProvider = function(params, callback) {
236
- * const url = 'https://api.example/data' +
237
- * '?page=' + params.page + // the requested page index
238
- * '&per_page=' + params.pageSize; // number of items on the page
239
- * const xhr = new XMLHttpRequest();
240
- * xhr.onload = function() {
241
- * const response = JSON.parse(xhr.responseText);
242
- * callback(
243
- * response.employees, // requested page of items
244
- * response.totalSize // total number of items
245
- * );
246
- * };
247
- * xhr.open('GET', url, true);
248
- * xhr.send();
249
- * };
250
- * ```
251
- *
252
- * __Alternatively, you can use the `size` property to set the total number of items:__
253
- *
254
- * ```javascript
255
- * grid.size = 200; // The total number of items
256
- * grid.dataProvider = function(params, callback) {
257
- * const url = 'https://api.example/data' +
258
- * '?page=' + params.page + // the requested page index
259
- * '&per_page=' + params.pageSize; // number of items on the page
260
- * const xhr = new XMLHttpRequest();
261
- * xhr.onload = function() {
262
- * const response = JSON.parse(xhr.responseText);
263
- * callback(response.employees);
264
- * };
265
- * xhr.open('GET', url, true);
266
- * xhr.send();
267
- * };
268
- * ```
269
- *
270
- * ### Styling
271
- *
272
- * The following shadow DOM parts are available for styling:
273
- *
274
- * Part name | Description
275
- * ----------------|----------------
276
- * `row` | Row in the internal table
277
- * `cell` | Cell in the internal table
278
- * `header-cell` | Header cell in the internal table
279
- * `body-cell` | Body cell in the internal table
280
- * `footer-cell` | Footer cell in the internal table
281
- * `details-cell` | Row details cell in the internal table
282
- * `resize-handle` | Handle for resizing the columns
283
- * `reorder-ghost` | Ghost element of the header cell being dragged
284
- *
285
- * The following state attributes are available for styling:
286
- *
287
- * Attribute | Description | Part name
288
- * -------------|-------------|------------
289
- * `loading` | Set when the grid is loading data from data provider | :host
290
- * `interacting` | Keyboard navigation in interaction mode | :host
291
- * `navigating` | Keyboard navigation in navigation mode | :host
292
- * `overflow` | Set when rows are overflowing the grid viewport. Possible values: `top`, `bottom`, `left`, `right` | :host
293
- * `reordering` | Set when the grid's columns are being reordered | :host
294
- * `dragover` | Set when the grid (not a specific row) is dragged over | :host
295
- * `dragging-rows` : Set when grid rows are dragged | :host
296
- * `reorder-status` | Reflects the status of a cell while columns are being reordered | cell
297
- * `frozen` | Frozen cell | cell
298
- * `last-frozen` | Last frozen cell | cell
299
- * * `first-column` | First visible cell on a row | cell
300
- * `last-column` | Last visible cell on a row | cell
301
- * `selected` | Selected row | row
302
- * `expanded` | Expanded row | row
303
- * `details-opened` | Row with details open | row
304
- * `loading` | Row that is waiting for data from data provider | row
305
- * `odd` | Odd row | row
306
- * `first` | The first body row | row
307
- * `dragstart` | Set for one frame when drag of a row is starting. The value is a number when multiple rows are dragged | row
308
- * `dragover` | Set when the row is dragged over | row
309
- * `drag-disabled` | Set to a row that isn't available for dragging | row
310
- * `drop-disabled` | Set to a row that can't be dropped on top of | row
311
- *
312
- * See [Styling Components](https://vaadin.com/docs/latest/ds/customization/styling-components) documentation.
313
- *
314
- * @fires {CustomEvent} active-item-changed - Fired when the `activeItem` property changes.
315
- * @fires {CustomEvent} cell-activate - Fired when the cell is activated with click or keyboard.
316
- * @fires {CustomEvent} cell-focus - Fired when a cell is focused with click or keyboard navigation.
317
- * @fires {CustomEvent} column-reorder - Fired when the columns in the grid are reordered.
318
- * @fires {CustomEvent} column-resize - Fired when the grid column resize is finished.
319
- * @fires {CustomEvent} expanded-items-changed - Fired when the `expandedItems` property changes.
320
- * @fires {CustomEvent} grid-dragstart - Fired when starting to drag grid rows.
321
- * @fires {CustomEvent} grid-dragend - Fired when the dragging of the rows ends.
322
- * @fires {CustomEvent} grid-drop - Fired when a drop occurs on top of the grid.
323
- * @fires {CustomEvent} loading-changed - Fired when the `loading` property changes.
324
- * @fires {CustomEvent} selected-items-changed - Fired when the `selectedItems` property changes.
15
+ * @deprecated Import `Grid` from `@vaadin/grid` instead.
325
16
  */
326
- declare class GridElement<TItem = GridDefaultItem> extends HTMLElement {
327
- /**
328
- * If true, the grid's height is defined by its rows.
329
- *
330
- * Effectively, this disables the grid's virtual scrolling so that all the rows are rendered in the DOM at once.
331
- * If the grid has a large number of items, using the feature is discouraged to avoid performance issues.
332
- * @attr {boolean} all-rows-visible
333
- */
334
- allRowsVisible: boolean;
335
-
336
- __itemsReceived(): void;
337
-
338
- /**
339
- * Updates the `width` of all columns which have `autoWidth` set to `true`.
340
- */
341
- recalculateColumnWidths(): void;
342
-
343
- _updateRow(
344
- row: HTMLTableRowElement,
345
- columns: GridColumnElement<TItem>[],
346
- section: string | null,
347
- isColumnRow: boolean,
348
- noNotify: boolean
349
- ): void;
350
-
351
- __updateHeaderFooterRowVisibility(row: HTMLTableRowElement | null): void;
352
-
353
- _renderColumnTree(columnTree: GridColumnElement<TItem>[]): void;
354
-
355
- _updateItem(row: HTMLElement, item: TItem | null): void;
356
-
357
- _toggleAttribute(name: string, bool: boolean, node: Element): void;
358
-
359
- __getRowModel(row: HTMLTableRowElement): GridItemModel<TItem>;
360
-
361
- /**
362
- * Requests an update for the content of cells.
363
- *
364
- * While performing the update, the following renderers are invoked:
365
- * - `GridElement.rowDetailsRenderer`
366
- * - `GridColumnElement.renderer`
367
- * - `GridColumnElement.headerRenderer`
368
- * - `GridColumnElement.footerRenderer`
369
- *
370
- * It is not guaranteed that the update happens immediately (synchronously) after it is requested.
371
- */
372
- requestContentUpdate(): void;
373
-
374
- /**
375
- * Manually invoke existing renderers for all the columns
376
- * (header, footer and body cells) and opened row details.
377
- *
378
- * @deprecated Since Vaadin 21, `render()` is deprecated. Please use `requestContentUpdate()` instead.
379
- */
380
- render(): void;
381
-
382
- /**
383
- * Updates the computed metrics and positioning of internal grid parts
384
- * (row/details cell positioning etc). Needs to be invoked whenever the sizing of grid
385
- * content changes asynchronously to ensure consistent appearance (e.g. when a
386
- * contained image whose bounds aren't known beforehand finishes loading).
387
- */
388
- notifyResize(): void;
389
-
390
- __forceReflow(): void;
391
-
392
- addEventListener<K extends keyof GridEventMap<TItem>>(
393
- type: K,
394
- listener: (this: GridElement<TItem>, ev: GridEventMap<TItem>[K]) => void,
395
- options?: boolean | AddEventListenerOptions
396
- ): void;
397
-
398
- removeEventListener<K extends keyof GridEventMap<TItem>>(
399
- type: K,
400
- listener: (this: GridElement<TItem>, ev: GridEventMap<TItem>[K]) => void,
401
- options?: boolean | EventListenerOptions
402
- ): void;
403
- }
404
-
405
- interface GridElement<TItem = GridDefaultItem>
406
- extends ElementMixin,
407
- ThemableMixin,
408
- A11yMixin,
409
- ActiveItemMixin<TItem>,
410
- ArrayDataProviderMixin<TItem>,
411
- ColumnResizingMixin,
412
- DataProviderMixin<TItem>,
413
- DynamicColumnsMixin<TItem>,
414
- FilterMixin,
415
- RowDetailsMixin<TItem>,
416
- ScrollMixin,
417
- SelectionMixin<TItem>,
418
- SortMixin,
419
- KeyboardNavigationMixin<TItem>,
420
- ColumnReorderingMixin<TItem>,
421
- EventContextMixin<TItem>,
422
- StylingMixin<TItem>,
423
- DragAndDropMixin<TItem> {}
424
-
425
- declare global {
426
- interface HTMLElementTagNameMap {
427
- 'vaadin-grid': GridElement<GridDefaultItem>;
428
- }
429
- }
17
+ export const GridElement: typeof Grid;
430
18
 
431
- export { GridElement };
19
+ export * from '@vaadin/grid/src/vaadin-grid.js';