@vaadin/grid 24.4.0-alpha1 → 24.4.0-alpha11

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 (149) hide show
  1. package/package.json +11 -11
  2. package/src/all-imports.js +1 -1
  3. package/src/lit/column-renderer-directives.d.ts +1 -1
  4. package/src/lit/column-renderer-directives.js +1 -1
  5. package/src/lit/renderer-directives.d.ts +1 -1
  6. package/src/lit/renderer-directives.js +1 -1
  7. package/src/lit-all-imports.js +1 -1
  8. package/src/vaadin-grid-a11y-mixin.js +1 -1
  9. package/src/vaadin-grid-active-item-mixin.d.ts +1 -1
  10. package/src/vaadin-grid-active-item-mixin.js +1 -1
  11. package/src/vaadin-grid-array-data-provider-mixin.d.ts +1 -1
  12. package/src/vaadin-grid-array-data-provider-mixin.js +14 -3
  13. package/src/vaadin-grid-column-group-mixin.d.ts +1 -1
  14. package/src/vaadin-grid-column-group-mixin.js +1 -1
  15. package/src/vaadin-grid-column-group.d.ts +1 -1
  16. package/src/vaadin-grid-column-group.js +1 -1
  17. package/src/vaadin-grid-column-mixin.d.ts +1 -1
  18. package/src/vaadin-grid-column-mixin.js +9 -5
  19. package/src/vaadin-grid-column-reordering-mixin.d.ts +1 -1
  20. package/src/vaadin-grid-column-reordering-mixin.js +1 -1
  21. package/src/vaadin-grid-column-resizing-mixin.js +1 -1
  22. package/src/vaadin-grid-column.d.ts +1 -1
  23. package/src/vaadin-grid-column.js +1 -1
  24. package/src/vaadin-grid-data-provider-mixin.d.ts +1 -1
  25. package/src/vaadin-grid-data-provider-mixin.js +1 -1
  26. package/src/vaadin-grid-drag-and-drop-mixin.d.ts +1 -1
  27. package/src/vaadin-grid-drag-and-drop-mixin.js +1 -1
  28. package/src/vaadin-grid-dynamic-columns-mixin.js +1 -1
  29. package/src/vaadin-grid-event-context-mixin.d.ts +1 -1
  30. package/src/vaadin-grid-event-context-mixin.js +1 -1
  31. package/src/vaadin-grid-filter-column-mixin.d.ts +1 -1
  32. package/src/vaadin-grid-filter-column-mixin.js +1 -1
  33. package/src/vaadin-grid-filter-column.d.ts +1 -1
  34. package/src/vaadin-grid-filter-column.js +1 -1
  35. package/src/vaadin-grid-filter-element-mixin.d.ts +1 -1
  36. package/src/vaadin-grid-filter-element-mixin.js +1 -1
  37. package/src/vaadin-grid-filter-mixin.js +1 -1
  38. package/src/vaadin-grid-filter.d.ts +1 -1
  39. package/src/vaadin-grid-filter.js +1 -1
  40. package/src/vaadin-grid-helpers.js +1 -1
  41. package/src/vaadin-grid-keyboard-navigation-mixin.js +17 -7
  42. package/src/vaadin-grid-mixin.d.ts +1 -1
  43. package/src/vaadin-grid-mixin.js +21 -4
  44. package/src/vaadin-grid-row-details-mixin.d.ts +1 -1
  45. package/src/vaadin-grid-row-details-mixin.js +1 -1
  46. package/src/vaadin-grid-scroll-mixin.d.ts +3 -1
  47. package/src/vaadin-grid-scroll-mixin.js +1 -1
  48. package/src/vaadin-grid-selection-column-base-mixin.d.ts +1 -3
  49. package/src/vaadin-grid-selection-column-base-mixin.js +1 -1
  50. package/src/vaadin-grid-selection-column-mixin.d.ts +1 -1
  51. package/src/vaadin-grid-selection-column-mixin.js +2 -1
  52. package/src/vaadin-grid-selection-column.d.ts +1 -1
  53. package/src/vaadin-grid-selection-column.js +1 -1
  54. package/src/vaadin-grid-selection-mixin.d.ts +1 -1
  55. package/src/vaadin-grid-selection-mixin.js +1 -1
  56. package/src/vaadin-grid-sort-column-mixin.d.ts +1 -1
  57. package/src/vaadin-grid-sort-column-mixin.js +1 -1
  58. package/src/vaadin-grid-sort-column.d.ts +1 -1
  59. package/src/vaadin-grid-sort-column.js +1 -1
  60. package/src/vaadin-grid-sort-mixin.d.ts +1 -1
  61. package/src/vaadin-grid-sort-mixin.js +7 -32
  62. package/src/vaadin-grid-sorter-mixin.d.ts +1 -1
  63. package/src/vaadin-grid-sorter-mixin.js +1 -1
  64. package/src/vaadin-grid-sorter.d.ts +1 -1
  65. package/src/vaadin-grid-sorter.js +1 -1
  66. package/src/vaadin-grid-styles.js +7 -1
  67. package/src/vaadin-grid-styling-mixin.d.ts +2 -2
  68. package/src/vaadin-grid-styling-mixin.js +1 -1
  69. package/src/vaadin-grid-tree-column-mixin.d.ts +1 -1
  70. package/src/vaadin-grid-tree-column-mixin.js +1 -1
  71. package/src/vaadin-grid-tree-column.d.ts +1 -1
  72. package/src/vaadin-grid-tree-column.js +1 -1
  73. package/src/vaadin-grid-tree-toggle-mixin.d.ts +1 -1
  74. package/src/vaadin-grid-tree-toggle-mixin.js +1 -1
  75. package/src/vaadin-grid-tree-toggle.d.ts +1 -1
  76. package/src/vaadin-grid-tree-toggle.js +1 -1
  77. package/src/vaadin-grid.d.ts +1 -1
  78. package/src/vaadin-grid.js +1 -1
  79. package/src/vaadin-lit-grid-column-group.js +2 -2
  80. package/src/vaadin-lit-grid-column.js +2 -2
  81. package/src/vaadin-lit-grid-filter-column.js +2 -2
  82. package/src/vaadin-lit-grid-filter.js +2 -2
  83. package/src/vaadin-lit-grid-selection-column.js +2 -2
  84. package/src/vaadin-lit-grid-sort-column.js +2 -2
  85. package/src/vaadin-lit-grid-sorter.js +2 -2
  86. package/src/vaadin-lit-grid-tree-column.js +2 -2
  87. package/src/vaadin-lit-grid-tree-toggle.js +2 -2
  88. package/src/vaadin-lit-grid.js +2 -2
  89. package/theme/lumo/all-imports.d.ts +11 -0
  90. package/theme/lumo/lit-all-imports.d.ts +11 -0
  91. package/theme/lumo/vaadin-grid-column-group.d.ts +1 -0
  92. package/theme/lumo/vaadin-grid-column.d.ts +1 -0
  93. package/theme/lumo/vaadin-grid-filter-column.d.ts +2 -0
  94. package/theme/lumo/vaadin-grid-filter.d.ts +2 -0
  95. package/theme/lumo/vaadin-grid-selection-column.d.ts +2 -0
  96. package/theme/lumo/vaadin-grid-sort-column.d.ts +2 -0
  97. package/theme/lumo/vaadin-grid-sorter-styles.d.ts +3 -0
  98. package/theme/lumo/vaadin-grid-sorter.d.ts +2 -0
  99. package/theme/lumo/vaadin-grid-styles.d.ts +6 -0
  100. package/theme/lumo/vaadin-grid-styles.js +5 -1
  101. package/theme/lumo/vaadin-grid-tree-column.d.ts +2 -0
  102. package/theme/lumo/vaadin-grid-tree-toggle-styles.d.ts +3 -0
  103. package/theme/lumo/vaadin-grid-tree-toggle.d.ts +2 -0
  104. package/theme/lumo/vaadin-grid.d.ts +2 -0
  105. package/theme/lumo/vaadin-lit-grid-column-group.d.ts +1 -0
  106. package/theme/lumo/vaadin-lit-grid-column.d.ts +1 -0
  107. package/theme/lumo/vaadin-lit-grid-filter-column.d.ts +2 -0
  108. package/theme/lumo/vaadin-lit-grid-filter.d.ts +2 -0
  109. package/theme/lumo/vaadin-lit-grid-filter.js +1 -2
  110. package/theme/lumo/vaadin-lit-grid-selection-column.d.ts +2 -0
  111. package/theme/lumo/vaadin-lit-grid-selection-column.js +1 -1
  112. package/theme/lumo/vaadin-lit-grid-sort-column.d.ts +2 -0
  113. package/theme/lumo/vaadin-lit-grid-sorter.d.ts +2 -0
  114. package/theme/lumo/vaadin-lit-grid-tree-column.d.ts +2 -0
  115. package/theme/lumo/vaadin-lit-grid-tree-toggle.d.ts +2 -0
  116. package/theme/lumo/vaadin-lit-grid.d.ts +2 -0
  117. package/theme/material/all-imports.d.ts +11 -0
  118. package/theme/material/lit-all-imports.d.ts +11 -0
  119. package/theme/material/vaadin-grid-column-group.d.ts +1 -0
  120. package/theme/material/vaadin-grid-column.d.ts +1 -0
  121. package/theme/material/vaadin-grid-filter-column.d.ts +2 -0
  122. package/theme/material/vaadin-grid-filter.d.ts +2 -0
  123. package/theme/material/vaadin-grid-selection-column.d.ts +2 -0
  124. package/theme/material/vaadin-grid-sort-column.d.ts +2 -0
  125. package/theme/material/vaadin-grid-sorter-styles.d.ts +2 -0
  126. package/theme/material/vaadin-grid-sorter.d.ts +2 -0
  127. package/theme/material/vaadin-grid-styles.d.ts +2 -0
  128. package/theme/material/vaadin-grid-tree-column.d.ts +2 -0
  129. package/theme/material/vaadin-grid-tree-toggle-styles.d.ts +3 -0
  130. package/theme/material/vaadin-grid-tree-toggle.d.ts +2 -0
  131. package/theme/material/vaadin-grid.d.ts +2 -0
  132. package/theme/material/vaadin-lit-grid-column-group.d.ts +1 -0
  133. package/theme/material/vaadin-lit-grid-column.d.ts +1 -0
  134. package/theme/material/vaadin-lit-grid-filter-column.d.ts +2 -0
  135. package/theme/material/vaadin-lit-grid-filter.d.ts +2 -0
  136. package/theme/material/vaadin-lit-grid-filter.js +1 -2
  137. package/theme/material/vaadin-lit-grid-selection-column.d.ts +2 -0
  138. package/theme/material/vaadin-lit-grid-selection-column.js +1 -1
  139. package/theme/material/vaadin-lit-grid-sort-column.d.ts +2 -0
  140. package/theme/material/vaadin-lit-grid-sorter.d.ts +2 -0
  141. package/theme/material/vaadin-lit-grid-tree-column.d.ts +2 -0
  142. package/theme/material/vaadin-lit-grid-tree-toggle.d.ts +2 -0
  143. package/theme/material/vaadin-lit-grid.d.ts +2 -0
  144. package/vaadin-grid.d.ts +0 -1
  145. package/vaadin-grid.js +0 -1
  146. package/vaadin-lit-grid.d.ts +0 -1
  147. package/vaadin-lit-grid.js +0 -1
  148. package/web-types.json +64 -5
  149. package/web-types.lit.json +32 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/grid",
