@semcore/data-table 16.0.0-prerelease.16 → 16.0.0-prerelease.18

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 (107) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/cjs/components/Body/Body.js +336 -97
  3. package/lib/cjs/components/Body/Body.js.map +1 -1
  4. package/lib/cjs/components/Body/Body.types.js.map +1 -1
  5. package/lib/cjs/components/Body/Cell.js +89 -32
  6. package/lib/cjs/components/Body/Cell.js.map +1 -1
  7. package/lib/cjs/components/Body/Cell.types.js.map +1 -1
  8. package/lib/cjs/components/Body/MergedCells.js +9 -5
  9. package/lib/cjs/components/Body/MergedCells.js.map +1 -1
  10. package/lib/cjs/components/Body/Row.js +86 -112
  11. package/lib/cjs/components/Body/Row.js.map +1 -1
  12. package/lib/cjs/components/Body/Row.types.js +2 -0
  13. package/lib/cjs/components/Body/Row.types.js.map +1 -1
  14. package/lib/cjs/components/Body/style.shadow.css +87 -36
  15. package/lib/cjs/components/DataTable/DataTable.js +317 -158
  16. package/lib/cjs/components/DataTable/DataTable.js.map +1 -1
  17. package/lib/cjs/components/DataTable/DataTable.types.js +2 -0
  18. package/lib/cjs/components/DataTable/DataTable.types.js.map +1 -1
  19. package/lib/cjs/components/DataTable/dataTable.shadow.css +4 -0
  20. package/lib/cjs/components/Head/Column.js +54 -33
  21. package/lib/cjs/components/Head/Column.js.map +1 -1
  22. package/lib/cjs/components/Head/Column.types.js.map +1 -1
  23. package/lib/cjs/components/Head/Group.js +51 -38
  24. package/lib/cjs/components/Head/Group.js.map +1 -1
  25. package/lib/cjs/components/Head/Group.type.js.map +1 -1
  26. package/lib/cjs/components/Head/Head.js +46 -31
  27. package/lib/cjs/components/Head/Head.js.map +1 -1
  28. package/lib/cjs/components/Head/Head.types.js.map +1 -1
  29. package/lib/cjs/components/Head/style.shadow.css +16 -14
  30. package/lib/cjs/index.js.map +1 -1
  31. package/lib/cjs/style/scroll-shadows.shadow.css +30 -6
  32. package/lib/es6/components/Body/Body.js +337 -98
  33. package/lib/es6/components/Body/Body.js.map +1 -1
  34. package/lib/es6/components/Body/Body.types.js.map +1 -1
  35. package/lib/es6/components/Body/Cell.js +89 -32
  36. package/lib/es6/components/Body/Cell.js.map +1 -1
  37. package/lib/es6/components/Body/Cell.types.js.map +1 -1
  38. package/lib/es6/components/Body/MergedCells.js +9 -5
  39. package/lib/es6/components/Body/MergedCells.js.map +1 -1
  40. package/lib/es6/components/Body/Row.js +86 -112
  41. package/lib/es6/components/Body/Row.js.map +1 -1
  42. package/lib/es6/components/Body/Row.types.js +1 -1
  43. package/lib/es6/components/Body/Row.types.js.map +1 -1
  44. package/lib/es6/components/Body/style.shadow.css +87 -36
  45. package/lib/es6/components/DataTable/DataTable.js +315 -157
  46. package/lib/es6/components/DataTable/DataTable.js.map +1 -1
  47. package/lib/es6/components/DataTable/DataTable.types.js +1 -1
  48. package/lib/es6/components/DataTable/DataTable.types.js.map +1 -1
  49. package/lib/es6/components/DataTable/dataTable.shadow.css +4 -0
  50. package/lib/es6/components/Head/Column.js +52 -31
  51. package/lib/es6/components/Head/Column.js.map +1 -1
  52. package/lib/es6/components/Head/Column.types.js.map +1 -1
  53. package/lib/es6/components/Head/Group.js +51 -38
  54. package/lib/es6/components/Head/Group.js.map +1 -1
  55. package/lib/es6/components/Head/Group.type.js.map +1 -1
  56. package/lib/es6/components/Head/Head.js +47 -32
  57. package/lib/es6/components/Head/Head.js.map +1 -1
  58. package/lib/es6/components/Head/Head.types.js.map +1 -1
  59. package/lib/es6/components/Head/style.shadow.css +16 -14
  60. package/lib/es6/index.js.map +1 -1
  61. package/lib/es6/style/scroll-shadows.shadow.css +30 -6
  62. package/lib/esm/components/Body/Body.mjs +317 -94
  63. package/lib/esm/components/Body/Cell.mjs +82 -31
  64. package/lib/esm/components/Body/MergedCells.mjs +9 -5
  65. package/lib/esm/components/Body/Row.mjs +78 -107
  66. package/lib/esm/components/DataTable/DataTable.mjs +281 -105
  67. package/lib/esm/components/Head/Column.mjs +52 -32
  68. package/lib/esm/components/Head/Group.mjs +48 -39
  69. package/lib/esm/components/Head/Head.mjs +45 -32
  70. package/lib/esm/utils.mjs +0 -9
  71. package/lib/types/components/Body/Body.types.d.ts +21 -12
  72. package/lib/types/components/Body/Cell.types.d.ts +9 -6
  73. package/lib/types/components/Body/MergedCells.d.ts +8 -3
  74. package/lib/types/components/Body/Row.types.d.ts +22 -10
  75. package/lib/types/components/DataTable/DataTable.d.ts +2 -1
  76. package/lib/types/components/DataTable/DataTable.types.d.ts +55 -6
  77. package/lib/types/components/Head/Column.d.ts +2 -1
  78. package/lib/types/components/Head/Column.types.d.ts +5 -3
  79. package/lib/types/components/Head/Group.d.ts +5 -2
  80. package/lib/types/components/Head/Group.type.d.ts +6 -1
  81. package/lib/types/components/Head/Head.d.ts +93 -3
  82. package/lib/types/components/Head/Head.types.d.ts +1 -0
  83. package/lib/types/index.d.ts +2 -2
  84. package/package.json +8 -7
  85. package/lib/cjs/Body.js +0 -476
  86. package/lib/cjs/Body.js.map +0 -1
  87. package/lib/cjs/DataTable.js +0 -622
  88. package/lib/cjs/DataTable.js.map +0 -1
  89. package/lib/cjs/Head.js +0 -399
  90. package/lib/cjs/Head.js.map +0 -1
  91. package/lib/cjs/style/data-table.shadow.css +0 -394
  92. package/lib/cjs/types.js +0 -4
  93. package/lib/cjs/types.js.map +0 -1
  94. package/lib/es6/Body.js +0 -469
  95. package/lib/es6/Body.js.map +0 -1
  96. package/lib/es6/DataTable.js +0 -614
  97. package/lib/es6/DataTable.js.map +0 -1
  98. package/lib/es6/Head.js +0 -391
  99. package/lib/es6/Head.js.map +0 -1
  100. package/lib/es6/style/data-table.shadow.css +0 -394
  101. package/lib/es6/types.js +0 -2
  102. package/lib/es6/types.js.map +0 -1
  103. package/lib/esm/Head.mjs +0 -369
  104. package/lib/types/Body.d.ts +0 -61
  105. package/lib/types/DataTable.d.ts +0 -205
  106. package/lib/types/Head.d.ts +0 -45
  107. package/lib/types/types.d.ts +0 -73