3
- "version": "24.4.0-alpha1",
3
+ "version": "24.4.0-alpha11",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -46,24 +46,24 @@
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-alpha1",
50
- "@vaadin/checkbox": "24.4.0-alpha1",
51
- "@vaadin/component-base": "24.4.0-alpha1",
52
- "@vaadin/lit-renderer": "24.4.0-alpha1",
53
- "@vaadin/text-field": "24.4.0-alpha1",
54
- "@vaadin/vaadin-lumo-styles": "24.4.0-alpha1",
55
- "@vaadin/vaadin-material-styles": "24.4.0-alpha1",
56
- "@vaadin/vaadin-themable-mixin": "24.4.0-alpha1"
49
+ "@vaadin/a11y-base": "24.4.0-alpha11",
50
+ "@vaadin/checkbox": "24.4.0-alpha11",
51
+ "@vaadin/component-base": "24.4.0-alpha11",
52
+ "@vaadin/lit-renderer": "24.4.0-alpha11",
53
+ "@vaadin/text-field": "24.4.0-alpha11",
54
+ "@vaadin/vaadin-lumo-styles": "24.4.0-alpha11",
55
+ "@vaadin/vaadin-material-styles": "24.4.0-alpha11",
56
+ "@vaadin/vaadin-themable-mixin": "24.4.0-alpha11",
57
+ "lit": "^3.0.0"
57
58
  },