@@ -1,5 +1,6 @@
1
- import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
4
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
5
  import _createClass from "@babel/runtime/helpers/createClass";
5
6
  import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
@@ -15,30 +16,38 @@ import { Box, ScrollArea } from '@semcore/base-components';
15
16
  import { Head } from '../Head/Head';
16
17
  import { Body } from '../Body/Body';
17
18
  /*__reshadow-styles__:"./dataTable.shadow.css"*/
18
- var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SDataTable_1yoby_gg_{display:grid;position:relative;align-items:start;min-width:-moz-fit-content;min-width:fit-content}.___SDataTable_1yoby_gg_.__gridTemplateColumns_1yoby_gg_{grid-template-columns:var(--gridTemplateColumns_1yoby)}.___SDataTable_1yoby_gg_.__gridTemplateAreas_1yoby_gg_{grid-template-areas:var(--gridTemplateAreas_1yoby)}" /*__inner_css_end__*/, "1yoby_gg_") /*__reshadow_css_end__*/, {
19
- "__SDataTable": "___SDataTable_1yoby_gg_",
20
- "_gridTemplateColumns": "__gridTemplateColumns_1yoby_gg_",
21
- "--gridTemplateColumns": "--gridTemplateColumns_1yoby",
22
- "_gridTemplateAreas": "__gridTemplateAreas_1yoby_gg_",
23
- "--gridTemplateAreas": "--gridTemplateAreas_1yoby"
19
+ var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SDataTable_1rvtk_gg_{display:grid;position:relative;align-items:start;min-width:-moz-fit-content;min-width:fit-content}.___SDataTable_1rvtk_gg_.__gridTemplateColumns_1rvtk_gg_{grid-template-columns:var(--gridTemplateColumns_1rvtk)}.___SDataTable_1rvtk_gg_.__gridTemplateAreas_1rvtk_gg_{grid-template-areas:var(--gridTemplateAreas_1rvtk)}.___SDataTable_1rvtk_gg_.__gridTemplateRows_1rvtk_gg_{grid-template-rows:var(--gridTemplateRows_1rvtk)}" /*__inner_css_end__*/, "1rvtk_gg_") /*__reshadow_css_end__*/, {
20
+ "__SDataTable": "___SDataTable_1rvtk_gg_",
21
+ "_gridTemplateColumns": "__gridTemplateColumns_1rvtk_gg_",
22
+ "--gridTemplateColumns": "--gridTemplateColumns_1rvtk",
23
+ "_gridTemplateAreas": "__gridTemplateAreas_1rvtk_gg_",
24
+ "--gridTemplateAreas": "--gridTemplateAreas_1rvtk",
25
+ "_gridTemplateRows": "__gridTemplateRows_1rvtk_gg_",
26
+ "--gridTemplateRows": "--gridTemplateRows_1rvtk"
24
27
  });
25
28
  import { isFocusInside, hasFocusableIn } from '@semcore/core/lib/utils/use/useFocusLock';
26
- import syncScroll from '@semcore/core/lib/utils/syncScroll';
27
29
  import { getScrollOffsetValue } from '../../utils';
28
30
  import findComponent from '@semcore/core/lib/utils/findComponent';
29
31
  import { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';
30
32
  import i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';
31
33
  import uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';
32
- import { MergedColumnsCell, MergedRowsCell } from '../Body/MergedCells';
33
34
  import { forkRef } from '@semcore/core/lib/utils/ref';
34
35
  /*__reshadow-styles__:"../../style/scroll-shadows.shadow.css"*/
35
- var scrollStyles = ( /*__reshadow_css_start__*/_sstyled2.insert( /*__inner_css_start__*/".___SScrollArea_1765z_gg_{width:-moz-fit-content;width:fit-content}.___SShadowHorizontal_1765z_gg_:after,.___SShadowHorizontal_1765z_gg_:before,.___SShadowVertical_1765z_gg_:after,.___SShadowVertical_1765z_gg_:before{z-index:1}" /*__inner_css_end__*/, "1765z_gg_") /*__reshadow_css_end__*/, {
36
- "__SScrollArea": "___SScrollArea_1765z_gg_",
37
- "__SShadowHorizontal": "___SShadowHorizontal_1765z_gg_",
38
- "__SShadowVertical": "___SShadowVertical_1765z_gg_"
36
+ var scrollStyles = ( /*__reshadow_css_start__*/_sstyled2.insert( /*__inner_css_start__*/".___SScrollArea_dn57w_gg_{width:-moz-fit-content;width:fit-content}.___SScrollArea_dn57w_gg_ .___SContainer_dn57w_gg_{overflow:visible;overflow:initial}.___SScrollArea_dn57w_gg_ .___SContainer_dn57w_gg_._scrollDirection_both_dn57w_gg_{overflow:auto}.___SScrollArea_dn57w_gg_ .___SContainer_dn57w_gg_._scrollDirection_horizontal_dn57w_gg_{overflow-x:auto;overflow-y:initial}.___SScrollArea_dn57w_gg_ .___SContainer_dn57w_gg_._scrollDirection_vertical_dn57w_gg_{overflow-x:initial;overflow-y:auto}.___SScrollArea_dn57w_gg_ .___SShadowVertical_dn57w_gg_:before{display:none}.___SScrollArea_dn57w_gg_ .___SShadowHorizontal_dn57w_gg_:after,.___SScrollArea_dn57w_gg_ .___SShadowHorizontal_dn57w_gg_:before,.___SScrollArea_dn57w_gg_ .___SShadowVertical_dn57w_gg_:after{z-index:2}" /*__inner_css_end__*/, "dn57w_gg_") /*__reshadow_css_end__*/, {
37
+ "__SScrollArea": "___SScrollArea_dn57w_gg_",
38
+ "__SContainer": "___SContainer_dn57w_gg_",
39
+ "_scrollDirection_both": "_scrollDirection_both_dn57w_gg_",
40
+ "_scrollDirection_horizontal": "_scrollDirection_horizontal_dn57w_gg_",
41
+ "_scrollDirection_vertical": "_scrollDirection_vertical_dn57w_gg_",
42
+ "__SShadowVertical": "___SShadowVertical_dn57w_gg_",
43
+ "__SShadowHorizontal": "___SShadowHorizontal_dn57w_gg_"
39
44
  });
45
+ import { hasParent } from '@semcore/core/lib/utils/hasParent';
46
+ import trottle from '@semcore/core/lib/utils/rafTrottle';
40
47
  export var ACCORDION = Symbol('accordion');
41
48
  export var ROW_GROUP = Symbol('ROW_GROUP');
49
+ export var UNIQ_ROW_KEY = Symbol('UNIQ_ROW_KEY');
50
+ var SCROLL_BAR_HEIGHT = 12;
42
51
  var DataTableRoot = /*#__PURE__*/function (_Component) {
43
52
  _inherits(DataTableRoot, _Component);
44
53
  var _super = _createSuper(DataTableRoot);
@@ -46,15 +55,19 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
46
55
  var _this;
47
56
  _classCallCheck(this, DataTableRoot);
48
57
  _this = _super.call(this, props);
49
- _defineProperty(_assertThisInitialized(_this), "columnsSplitter", '/');
50
58
  _defineProperty(_assertThisInitialized(_this), "columns", []);
59
+ _defineProperty(_assertThisInitialized(_this), "treeColumns", []);
60
+ _defineProperty(_assertThisInitialized(_this), "hasGroups", false);
51
61
  _defineProperty(_assertThisInitialized(_this), "focusedCell", [-1, -1]);
52
62
  _defineProperty(_assertThisInitialized(_this), "tableContainerRef", /*#__PURE__*/React.createRef());
53
63
  _defineProperty(_assertThisInitialized(_this), "tableRef", /*#__PURE__*/React.createRef());
54
64
  _defineProperty(_assertThisInitialized(_this), "headerRef", /*#__PURE__*/React.createRef());
55
- _defineProperty(_assertThisInitialized(_this), "scrollBodyRef", void 0);
56
- _defineProperty(_assertThisInitialized(_this), "scrollHeadRef", void 0);
65
+ _defineProperty(_assertThisInitialized(_this), "spinnerRef", /*#__PURE__*/React.createRef());
57
66
  _defineProperty(_assertThisInitialized(_this), "gridAreaGroupMap", new Map());
67
+ _defineProperty(_assertThisInitialized(_this), "state", {
68
+ scrollTop: 0,
69
+ scrollDirection: 'down'
70
+ });
58
71
  _defineProperty(_assertThisInitialized(_this), "getRow", function (index) {
59
72
  var _this$tableRef$curren;
60
73
  return (_this$tableRef$curren = _this.tableRef.current) === null || _this$tableRef$curren === void 0 ? void 0 : _this$tableRef$curren.querySelector("[aria-rowindex=\"".concat(index + 1, "\"]"));
@@ -66,6 +79,16 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
66
79
  });
67
80
  return hasFocusable;
68
81
  });
82
+ _defineProperty(_assertThisInitialized(_this), "onExpandRow", function (expandedRowIndex) {
83
+ var expandedRows = _this.asProps.expandedRows;
84
+ if (expandedRows !== null && expandedRows !== void 0 && expandedRows.includes(expandedRowIndex)) {
85
+ _this.handlers.expandedRows(expandedRows.filter(function (row) {
86
+ return row !== expandedRowIndex;
87
+ }));
88
+ } else {
89
+ _this.handlers.expandedRows([].concat(_toConsumableArray(expandedRows), [expandedRowIndex]));
90
+ }
91
+ });
69
92
  _defineProperty(_assertThisInitialized(_this), "changeFocusCell", function (rowIndex, colIndex, direction) {
70
93
  var _this$tableRef$curren2, _this$tableRef$curren3;
71
94
  var hasFocusable = _this.hasFocusableInHeader();
@@ -109,21 +132,24 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
109
132
  var rowI = rowIndex;
110
133
  var colI = colIndex;
111
134
  if (direction === 'left' || direction === 'right') {
135
+ var _currentCell$parentEl;
112
136
  // left/right
113
- if (currentCell.dataset.groupedBy === 'columns') {
137
+ if (currentCell.dataset.groupedBy === 'colgroup' || Number((_currentCell$parentEl = currentCell.parentElement) === null || _currentCell$parentEl === void 0 ? void 0 : _currentCell$parentEl.getAttribute('aria-rowindex')) === 2) {
114
138
  colI = direction === 'left' ? colI - 1 : colI + 1;
115
139
  } else {
116
140
  rowI = rowI - 1;
117
141
  }
118
142
  } else if (direction === 'up' || direction === 'down') {
119
143
  // top/bottom
120
- if (currentCell.dataset.groupedBy === 'rows') {
144
+ if (currentCell.dataset.groupedBy === 'rowgroup' || Number(currentCell.getAttribute('aria-colindex')) === 1) {
121
145
  rowI = direction === 'up' ? rowI - 1 : rowI + 1;
122
146
  } else {
123
147
  colI = colI - 1;
124
148
  }
125
149
  }
126
150
  _this.changeFocusCell(rowI, colI, direction);
151
+ } else if (row === null && _this.focusedCell[0] === 0 && direction === 'down' && _this.asProps.virtualScroll) {
152
+ _this.changeFocusCell(rowIndex + 1, colIndex, direction);
127
153
  }
128
154
  });
129
155
  _defineProperty(_assertThisInitialized(_this), "handleKeyDown", function (e) {
@@ -167,8 +193,20 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
167
193
  _this.focusedCell = [1, 0];
168
194
  }
169
195
  });
196
+ _defineProperty(_assertThisInitialized(_this), "handleScroll", trottle(function (e) {
197
+ var scrollTop = e.target.scrollTop;
198
+ var scrollDirection = scrollTop > _this.state.scrollTop ? 'down' : 'up';
199
+ _this.setState({
200
+ scrollTop: scrollTop,
201
+ scrollDirection: scrollDirection
202
+ });
203
+ }));
170
204
  _defineProperty(_assertThisInitialized(_this), "handleFocus", function (e) {
171
- if ((!e.relatedTarget || !isFocusInside(e.currentTarget, e.relatedTarget)) && lastInteraction.isKeyboard()) {
205
+ if (_this.asProps.loading) {
206
+ var _this$spinnerRef$curr;
207
+ (_this$spinnerRef$curr = _this.spinnerRef.current) === null || _this$spinnerRef$curr === void 0 ? void 0 : _this$spinnerRef$curr.focus();
208
+ e.currentTarget.setAttribute('tabIndex', '-1');
209
+ } else if ((!e.relatedTarget || !isFocusInside(e.currentTarget, e.relatedTarget)) && lastInteraction.isKeyboard()) {
172
210
  var _row;
173
211
  if (_this.focusedCell[0] === -1 && _this.focusedCell[1] === -1) {
174
212
  _this.initFocusableCell();
@@ -179,9 +217,28 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
179
217
  _this.initFocusableCell();
180
218
  row = _this.getRow(_this.focusedCell[0]);
181
219
  }
220
+ if (!row && _this.asProps.virtualScroll) {
221
+ var _this$tableRef$curren4;
222
+ var firstAvailableCell = (_this$tableRef$curren4 = _this.tableRef.current) === null || _this$tableRef$curren4 === void 0 ? void 0 : _this$tableRef$curren4.querySelector("[role=\"gridcell\"]");
223
+ var firstAvailableRow = firstAvailableCell === null || firstAvailableCell === void 0 ? void 0 : firstAvailableCell.parentElement;
224
+ if (firstAvailableCell && firstAvailableRow) {
225
+ var _Number, _Number2;
226
+ var colIndex = ((_Number = Number(firstAvailableCell.getAttribute('aria-colindex'))) !== null && _Number !== void 0 ? _Number : 1) - 1;
227
+ var rowIndex = ((_Number2 = Number(firstAvailableRow.getAttribute('aria-rowindex'))) !== null && _Number2 !== void 0 ? _Number2 : 1) - 1;
228
+ _this.focusedCell[0] = rowIndex;
229
+ _this.focusedCell[1] = colIndex;
230
+ row = firstAvailableRow;
231
+ }
232
+ }
182
233
  var cell = (_row = row) === null || _row === void 0 ? void 0 : _row.querySelectorAll('[role=gridcell], [role=columnheader]').item(_this.focusedCell[1]);
183
234
  cell === null || cell === void 0 ? void 0 : cell.removeAttribute('inert');
184
- cell instanceof HTMLElement && cell.focus();
235
+ if (cell instanceof HTMLElement) {
236
+ if (hasParent(e.target, cell)) {
237
+ e.target.focus();
238
+ } else {
239
+ cell.focus();
240
+ }
241
+ }
185
242
  e.currentTarget.setAttribute('tabIndex', '-1');
186
243
  }
187
244
  });
@@ -196,14 +253,23 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
196
253
  _defineProperty(_assertThisInitialized(_this), "handleMouseMove", function () {
197
254
  _this.setInert(false);
198
255
  });
199
- var createRef = syncScroll();
200
- // first create body ref for master scroll
201
- _this.scrollBodyRef = createRef('body');
202
- _this.scrollHeadRef = createRef('head');
203
- _this.columns = _this.calculateColumns();
256
+ if (props.children) {
257
+ _this.columns = _this.calculateColumns();
258
+ } else {
259
+ var cols = _this.calculateColumnsFromConfig();
260
+ _this.columns = cols[0];
261
+ _this.treeColumns = cols[1];
262
+ }
204
263
  return _this;
205
264
  }
206
265
  _createClass(DataTableRoot, [{
266
+ key: "uncontrolledProps",
267
+ value: function uncontrolledProps() {
268
+ return {
269
+ expandedRows: []
270
+ };
271
+ }
272
+ }, {
207
273
  key: "componentDidMount",
208
274
  value: function componentDidMount() {
209
275
  this.forceUpdate();
@@ -211,16 +277,40 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
211
277
  }, {
212
278
  key: "totalRows",
213
279
  get: function get() {
214
- var totalRows = this.asProps.totalRows;
215
- return totalRows !== null && totalRows !== void 0 ? totalRows : this.calculateRows().length;
280
+ var _this$asProps = this.asProps,
281
+ totalRows = _this$asProps.totalRows,
282
+ expandedRows = _this$asProps.expandedRows,
283
+ data = _this$asProps.data;
284
+ var expandedRowsCount = expandedRows === null || expandedRows === void 0 ? void 0 : expandedRows.reduce(function (acc, rowIndex) {
285
+ var dtRow = data[rowIndex];
286
+ var expandedRows = dtRow[ACCORDION];
287
+ if (Array.isArray(expandedRows)) {
288
+ acc = acc + expandedRows.length;
289
+ } else {
290
+ acc = acc + 1;
291
+ }
292
+ return acc;
293
+ }, 0);
294
+ if (totalRows !== undefined) {
295
+ return totalRows + expandedRowsCount;
296
+ }
297
+ var rows = data.reduce(function (acc, item) {
298
+ acc = acc + 1;
299
+ if (item[ROW_GROUP]) {
300
+ acc = acc + item[ROW_GROUP].length;
301
+ }
302
+ return acc;
303
+ }, 0);
304
+ return rows + expandedRowsCount;
216
305
  }
217
306
  }, {
218
307
  key: "gridSettings",
219
308
  get: function get() {
220
- var gridTemplateColumns = this.columns.map(function (c) {
309
+ var columns = this.columns;
310
+ var gridTemplateColumns = columns.map(function (c) {
221
311
  return c.gridColumnWidth;
222
312
  });
223
- var gridTemplateAreas = this.columns.map(function (c) {
313
+ var gridTemplateAreas = columns.map(function (c) {
224
314
  return c.name;
225
315
  });
226
316
  return {
@@ -231,18 +321,20 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
231
321
  }, {
232
322
  key: "getHeadProps",
233
323
  value: function getHeadProps() {
234
- var _this$asProps = this.asProps,
235
- use = _this$asProps.use,
236
- compact = _this$asProps.compact,
237
- sort = _this$asProps.sort,
238
- onSortChange = _this$asProps.onSortChange,
239
- getI18nText = _this$asProps.getI18nText,
240
- uid = _this$asProps.uid;
324
+ var _this$asProps2 = this.asProps,
325
+ use = _this$asProps2.use,
326
+ compact = _this$asProps2.compact,
327
+ sort = _this$asProps2.sort,
328
+ onSortChange = _this$asProps2.onSortChange,
329
+ getI18nText = _this$asProps2.getI18nText,
330
+ uid = _this$asProps2.uid,
331
+ headerProps = _this$asProps2.headerProps;
241
332
  var _this$gridSettings = this.gridSettings,
242
333
  gridTemplateColumns = _this$gridSettings.gridTemplateColumns,
243
334
  gridTemplateAreas = _this$gridSettings.gridTemplateAreas;
244
- return {
335
+ return _objectSpread({
245
336
  columns: this.columns,
337
+ treeColumns: this.treeColumns,
246
338
  use: use,
247
339
  tableRef: this.tableRef,
248
340
  compact: Boolean(compact),
@@ -254,50 +346,52 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
254
346
  gridAreaGroupMap: this.gridAreaGroupMap,
255
347
  gridTemplateColumns: gridTemplateColumns,
256
348
  gridTemplateAreas: gridTemplateAreas
257
- };
349
+ }, headerProps);
258
350
  }
259
351
  }, {
260
352
  key: "getBodyProps",
261
353
  value: function getBodyProps() {
262
- var _header$children;
263
- var _this$asProps2 = this.asProps,
264
- use = _this$asProps2.use,
265
- compact = _this$asProps2.compact,
266
- loading = _this$asProps2.loading,
267
- getI18nText = _this$asProps2.getI18nText;
268
- var rows = this.calculateRows();
354
+ var _this$asProps3 = this.asProps,
355
+ use = _this$asProps3.use,
356
+ compact = _this$asProps3.compact,
357
+ loading = _this$asProps3.loading,
358
+ getI18nText = _this$asProps3.getI18nText,
359
+ expandedRows = _this$asProps3.expandedRows,
360
+ virtualScroll = _this$asProps3.virtualScroll,
361
+ data = _this$asProps3.data,
362
+ uid = _this$asProps3.uid,
363
+ renderCell = _this$asProps3.renderCell;
269
364
  var _this$gridSettings2 = this.gridSettings,
270
365
  gridTemplateColumns = _this$gridSettings2.gridTemplateColumns,
271
366
  gridTemplateAreas = _this$gridSettings2.gridTemplateAreas;
272
- var header = this.headerRef.current;
273
- var headerHeight = Array.from((_header$children = header === null || header === void 0 ? void 0 : header.children) !== null && _header$children !== void 0 ? _header$children : []).reduce(function (maxHeight, col) {
274
- var rect = col.getBoundingClientRect();
275
- if (rect.height > maxHeight) {
276
- maxHeight = rect.height;
277
- }
278
- return maxHeight;
279
- }, 0);
280
367
  return {
281
368
  columns: this.columns,
282
- rows: rows,
369
+ data: data,
283
370
  use: use,
284
- scrollRef: this.scrollBodyRef,
285
- headerRows: this.columns.some(function (column) {
286
- return Boolean(column.parent);
287
- }) ? 2 : 1,
288
371
  compact: Boolean(compact),
289
372
  gridTemplateColumns: gridTemplateColumns,
290
373
  gridTemplateAreas: gridTemplateAreas,
291
374
  loading: loading,
292
- headerHeight: headerHeight,
293
- getI18nText: getI18nText
375
+ headerHeight: this.getTopScrollOffset(),
376
+ getI18nText: getI18nText,
377
+ expandedRows: expandedRows,
378
+ onExpandRow: this.onExpandRow,
379
+ spinnerRef: this.spinnerRef,
380
+ scrollTop: this.state.scrollTop,
381
+ scrollDirection: this.state.scrollDirection,
382
+ tableContainerRef: this.tableContainerRef,
383
+ tableRef: this.tableRef,
384
+ virtualScroll: virtualScroll,
385
+ hasGroups: this.hasGroups,
386
+ uid: uid,
387
+ renderCell: renderCell
294
388
  };
295
389
  }
296
390
  }, {
297
391
  key: "setInert",
298
392
  value: function setInert(value) {
299
- var _this$tableRef$curren4;
300
- var cells = (_this$tableRef$curren4 = this.tableRef.current) === null || _this$tableRef$curren4 === void 0 ? void 0 : _this$tableRef$curren4.querySelectorAll('[role=gridcell], [role=columnheader]');
393
+ var _this$tableRef$curren5;
394
+ var cells = (_this$tableRef$curren5 = this.tableRef.current) === null || _this$tableRef$curren5 === void 0 ? void 0 : _this$tableRef$curren5.querySelectorAll('[role=gridcell], [role=columnheader]');
301
395
  cells === null || cells === void 0 ? void 0 : cells.forEach(function (cell) {
302
396
  if (value === true) {
303
397
  cell.setAttribute('inert', '');
@@ -310,17 +404,22 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
310
404
  key: "render",
311
405
  value: function render() {
312
406
  var _ref = this.asProps,
313
- _ref2;
407
+ _ref2,
408
+ _ref3,
409
+ _ref4;
314
410
  var SDataTable = Box;
315
- var _this$asProps3 = this.asProps,
316
- Children = _this$asProps3.Children,
317
- styles = _this$asProps3.styles,
318
- w = _this$asProps3.w,
319
- wMax = _this$asProps3.wMax,
320
- wMin = _this$asProps3.wMin,
321
- h = _this$asProps3.h,
322
- hMax = _this$asProps3.hMax,
323
- hMin = _this$asProps3.hMin;
411
+ var _this$asProps4 = this.asProps,
412
+ Children = _this$asProps4.Children,
413
+ styles = _this$asProps4.styles,
414
+ w = _this$asProps4.w,
415
+ wMax = _this$asProps4.wMax,
416
+ wMin = _this$asProps4.wMin,
417
+ h = _this$asProps4.h,
418
+ hMax = _this$asProps4.hMax,
419
+ hMin = _this$asProps4.hMin,
420
+ virtualScroll = _this$asProps4.virtualScroll,
421
+ children = _this$asProps4.children,
422
+ headerProps = _this$asProps4.headerProps;
324
423
  var _getScrollOffsetValue = getScrollOffsetValue(this.columns),
325
424
  _getScrollOffsetValue2 = _slicedToArray(_getScrollOffsetValue, 2),
326
425
  offsetLeftSum = _getScrollOffsetValue2[0],
@@ -329,13 +428,29 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
329
428
  gridTemplateColumns = _this$gridSettings3.gridTemplateColumns,
330
429
  gridTemplateAreas = _this$gridSettings3.gridTemplateAreas;
331
430
  var Head = findComponent(Children, ['DataTable.Head']);
332
- var Body = findComponent(Children, ['DataTable.Body']);
431
+ var headerPropsToCheck = headerProps !== null && headerProps !== void 0 ? headerProps : Head === null || Head === void 0 ? void 0 : Head.props;
432
+ var topOffset = headerPropsToCheck !== null && headerPropsToCheck !== void 0 && headerPropsToCheck.sticky || headerPropsToCheck !== null && headerPropsToCheck !== void 0 && headerPropsToCheck.withScrollBar ? this.getTopScrollOffset() : undefined;
333
433
  var width = w !== null && w !== void 0 ? w : this.columns.some(function (c) {
334
434
  return c.gridColumnWidth === 'auto' || c.gridColumnWidth === '1fr';
335
435
  }) ? '100%' : undefined;
436
+ var gridTemplateRows = undefined;
437
+ if (virtualScroll && typeof virtualScroll !== 'boolean' && 'rowHeight' in virtualScroll) {
438
+ gridTemplateRows = "auto auto repeat(".concat(this.totalRows, ", minmax(").concat(virtualScroll.rowHeight, "px, auto)");
439
+ }
440
+ var scrollDirection = undefined;
441
+ var hasWidthSettings = Boolean((_ref3 = w !== null && w !== void 0 ? w : wMax) !== null && _ref3 !== void 0 ? _ref3 : wMin);
442
+ var hasHeightSettings = Boolean((_ref4 = h !== null && h !== void 0 ? h : hMax) !== null && _ref4 !== void 0 ? _ref4 : hMin);
443
+ if (hasWidthSettings && !hasHeightSettings) {
444
+ scrollDirection = 'horizontal';
445
+ } else if (hasHeightSettings && !hasWidthSettings) {
446
+ scrollDirection = 'vertical';
447
+ } else if (hasWidthSettings && hasHeightSettings) {
448
+ scrollDirection = 'both';
449
+ }
336
450
  return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(ScrollArea, _ref2.cn("ScrollArea", {
337
451
  "leftOffset": offsetLeftSum,
338
452
  "rightOffset": offsetRightSum,
453
+ "topOffset": topOffset,
339
454
  "w": width,
340
455
  "wMax": wMax,
341
456
  "wMin": wMin,
@@ -344,9 +459,14 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
344
459
  "hMin": hMin,
345
460
  "shadow": true,
346
461
  "container": this.tableContainerRef,
347
- "styles": scrollStyles
462
+ "styles": scrollStyles,
463
+ "onScroll": this.handleScroll,
464
+ "disableAutofocusToContent": true
348
465
  }), /*#__PURE__*/React.createElement(ScrollArea.Container, {
349
466
  tabIndex: -1
467
+ // @ts-ignore
468
+ ,
469
+ scrollDirection: scrollDirection
350
470
  }, /*#__PURE__*/React.createElement(SDataTable, _ref2.cn("SDataTable", _objectSpread({}, _assignProps({
351
471
  "ref": forkRef(this.tableRef, this.tableContainerRef),
352
472
  "role": 'grid',
@@ -359,6 +479,7 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
359
479
  "aria-colcount": this.columns.length,
360
480
  "gridTemplateColumns": gridTemplateColumns.join(' '),
361
481
  "gridTemplateAreas": gridTemplateAreas.join(' '),
482
+ "gridTemplateRows": gridTemplateRows,
362
483
  "w": '100%',
363
484
  "use:data": undefined,
364
485
  "use:w": undefined,
@@ -367,10 +488,16 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
367
488
  "use:h": undefined,
368
489
  "use:hMax": undefined,
369
490
  "use:hMin": undefined
370
- }, _ref))), Body, Head)), /*#__PURE__*/React.createElement(ScrollArea.Bar, {
371
- orientation: "horizontal"
491
+ }, _ref))), children ? /*#__PURE__*/React.createElement(Children, _ref2.cn("Children", {})) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DataTable.Head, null), /*#__PURE__*/React.createElement(DataTable.Body, null)))), (headerPropsToCheck === null || headerPropsToCheck === void 0 ? void 0 : headerPropsToCheck.withScrollBar) && topOffset && /*#__PURE__*/React.createElement(ScrollArea.Bar, {
492
+ orientation: "horizontal",
493
+ top: topOffset - SCROLL_BAR_HEIGHT,
494
+ zIndex: 3
495
+ }), /*#__PURE__*/React.createElement(ScrollArea.Bar, {
496
+ orientation: "horizontal",
497
+ zIndex: 2
372
498
  }), /*#__PURE__*/React.createElement(ScrollArea.Bar, {
373
- orientation: "vertical"
499
+ orientation: "vertical",
500
+ zIndex: 2
374
501
  }));
375
502
  }
376
503
  }, {
@@ -381,14 +508,14 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
381
508
  children = _this$props.children,
382
509
  data = _this$props.data;
383
510
  var HeadComponent = findComponent(children, ['Head']);
384
- var hasGroup = findComponent(HeadComponent.props.children, ['Head.Group']) !== undefined;
511
+ this.hasGroups = findComponent(HeadComponent.props.children, ['Head.Group']) !== undefined;
385
512
  var columnIndex = 0;
386
513
  var groupIndex = 0;
387
514
  var gridColumnIndex = 1;
388
515
  var calculateGridTemplateColumn = this.calculateGridTemplateColumn.bind(this);
389
516
  var columns = [];
390
517
  var makeColumn = function makeColumn(columnElement, parent, isFirst, isLast) {
391
- var _columnElement$props$, _ref3, _columnElement$props$2;
518
+ var _columnElement$props$, _ref5, _columnElement$props$2;
392
519
  var leftBordersFromParent = isFirst && ((parent === null || parent === void 0 ? void 0 : parent.props.borders) === 'both' || (parent === null || parent === void 0 ? void 0 : parent.props.borders) === 'left') ? 'left' : undefined;
393
520
  var rightBordersFromParent = isLast && ((parent === null || parent === void 0 ? void 0 : parent.props.borders) === 'both' || (parent === null || parent === void 0 ? void 0 : parent.props.borders) === 'right') ? 'right' : undefined;
394
521
  var column = {
@@ -407,34 +534,30 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
407
534
  fixed: (_columnElement$props$ = columnElement.props.fixed) !== null && _columnElement$props$ !== void 0 ? _columnElement$props$ : parent === null || parent === void 0 ? void 0 : parent.props.fixed,
408
535
  calculatedWidth: 0,
409
536
  calculatedHeight: 0,
410
- borders: (_ref3 = (_columnElement$props$2 = columnElement.props.borders) !== null && _columnElement$props$2 !== void 0 ? _columnElement$props$2 : leftBordersFromParent) !== null && _ref3 !== void 0 ? _ref3 : rightBordersFromParent,
537
+ borders: (_ref5 = (_columnElement$props$2 = columnElement.props.borders) !== null && _columnElement$props$2 !== void 0 ? _columnElement$props$2 : leftBordersFromParent) !== null && _ref5 !== void 0 ? _ref5 : rightBordersFromParent,
411
538
  parent: parent,
412
539
  flexWrap: columnElement.props.flexWrap,
413
540
  alignItems: columnElement.props.alignItems,
414
541
  alignContent: columnElement.props.alignContent,
415
542
  justifyContent: columnElement.props.justifyContent
416
543
  };
417
-
418
- // this.gridAreaColumnMap.set(
419
- // columnIndex,
420
- // `1 / ${gridColumnIndex} / ${hasGroup ? '3' : '2'} / ${gridColumnIndex + 1}`,
421
- // );
422
- // columnIndex++;
423
- // gridColumnIndex++;
424
-
425
544
  return column;
426
- // columns.push(column);
427
545
  };
428
-
546
+ var childIsColumn = function childIsColumn(child) {
547
+ return child.type === Head.Column;
548
+ };
549
+ var childIsGroup = function childIsGroup(child) {
550
+ return child.type === Head.Group;
551
+ };
429
552
  React.Children.forEach(HeadComponent.props.children, function (child, i) {
430
553
  if (! /*#__PURE__*/React.isValidElement(child)) return;
431
- if (child.type === Head.Column) {
554
+ if (childIsColumn(child)) {
432
555
  var col = makeColumn(child);
433
- col.gridArea = "1 / ".concat(gridColumnIndex, " / ").concat(hasGroup ? '3' : '2', " / ").concat(gridColumnIndex + 1);
556
+ col.gridArea = "1 / ".concat(gridColumnIndex, " / ").concat(_this2.hasGroups ? '3' : '2', " / ").concat(gridColumnIndex + 1);
434
557
  columnIndex++;
435
558
  gridColumnIndex++;
436
559
  columns.push(col);
437
- } else if (child.type === Head.Group) {
560
+ } else if (childIsGroup(child)) {
438
561
  var Group = child;
439
562
  var childCount = React.Children.count(child.props.children);
440
563
  var initGridColumn = gridColumnIndex;
@@ -462,82 +585,117 @@ var DataTableRoot = /*#__PURE__*/function (_Component) {
462
585
  }
463
586
  });
464
587
  return columns.filter(Boolean);
465
-
466
- // return Columns.map((c) => {
467
- // const column = {
468
- // name: c.props.name,
469
- // ref: (node: HTMLElement | null) => {
470
- // if (node) {
471
- // const calculatedWidth = node.getBoundingClientRect().width;
472
- // column.calculatedWidth = calculatedWidth;
473
- // }
474
- //
475
- // return { current: node };
476
- // },
477
- // gridColumnWidth: calculateGridTemplateColumn(c),
478
- // fixed: c.props.fixed,
479
- // calculatedWidth: 0,
480
- // };
481
- //
482
- // return column;
483
- // });
484
-
485
- // return columns;
486
588
  }
487
589
  }, {
488
- key: "calculateRows",
489
- value: function calculateRows() {
590
+ key: "calculateColumnsFromConfig",
591
+ value: function calculateColumnsFromConfig() {
490
592
  var _this3 = this;
491
- var data = this.asProps.data;
492
- var rows = [];
493
- var rowIndex = 0;
494
- var addToRows = function addToRows(row) {
495
- var dtRow = Object.entries(row).reduce(function (acc, _ref4) {
496
- var _ref5 = _slicedToArray(_ref4, 2),
497
- key = _ref5[0],
498
- value = _ref5[1];
499
- var columnsToRow = key.split(_this3.columnsSplitter);
500
- if (columnsToRow.length === 1) {
501
- acc[key] = value;
502
- } else {
503
- acc[columnsToRow[0]] = new MergedColumnsCell(value, columnsToRow.length);
504
- }
505
- if (row[ACCORDION]) {
506
- acc[ACCORDION] = row[ACCORDION];
507
- }
508
- return acc;
509
- }, {});
510
- rows.push(dtRow);
511
- rowIndex++;
593
+ var _this$props2 = this.props,
594
+ columns = _this$props2.columns,
595
+ data = _this$props2.data;
596
+ this.hasGroups = columns.some(function (column) {
597
+ return 'columns' in column;
598
+ });
599
+ var columnIndex = 0;
600
+ var groupIndex = 0;
601
+ var gridColumnIndex = 1;
602
+ var calculateGridTemplateColumn = this.calculateGridTemplateColumn.bind(this);
603
+ var calculatedColumns = [];
604
+ var treeColumns = [];
605
+ var makeColumn = function makeColumn(columnElement, parent, isFirst, isLast) {
606
+ var _columnElement$fixed, _ref6, _columnElement$border;
607
+ var leftBordersFromParent = isFirst && ((parent === null || parent === void 0 ? void 0 : parent.borders) === 'both' || (parent === null || parent === void 0 ? void 0 : parent.borders) === 'left') ? 'left' : undefined;
608
+ var rightBordersFromParent = isLast && ((parent === null || parent === void 0 ? void 0 : parent.borders) === 'both' || (parent === null || parent === void 0 ? void 0 : parent.borders) === 'right') ? 'right' : undefined;
609
+ var column = _objectSpread({
610
+ name: childIsColumn(columnElement) ? columnElement.name : '',
611
+ // @ts-ignore
612
+ ref: function ref(node) {
613
+ if (node) {
614
+ var calculatedWidth = node.getBoundingClientRect().width;
615
+ var calculatedHeight = node.getBoundingClientRect().height;
616
+ column.calculatedWidth = calculatedWidth;
617
+ column.calculatedHeight = calculatedHeight;
618
+ }
619
+ if (this !== null && this !== void 0 && this.ref) {
620
+ this.ref.current = node;
621
+ }
622
+ },
623
+ gridColumnWidth: childIsColumn(columnElement) ? calculateGridTemplateColumn(columnElement) : '',
624
+ fixed: (_columnElement$fixed = columnElement.fixed) !== null && _columnElement$fixed !== void 0 ? _columnElement$fixed : parent === null || parent === void 0 ? void 0 : parent.fixed,
625
+ calculatedWidth: 0,
626
+ calculatedHeight: 0,
627
+ borders: (_ref6 = (_columnElement$border = columnElement.borders) !== null && _columnElement$border !== void 0 ? _columnElement$border : leftBordersFromParent) !== null && _ref6 !== void 0 ? _ref6 : rightBordersFromParent,
628
+ parent: parent
629
+ }, columnElement);
630
+ return column;
631
+ };
632
+ var childIsColumn = function childIsColumn(child) {
633
+ return !('columns' in child);
512
634
  };
513
- data.forEach(function (row, rowIndex) {
514
- var groupedRows = row[ROW_GROUP];
515
- if (groupedRows) {
516
- groupedRows.forEach(function (childRow, index) {
517
- if (index === 0) {
518
- var rowData = _objectSpread(_objectSpread({}, childRow), Object.entries(row).reduce(function (acc, _ref6) {
519
- var _ref7 = _slicedToArray(_ref6, 2),
520
- key = _ref7[0],
521
- value = _ref7[1];
522
- acc[key] = new MergedRowsCell(value, groupedRows.length);
523
- return acc;
524
- }, {}));
525
- addToRows(rowData);
635
+ var childIsGroup = function childIsGroup(child) {
636
+ return 'columns' in child;
637
+ };
638
+ columns.forEach(function (child, i) {
639
+ if (childIsColumn(child)) {
640
+ var col = makeColumn(child);
641
+ col.gridArea = "1 / ".concat(gridColumnIndex, " / ").concat(_this3.hasGroups ? '3' : '2', " / ").concat(gridColumnIndex + 1);
642
+ columnIndex++;
643
+ gridColumnIndex++;
644
+ calculatedColumns.push(col);
645
+ treeColumns.push(col);
646
+ } else if (childIsGroup(child)) {
647
+ var Group = makeColumn(child);
648
+ var childCount = child.columns.length;
649
+ var initGridColumn = gridColumnIndex;
650
+ Group.columns = [];
651
+ Group.children = child.children;
652
+ child.columns.forEach(function (child, j) {
653
+ var _Group$columns;
654
+ var isFirst = j === 0;
655
+ var isLast = j === childCount - 1;
656
+ var col = makeColumn(child, Group, isFirst, isLast);
657
+ if (i === 0 && j === 0 && data.some(function (d) {
658
+ return d[ACCORDION];
659
+ })) {
660
+ gridColumnIndex++;
661
+ col.gridArea = "2 / ".concat(gridColumnIndex - 1, " / 3 / ").concat(gridColumnIndex + 1);
526
662
  } else {
527
- addToRows(childRow);
663
+ col.gridArea = "2 / ".concat(gridColumnIndex, " / 3 / ").concat(gridColumnIndex + 1);
528
664
  }
665
+ col.gridArea = "2 / ".concat(gridColumnIndex, " / 3 / ").concat(gridColumnIndex + 1);
666
+ columnIndex++;
667
+ gridColumnIndex++;
668
+ calculatedColumns.push(col);
669
+ (_Group$columns = Group.columns) === null || _Group$columns === void 0 ? void 0 : _Group$columns.push(col);
529
670
  });
530
- } else {
531
- addToRows(row);
671
+ treeColumns.push(Group);
672
+ _this3.gridAreaGroupMap.set(groupIndex, "1 / ".concat(initGridColumn, " / 2 / ").concat(gridColumnIndex));
673
+ groupIndex++;
532
674
  }
533
675
  });
534
- return rows;
676
+ return [calculatedColumns, treeColumns];
535
677
  }
536
678
  }, {
537
679
  key: "calculateGridTemplateColumn",
538
680
  value: function calculateGridTemplateColumn(c) {
539
- var _c$props$gtcWidth;
540
- return (_c$props$gtcWidth = c.props.gtcWidth) !== null && _c$props$gtcWidth !== void 0 ? _c$props$gtcWidth : this.props.defaultGridTemplateColumnWidth;
681
+ var _ref7;
682
+ return (_ref7 = /*#__PURE__*/React.isValidElement(c) ? c.props.gtcWidth : c.gtcWidth) !== null && _ref7 !== void 0 ? _ref7 : this.props.defaultGridTemplateColumnWidth;
683
+ }
684
+ }, {
685
+ key: "getTopScrollOffset",
686
+ value: function getTopScrollOffset() {
687
+ var _this$headerRef$curre;
688
+ var header = (_this$headerRef$curre = this.headerRef.current) === null || _this$headerRef$curre === void 0 ? void 0 : _this$headerRef$curre.children;
689
+ var height = 0;
690
+ for (var i = 0; i < ((_header$length = header === null || header === void 0 ? void 0 : header.length) !== null && _header$length !== void 0 ? _header$length : 0); i++) {
691
+ var _header$length, _header$item;
692
+ var columnHeight = header === null || header === void 0 ? void 0 : (_header$item = header.item(i)) === null || _header$item === void 0 ? void 0 : _header$item.getBoundingClientRect().height;
693
+ if (columnHeight) {
694
+ height = columnHeight;
695
+ break;
696
+ }
697
+ }
698
+ return height;
541
699
  }
542
700
  }]);
543
701
  return DataTableRoot;
@@ -548,7 +706,7 @@ _defineProperty(DataTableRoot, "enhance", [uniqueIDEnhancement(), i18nEnhance(lo
548
706
  _defineProperty(DataTableRoot, "defaultProps", {
549
707
  use: 'primary',
550
708
  defaultGridTemplateColumnWidth: 'auto',
551
- h: 'auto'
709
+ defaultExpandedRows: []
552
710
  });
553
711
  export var DataTable = createComponent(DataTableRoot, {
554
712
  Head: Head,