58
59
  "devDependencies": {
59
60
  "@esm-bundle/chai": "^4.3.4",
60
61
  "@vaadin/testing-helpers": "^0.6.0",
61
- "lit": "^3.0.0",
62
62
  "sinon": "^13.0.2"
63
63
  },
64
64
  "web-types": [
65
65
  "web-types.json",
66
66
  "web-types.lit.json"
67
67
  ],
68
- "gitHead": "3e2ed41c99d618ff7def2734fd863c21c85775a3"
68
+ "gitHead": "09c2f31d69cd611714169e0cd035688f54b2da37"
69
69
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2017 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2017 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
  /* eslint-disable max-classes-per-file */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2017 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2017 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
  /* eslint-disable max-classes-per-file */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2017 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2017 - 2024 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 type { DirectiveResult } from 'lit/directive';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2017 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2017 - 2024 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 { directive } from 'lit/directive.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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-lit-grid.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { iterateChildren, iterateRowCells } from './vaadin-grid-helpers.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { createArrayDataProvider } from './array-data-provider.js';
@@ -25,7 +25,7 @@ export const ArrayDataProviderMixin = (superClass) =>
25
25
  }
26
26
 
27
27
  static get observers() {
28
- return ['__dataProviderOrItemsChanged(dataProvider, items, isAttached, _filters, _sorters, items.*)'];
28
+ return ['__dataProviderOrItemsChanged(dataProvider, items, isAttached, items.*)'];
29
29
  }
30
30
 
31
31
  /** @private */
@@ -37,6 +37,18 @@ export const ArrayDataProviderMixin = (superClass) =>
37
37
  this.dataProvider = arrayDataProvider;
38
38
  }
39
39
 
40
+ /**
41
+ * @override
42
+ * @protected
43
+ */
44
+ _onDataProviderPageReceived() {
45
+ super._onDataProviderPageReceived();
46
+
47
+ if (this._arrayDataProvider) {
48
+ this.size = this._flatSize;
49
+ }
50
+ }
51
+
40
52
  /** @private */
41
53
  __dataProviderOrItemsChanged(dataProvider, items, isAttached) {
42
54
  if (!isAttached) {
@@ -59,7 +71,6 @@ export const ArrayDataProviderMixin = (superClass) =>
59
71
  } else if (this._arrayDataProvider.__items === items) {
60
72
  // The items array was modified
61
73
  this.clearCache();
62
- this.size = this._flatSize;
63
74
  } else {
64
75
  // The items array was replaced
65
76
  this.__setArrayDataProvider(items);
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { ColumnBaseMixinClass } from './vaadin-grid-column.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { animationFrame } from '@vaadin/component-base/src/async.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { GridDefaultItem } from './vaadin-grid.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { animationFrame } from '@vaadin/component-base/src/async.js';
@@ -598,8 +598,14 @@ export const ColumnBaseMixin = (superClass) =>
598
598
 
599
599
  /** @protected */
600
600
  _runRenderer(renderer, cell, model) {
601
+ const isVisibleBodyCell = model && model.item && !cell.parentElement.hidden;
602
+ const shouldRender = isVisibleBodyCell || renderer === this._headerRenderer || renderer === this._footerRenderer;
603
+ if (!shouldRender) {
604
+ return;
605
+ }
606
+
601
607
  const args = [cell._content, this];
602
- if (model && model.item) {
608
+ if (isVisibleBodyCell) {
603
609
  args.push(model);
604
610
  }
605
611
 
@@ -634,9 +640,7 @@ export const ColumnBaseMixin = (superClass) =>
634
640
 
635
641
  cell._renderer = renderer;
636
642
 
637
- if (model.item || renderer === this._headerRenderer || renderer === this._footerRenderer) {
638
- this._runRenderer(renderer, cell, model);
639
- }
643
+ this._runRenderer(renderer, cell, model);
640
644
  });
641
645
  }
642
646
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { isTouch } from '@vaadin/component-base/src/browser-utils.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { addListener } from '@vaadin/component-base/src/gestures.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { PolymerElement } from '@polymer/polymer/polymer-element.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { microTask, timeOut } from '@vaadin/component-base/src/async.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { microTask, timeOut } from '@vaadin/component-base/src/async.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { GridDefaultItem } from './vaadin-grid.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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-filter.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { timeOut } from '@vaadin/component-base/src/async.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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/text-field/src/vaadin-text-field.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { microTask } from '@vaadin/component-base/src/async.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { isKeyboardActive } from '@vaadin/a11y-base/src/focus-utils.js';
@@ -109,6 +109,11 @@ export const KeyboardNavigationMixin = (superClass) =>
109
109
  });
110
110
  }
111
111
 
112
+ /** @private */
113
+ get _visibleItemsCount() {
114
+ return this._lastVisibleIndex - this._firstVisibleIndex - 1;
115
+ }
116
+
112
117
  /** @protected */
113
118
  ready() {
114
119
  super.ready();
@@ -304,8 +309,9 @@ export const KeyboardNavigationMixin = (superClass) =>
304
309
  _onNavigationKeyDown(e, key) {
305
310
  e.preventDefault();
306
311
 
307
- const visibleItemsCount = this._lastVisibleIndex - this._firstVisibleIndex - 1;
308
312
  const isRTL = this.__isRTL;
313
+ const activeRow = e.composedPath().find((el) => this.__isRow(el));
314
+ const activeCell = e.composedPath().find((el) => this.__isCell(el));
309
315
 
310
316
  // Handle keyboard interaction as defined in:
311
317
  // https://w3c.github.io/aria-practices/#keyboard-interaction-24
@@ -350,18 +356,22 @@ export const KeyboardNavigationMixin = (superClass) =>
350
356
  dy = -1;
351
357
  break;
352
358
  case 'PageDown':
353
- dy = visibleItemsCount;
359
+ // Check if the active group is body
360
+ if (this.$.items.contains(activeRow)) {
361
+ const currentRowIndex = this.__getIndexInGroup(activeRow, this._focusedItemIndex);
362
+ // Scroll the current row to the top...
363
+ this._scrollToFlatIndex(currentRowIndex);
364
+ }
365
+ // ...only then measure the visible items count
366
+ dy = this._visibleItemsCount;
354
367
  break;
355
368
  case 'PageUp':
356
- dy = -visibleItemsCount;
369
+ dy = -this._visibleItemsCount;
357
370
  break;
358
371
  default:
359
372
  break;
360
373
  }
361
374
 
362
- const activeRow = e.composedPath().find((el) => this.__isRow(el));
363
- const activeCell = e.composedPath().find((el) => this.__isCell(el));
364
-
365
375
  if ((this.__rowFocusMode && !activeRow) || (!this.__rowFocusMode && !activeCell)) {
366
376
  // When using a screen reader, it's possible that neither a cell nor a row is focused.
367
377
  return;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { isElementHidden } from '@vaadin/a11y-base/src/focus-utils.js';
@@ -432,6 +432,12 @@ export const GridMixin = (superClass) =>
432
432
  cell.style.position = '';
433
433
  }
434
434
  });
435
+
436
+ if (autoWidth) {
437
+ this.$.scroller.setAttribute('measuring-auto-width', '');
438
+ } else {
439
+ this.$.scroller.removeAttribute('measuring-auto-width');
440
+ }
435
441
  }
436
442
 
437
443
  /**
@@ -478,7 +484,16 @@ export const GridMixin = (superClass) =>
478
484
  return;
479
485
  }
480
486
  const cols = this._getColumns().filter((col) => !col.hidden && col.autoWidth);
481
- this._recalculateColumnWidths(cols);
487
+
488
+ const undefinedCols = cols.filter((col) => !customElements.get(col.localName));
489
+ if (undefinedCols.length) {
490
+ // Some of the columns are not defined yet, wait for them to be defined before measuring
491
+ Promise.all(undefinedCols.map((col) => customElements.whenDefined(col.localName))).then(() => {
492
+ this._recalculateColumnWidths(cols);
493
+ });
494
+ } else {
495
+ this._recalculateColumnWidths(cols);
496
+ }
482
497
  }
483
498
 
484
499
  /** @private */
@@ -659,11 +674,13 @@ export const GridMixin = (superClass) =>
659
674
  cell.__parentRow = row;
660
675
  // Cache the cell reference
661
676
  row.__cells.push(cell);
662
- if (!column._bodyContentHidden) {
677
+
678
+ const isSizerRow = row === this.$.sizer;
679
+ if (!column._bodyContentHidden || isSizerRow) {
663
680
  row.appendChild(cell);
664
681
  }
665
682
 
666
- if (row === this.$.sizer) {
683
+ if (isSizerRow) {
667
684
  column._sizerCell = cell;
668
685
  }
669
686
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { iterateChildren } from './vaadin-grid-helpers.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -43,6 +43,8 @@ export declare class ScrollMixinClass {
43
43
  * - Keyboard Navigation: Tabbing through focusable elements inside the grid body may not work as expected because
44
44
  * some of the columns that would include focusable elements in the body cells may be outside the visible viewport
45
45
  * and thus not rendered.
46
+ *
47
+ * @attr {eager|lazy} column-rendering
46
48
  */
47
49
  columnRendering: ColumnRendering;
48
50
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2016 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2016 - 2024 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 { isElementHidden } from '@vaadin/a11y-base';