@semcore/data-table 16.0.0-prerelease.7 → 16.0.0

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 (138) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/lib/cjs/components/Body/Body.js +436 -0
  3. package/lib/cjs/components/Body/Body.js.map +1 -0
  4. package/lib/cjs/components/Body/Body.types.js +2 -0
  5. package/lib/cjs/components/Body/Body.types.js.map +1 -0
  6. package/lib/cjs/components/Body/Cell.js +194 -0
  7. package/lib/cjs/components/Body/Cell.js.map +1 -0
  8. package/lib/cjs/components/Body/Cell.types.js +2 -0
  9. package/lib/cjs/components/Body/Cell.types.js.map +1 -0
  10. package/lib/cjs/components/Body/MergedCells.js +29 -0
  11. package/lib/cjs/components/Body/MergedCells.js.map +1 -0
  12. package/lib/cjs/components/Body/Row.js +244 -0
  13. package/lib/cjs/components/Body/Row.js.map +1 -0
  14. package/lib/cjs/components/Body/Row.types.js +4 -0
  15. package/lib/cjs/components/Body/Row.types.js.map +1 -0
  16. package/lib/cjs/components/Body/style.shadow.css +257 -0
  17. package/lib/cjs/components/DataTable/DataTable.js +981 -0
  18. package/lib/cjs/components/DataTable/DataTable.js.map +1 -0
  19. package/lib/cjs/{types.js → components/DataTable/DataTable.types.js} +1 -1
  20. package/lib/cjs/components/DataTable/DataTable.types.js.map +1 -0
  21. package/lib/cjs/components/DataTable/dataTable.shadow.css +17 -0
  22. package/lib/cjs/components/Head/Column.js +316 -0
  23. package/lib/cjs/components/Head/Column.js.map +1 -0
  24. package/lib/cjs/components/Head/Column.types.js +2 -0
  25. package/lib/cjs/components/Head/Column.types.js.map +1 -0
  26. package/lib/cjs/components/Head/Group.js +115 -0
  27. package/lib/cjs/components/Head/Group.js.map +1 -0
  28. package/lib/cjs/components/Head/Group.type.js +2 -0
  29. package/lib/cjs/components/Head/Group.type.js.map +1 -0
  30. package/lib/cjs/components/Head/Head.js +205 -0
  31. package/lib/cjs/components/Head/Head.js.map +1 -0
  32. package/lib/cjs/components/Head/Head.types.js +2 -0
  33. package/lib/cjs/components/Head/Head.types.js.map +1 -0
  34. package/lib/cjs/components/Head/style.shadow.css +176 -0
  35. package/lib/cjs/index.js +25 -15
  36. package/lib/cjs/index.js.map +1 -1
  37. package/lib/cjs/style/scroll-shadows.shadow.css +39 -5
  38. package/lib/cjs/translations/en.json +6 -1
  39. package/lib/cjs/utils.js +16 -7
  40. package/lib/cjs/utils.js.map +1 -1
  41. package/lib/es6/components/Body/Body.js +429 -0
  42. package/lib/es6/components/Body/Body.js.map +1 -0
  43. package/lib/es6/components/Body/Body.types.js +2 -0
  44. package/lib/es6/components/Body/Body.types.js.map +1 -0
  45. package/lib/es6/components/Body/Cell.js +187 -0
  46. package/lib/es6/components/Body/Cell.js.map +1 -0
  47. package/lib/es6/components/Body/Cell.types.js +2 -0
  48. package/lib/es6/components/Body/Cell.types.js.map +1 -0
  49. package/lib/es6/components/Body/MergedCells.js +20 -0
  50. package/lib/es6/components/Body/MergedCells.js.map +1 -0
  51. package/lib/es6/components/Body/Row.js +237 -0
  52. package/lib/es6/components/Body/Row.js.map +1 -0
  53. package/lib/es6/components/Body/Row.types.js +2 -0
  54. package/lib/es6/components/Body/Row.types.js.map +1 -0
  55. package/lib/es6/components/Body/style.shadow.css +257 -0
  56. package/lib/es6/components/DataTable/DataTable.js +970 -0
  57. package/lib/es6/components/DataTable/DataTable.js.map +1 -0
  58. package/lib/es6/components/DataTable/DataTable.types.js +2 -0
  59. package/lib/es6/components/DataTable/DataTable.types.js.map +1 -0
  60. package/lib/es6/components/DataTable/dataTable.shadow.css +17 -0
  61. package/lib/es6/components/Head/Column.js +309 -0
  62. package/lib/es6/components/Head/Column.js.map +1 -0
  63. package/lib/es6/components/Head/Column.types.js +2 -0
  64. package/lib/es6/components/Head/Column.types.js.map +1 -0
  65. package/lib/es6/components/Head/Group.js +108 -0
  66. package/lib/es6/components/Head/Group.js.map +1 -0
  67. package/lib/es6/components/Head/Group.type.js +2 -0
  68. package/lib/es6/components/Head/Group.type.js.map +1 -0
  69. package/lib/es6/components/Head/Head.js +199 -0
  70. package/lib/es6/components/Head/Head.js.map +1 -0
  71. package/lib/es6/components/Head/Head.types.js +2 -0
  72. package/lib/es6/components/Head/Head.types.js.map +1 -0
  73. package/lib/es6/components/Head/style.shadow.css +176 -0
  74. package/lib/es6/index.js +5 -2
  75. package/lib/es6/index.js.map +1 -1
  76. package/lib/es6/style/scroll-shadows.shadow.css +39 -5
  77. package/lib/es6/translations/en.json +6 -1
  78. package/lib/es6/utils.js +14 -6
  79. package/lib/es6/utils.js.map +1 -1
  80. package/lib/esm/components/Body/Body.mjs +392 -0
  81. package/lib/esm/components/Body/Cell.mjs +185 -0
  82. package/lib/esm/components/Body/MergedCells.mjs +23 -0
  83. package/lib/esm/components/Body/Row.mjs +218 -0
  84. package/lib/esm/components/Body/style.shadow.css +257 -0
  85. package/lib/esm/components/DataTable/DataTable.mjs +904 -0
  86. package/lib/esm/components/DataTable/dataTable.shadow.css +17 -0
  87. package/lib/esm/components/Head/Column.mjs +299 -0
  88. package/lib/esm/components/Head/Group.mjs +102 -0
  89. package/lib/esm/components/Head/Head.mjs +180 -0
  90. package/lib/esm/components/Head/style.shadow.css +176 -0
  91. package/lib/esm/index.mjs +8 -5
  92. package/lib/esm/style/scroll-shadows.shadow.css +41 -0
  93. package/lib/esm/translations/en.json.mjs +6 -1
  94. package/lib/esm/utils.mjs +6 -15
  95. package/lib/types/components/Body/Body.d.ts +8 -0
  96. package/lib/types/components/Body/Body.types.d.ts +56 -0
  97. package/lib/types/components/Body/Cell.d.ts +3 -0
  98. package/lib/types/components/Body/Cell.types.d.ts +20 -0
  99. package/lib/types/components/Body/MergedCells.d.ts +14 -0
  100. package/lib/types/components/Body/Row.d.ts +3 -0
  101. package/lib/types/components/Body/Row.types.d.ts +42 -0
  102. package/lib/types/components/DataTable/DataTable.d.ts +12 -0
  103. package/lib/types/components/DataTable/DataTable.types.d.ts +118 -0
  104. package/lib/types/components/Head/Column.d.ts +30 -0
  105. package/lib/types/components/Head/Column.types.d.ts +82 -0
  106. package/lib/types/components/Head/Group.d.ts +15 -0
  107. package/lib/types/components/Head/Group.type.d.ts +16 -0
  108. package/lib/types/components/Head/Head.d.ts +98 -0
  109. package/lib/types/components/Head/Head.types.d.ts +35 -0
  110. package/lib/types/index.d.ts +10 -2
  111. package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +5 -0
  112. package/lib/types/utils.d.ts +8 -4
  113. package/package.json +11 -6
  114. package/vite.config.ts +0 -3
  115. package/lib/cjs/Body.js +0 -475
  116. package/lib/cjs/Body.js.map +0 -1
  117. package/lib/cjs/DataTable.js +0 -622
  118. package/lib/cjs/DataTable.js.map +0 -1
  119. package/lib/cjs/Head.js +0 -399
  120. package/lib/cjs/Head.js.map +0 -1
  121. package/lib/cjs/style/data-table.shadow.css +0 -394
  122. package/lib/cjs/types.js.map +0 -1
  123. package/lib/es6/Body.js +0 -468
  124. package/lib/es6/Body.js.map +0 -1
  125. package/lib/es6/DataTable.js +0 -614
  126. package/lib/es6/DataTable.js.map +0 -1
  127. package/lib/es6/Head.js +0 -391
  128. package/lib/es6/Head.js.map +0 -1
  129. package/lib/es6/style/data-table.shadow.css +0 -394
  130. package/lib/es6/types.js +0 -2
  131. package/lib/es6/types.js.map +0 -1
  132. package/lib/esm/Body.mjs +0 -427
  133. package/lib/esm/DataTable.mjs +0 -582
  134. package/lib/esm/Head.mjs +0 -369
  135. package/lib/types/Body.d.ts +0 -61
  136. package/lib/types/DataTable.d.ts +0 -205
  137. package/lib/types/Head.d.ts +0 -45
  138. package/lib/types/types.d.ts +0 -73
@@ -0,0 +1,981 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.UNIQ_ROW_KEY = exports.SELECT_ALL = exports.ROW_INDEX = exports.ROW_GROUP = exports.DataTable = exports.ACCORDION = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
+ var _core = require("@semcore/core");
19
+ var React = _interopRequireWildcard(require("react"));
20
+ var _baseComponents = require("@semcore/base-components");
21
+ var _Head = require("../Head/Head");
22
+ var _Body = require("../Body/Body");
23
+ var _useFocusLock = require("@semcore/core/lib/utils/use/useFocusLock");
24
+ var _utils = require("../../utils");
25
+ var _findComponent = _interopRequireDefault(require("@semcore/core/lib/utils/findComponent"));
26
+ var _intergalacticDynamicLocales = require("../../translations/__intergalactic-dynamic-locales");
27
+ var _i18nEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/i18nEnhance"));
28
+ var _uniqueID = _interopRequireDefault(require("@semcore/core/lib/utils/uniqueID"));
29
+ var _ref10 = require("@semcore/core/lib/utils/ref");
30
+ var _hasParent = require("@semcore/core/lib/utils/hasParent");
31
+ var _rafTrottle = _interopRequireDefault(require("@semcore/core/lib/utils/rafTrottle"));
32
+ var _MergedCells = require("../Body/MergedCells");
33
+ var _widgetEmpty = require("@semcore/widget-empty");
34
+ /*!__reshadow-styles__:"./dataTable.shadow.css"*/
35
+ var style = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SDataTable_1iypx_gg_{display:grid;align-items:start;min-width:-moz-fit-content;min-width:fit-content}.___SDataTable_1iypx_gg_.__gridTemplateColumns_1iypx_gg_{grid-template-columns:var(--gridTemplateColumns_1iypx)}.___SDataTable_1iypx_gg_.__gridTemplateAreas_1iypx_gg_{grid-template-areas:var(--gridTemplateAreas_1iypx)}.___SDataTable_1iypx_gg_.__gridTemplateRows_1iypx_gg_{grid-template-rows:var(--gridTemplateRows_1iypx)}", /*__inner_css_end__*/"1iypx_gg_"),
36
+ /*__reshadow_css_end__*/
37
+ {
38
+ "__SDataTable": "___SDataTable_1iypx_gg_",
39
+ "_gridTemplateColumns": "__gridTemplateColumns_1iypx_gg_",
40
+ "--gridTemplateColumns": "--gridTemplateColumns_1iypx",
41
+ "_gridTemplateAreas": "__gridTemplateAreas_1iypx_gg_",
42
+ "--gridTemplateAreas": "--gridTemplateAreas_1iypx",
43
+ "_gridTemplateRows": "__gridTemplateRows_1iypx_gg_",
44
+ "--gridTemplateRows": "--gridTemplateRows_1iypx"
45
+ });
46
+ /*!__reshadow-styles__:"../../style/scroll-shadows.shadow.css"*/
47
+ var scrollStyles = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SScrollArea_11h4o_gg_{width:-moz-fit-content;width:fit-content}.___SScrollArea_11h4o_gg_ .___SContainer_11h4o_gg_{overflow:visible;overflow:initial}.___SScrollArea_11h4o_gg_ .___SContainer_11h4o_gg_._scrollDirection_both_11h4o_gg_{overflow:auto}.___SScrollArea_11h4o_gg_ .___SContainer_11h4o_gg_._scrollDirection_horizontal_11h4o_gg_{overflow-x:auto;overflow-y:initial}.___SScrollArea_11h4o_gg_ .___SContainer_11h4o_gg_._scrollDirection_vertical_11h4o_gg_{overflow-x:initial;overflow-y:auto}.___SScrollArea_11h4o_gg_ .___SContainer_11h4o_gg_.__loading_11h4o_gg_{overflow:hidden}.___SScrollArea_11h4o_gg_ .___SContainer_11h4o_gg_.__headerHeight_11h4o_gg_{scroll-padding-top:var(--headerHeight_11h4o)}.___SScrollArea_11h4o_gg_ .___SShadowVertical_11h4o_gg_:before{display:none}.___SScrollArea_11h4o_gg_ .___SShadowHorizontal_11h4o_gg_:after,.___SScrollArea_11h4o_gg_ .___SShadowHorizontal_11h4o_gg_:before,.___SScrollArea_11h4o_gg_ .___SShadowVertical_11h4o_gg_:after{z-index:2}", /*__inner_css_end__*/"11h4o_gg_"),
48
+ /*__reshadow_css_end__*/
49
+ {
50
+ "__SScrollArea": "___SScrollArea_11h4o_gg_",
51
+ "__SContainer": "___SContainer_11h4o_gg_",
52
+ "_scrollDirection_both": "_scrollDirection_both_11h4o_gg_",
53
+ "_scrollDirection_horizontal": "_scrollDirection_horizontal_11h4o_gg_",
54
+ "_scrollDirection_vertical": "_scrollDirection_vertical_11h4o_gg_",
55
+ "_loading": "__loading_11h4o_gg_",
56
+ "_headerHeight": "__headerHeight_11h4o_gg_",
57
+ "--headerHeight": "--headerHeight_11h4o",
58
+ "__SShadowVertical": "___SShadowVertical_11h4o_gg_",
59
+ "__SShadowHorizontal": "___SShadowHorizontal_11h4o_gg_"
60
+ });
61
+ var ACCORDION = Symbol('accordion');
62
+ exports.ACCORDION = ACCORDION;
63
+ var ROW_GROUP = Symbol('ROW_GROUP');
64
+ exports.ROW_GROUP = ROW_GROUP;
65
+ var UNIQ_ROW_KEY = Symbol('UNIQ_ROW_KEY');
66
+ exports.UNIQ_ROW_KEY = UNIQ_ROW_KEY;
67
+ var SELECT_ALL = Symbol('SELECT_ALL');
68
+ exports.SELECT_ALL = SELECT_ALL;
69
+ var ROW_INDEX = Symbol('ROW_INDEX');
70
+ exports.ROW_INDEX = ROW_INDEX;
71
+ var SCROLL_BAR_HEIGHT = 12;
72
+ var DataTableRoot = /*#__PURE__*/function (_Component) {
73
+ (0, _inherits2["default"])(DataTableRoot, _Component);
74
+ var _super = (0, _createSuper2["default"])(DataTableRoot);
75
+ function DataTableRoot(props) {
76
+ var _this;
77
+ (0, _classCallCheck2["default"])(this, DataTableRoot);
78
+ _this = _super.call(this, props);
79
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "columns", []);
80
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "treeColumns", []);
81
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "hasGroups", false);
82
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "focusedCell", [-1, -1]);
83
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "scrollAreaRef", /*#__PURE__*/React.createRef());
84
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "tableContainerRef", /*#__PURE__*/React.createRef());
85
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "tableRef", /*#__PURE__*/React.createRef());
86
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "headerRef", /*#__PURE__*/React.createRef());
87
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "spinnerRef", /*#__PURE__*/React.createRef());
88
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "gridAreaGroupMap", new Map());
89
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "columnsSplitter", '/');
90
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "rows", []);
91
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectAllMessageTimer", 0);
92
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
93
+ scrollTop: 0,
94
+ scrollDirection: 'down',
95
+ selectAllMessage: ''
96
+ });
97
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSelectRow", function (isSelected, selectedRowIndex, row, event) {
98
+ var _this$asProps = _this.asProps,
99
+ selectedRows = _this$asProps.selectedRows,
100
+ onSelectedRowsChange = _this$asProps.onSelectedRowsChange,
101
+ data = _this$asProps.data;
102
+ if (selectedRows && onSelectedRowsChange) {
103
+ var newSelectedRows = new Set(selectedRows);
104
+ if (isSelected && !newSelectedRows.has(selectedRowIndex)) {
105
+ newSelectedRows.add(selectedRowIndex);
106
+ } else if (!isSelected && newSelectedRows.has(selectedRowIndex)) {
107
+ newSelectedRows["delete"](selectedRowIndex);
108
+ }
109
+ onSelectedRowsChange((0, _toConsumableArray2["default"])(newSelectedRows), event, {
110
+ selectedRowIndex: selectedRowIndex,
111
+ isSelected: isSelected,
112
+ row: row
113
+ });
114
+ }
115
+ });
116
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setSelectAllMessage", function (selectedAll) {
117
+ if (_this.selectAllMessageTimer) {
118
+ clearTimeout(_this.selectAllMessageTimer);
119
+ }
120
+ var getI18nText = _this.asProps.getI18nText;
121
+ var message = getI18nText(selectedAll ? 'DataTable.allItemsSelected:aria-live' : 'DataTable.allItemsDeselected:aria-live');
122
+ _this.setState({
123
+ selectAllMessage: message
124
+ });
125
+ _this.selectAllMessageTimer = window.setTimeout(function () {
126
+ _this.setState({
127
+ selectAllMessage: ''
128
+ });
129
+ }, 5000);
130
+ });
131
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getRow", function (index) {
132
+ var _this$tableRef$curren;
133
+ return (_this$tableRef$curren = _this.tableRef.current) === null || _this$tableRef$curren === void 0 ? void 0 : _this$tableRef$curren.querySelector("[aria-rowindex=\"".concat(index + 1, "\"]"));
134
+ });
135
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "hasFocusableInHeader", function () {
136
+ var hasFocusable = _this.columns.some(function (column) {
137
+ var columnElement = column.ref.current;
138
+ return columnElement && (0, _useFocusLock.hasFocusableIn)(columnElement);
139
+ });
140
+ return hasFocusable;
141
+ });
142
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onExpandRow", function (expandedRow) {
143
+ var expandedRows = _this.asProps.expandedRows;
144
+ if (expandedRows.has(expandedRow[UNIQ_ROW_KEY])) {
145
+ expandedRows["delete"](expandedRow[UNIQ_ROW_KEY]);
146
+ } else {
147
+ expandedRows.add(expandedRow[UNIQ_ROW_KEY]);
148
+ }
149
+ _this.handlers.expandedRows(new Set((0, _toConsumableArray2["default"])(expandedRows)));
150
+ });
151
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeFocusCell", function (rowIndex, colIndex, direction) {
152
+ var _this$tableRef$curren2, _this$tableRef$curren3;
153
+ var hasFocusable = _this.hasFocusableInHeader();
154
+ var maxCol = _this.columns.length - 1;
155
+ var maxRow = _this.totalRows || 1;
156
+ var currentRow = (_this$tableRef$curren2 = _this.tableRef.current) === null || _this$tableRef$curren2 === void 0 ? void 0 : _this$tableRef$curren2.querySelector("[aria-rowindex=\"".concat(_this.focusedCell[0] + 1, "\"]"));
157
+ var headerCells = (_this$tableRef$curren3 = _this.tableRef.current) === null || _this$tableRef$curren3 === void 0 ? void 0 : _this$tableRef$curren3.querySelectorAll('[role=columnheader]');
158
+ var currentCell = currentRow === null || currentRow === void 0 ? void 0 : currentRow.querySelector("[role=gridcell][aria-colindex='".concat(_this.focusedCell[1] + 1, "']"));
159
+ var currentHeaderCell = headerCells === null || headerCells === void 0 ? void 0 : headerCells.item(_this.focusedCell[1]);
160
+ var changed = true;
161
+ var newRow = _this.focusedCell[0] + rowIndex;
162
+ var newCol = _this.focusedCell[1] + colIndex;
163
+ if ((hasFocusable && newRow < 0 || !hasFocusable && newRow < 1 || newRow > maxRow) && newRow !== _this.focusedCell[0]) {
164
+ changed = false;
165
+ }
166
+ if ((newCol < 0 || newCol > maxCol) && newCol !== _this.focusedCell[1]) {
167
+ changed = false;
168
+ }
169
+ if (!changed) return;
170
+ var row = _this.getRow(newRow);
171
+ var cell = row === null || row === void 0 ? void 0 : row.querySelector(":scope > [role=gridcell][aria-colindex=\"".concat(newCol + 1, "\"], :scope > [role=columnheader][aria-colindex=\"").concat(newCol + 1, "\"], :scope > div > [role=columnheader][aria-colindex=\"").concat(newCol + 1, "\"]"));
172
+ if (cell instanceof HTMLElement && currentCell !== cell) {
173
+ _this.focusedCell = [newRow, newCol];
174
+ currentCell === null || currentCell === void 0 ? void 0 : currentCell.setAttribute('inert', '');
175
+ if (currentCell !== currentHeaderCell) {
176
+ currentCell === null || currentCell === void 0 ? void 0 : currentCell.removeAttribute('aria-describedby');
177
+ }
178
+ var headerCell = headerCells === null || headerCells === void 0 ? void 0 : headerCells.item(newCol);
179
+ var describedBy = headerCell === null || headerCell === void 0 ? void 0 : headerCell.getAttribute('aria-describedby');
180
+ cell.removeAttribute('inert');
181
+ if (headerCell !== cell && describedBy) {
182
+ cell.setAttribute('aria-describedby', describedBy);
183
+ }
184
+ cell === null || cell === void 0 ? void 0 : cell.focus();
185
+ if (newRow !== 0) {
186
+ currentHeaderCell === null || currentHeaderCell === void 0 ? void 0 : currentHeaderCell.setAttribute('inert', '');
187
+ var _headerCell = headerCells === null || headerCells === void 0 ? void 0 : headerCells.item(newCol);
188
+ _headerCell === null || _headerCell === void 0 ? void 0 : _headerCell.removeAttribute('inert');
189
+ }
190
+ } else if (cell === null && currentCell instanceof HTMLElement) {
191
+ var rowI = rowIndex;
192
+ var colI = colIndex;
193
+ if (direction === 'left' || direction === 'right') {
194
+ var _currentCell$parentEl, _row$children;
195
+ // left/right
196
+ if (currentCell.dataset.groupedBy === 'colgroup' || Number((_currentCell$parentEl = currentCell.parentElement) === null || _currentCell$parentEl === void 0 ? void 0 : _currentCell$parentEl.getAttribute('aria-rowindex')) === 2 || Array.from((_row$children = row === null || row === void 0 ? void 0 : row.children) !== null && _row$children !== void 0 ? _row$children : []).indexOf(currentCell) > 0) {
197
+ colI = direction === 'left' ? colI - 1 : colI + 1;
198
+ } else {
199
+ rowI = rowI - 1;
200
+ }
201
+ } else if (direction === 'up' || direction === 'down') {
202
+ // top/bottom
203
+ if (currentCell.dataset.groupedBy === 'rowgroup' || Number(currentCell.getAttribute('aria-colindex')) === 1) {
204
+ rowI = direction === 'up' ? rowI - 1 : rowI + 1;
205
+ } else {
206
+ colI = colI - 1;
207
+ }
208
+ }
209
+ _this.changeFocusCell(rowI, colI, direction);
210
+ } else if (cell === null && currentHeaderCell instanceof HTMLElement && direction === 'down') {
211
+ var _colI = colIndex - 1;
212
+ _this.changeFocusCell(rowIndex, _colI, direction);
213
+ } else if (row === null && _this.focusedCell[0] === 0 && direction === 'down' && _this.asProps.virtualScroll) {
214
+ _this.changeFocusCell(rowIndex + 1, colIndex, direction);
215
+ }
216
+ });
217
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeyDown", function (e) {
218
+ switch (e.key) {
219
+ case 'Tab':
220
+ {
221
+ _this.setInert(true);
222
+ break;
223
+ }
224
+ case 'ArrowLeft':
225
+ {
226
+ e.preventDefault();
227
+ _this.changeFocusCell(0, -1, 'left');
228
+ break;
229
+ }
230
+ case 'ArrowRight':
231
+ {
232
+ e.preventDefault();
233
+ _this.changeFocusCell(0, 1, 'right');
234
+ break;
235
+ }
236
+ case 'ArrowUp':
237
+ {
238
+ e.preventDefault();
239
+ _this.changeFocusCell(-1, 0, 'up');
240
+ break;
241
+ }
242
+ case 'ArrowDown':
243
+ {
244
+ e.preventDefault();
245
+ _this.changeFocusCell(1, 0, 'down');
246
+ break;
247
+ }
248
+ }
249
+ });
250
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "initFocusableCell", function () {
251
+ var hasFocusable = _this.hasFocusableInHeader();
252
+ if (hasFocusable) {
253
+ _this.focusedCell = [0, 0];
254
+ } else {
255
+ _this.focusedCell = [1, 0];
256
+ }
257
+ });
258
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleScroll", (0, _rafTrottle["default"])(function (e) {
259
+ var scrollTop = e.target.scrollTop;
260
+ var scrollDirection = scrollTop > _this.state.scrollTop ? 'down' : 'up';
261
+ _this.setState({
262
+ scrollTop: scrollTop,
263
+ scrollDirection: scrollDirection
264
+ });
265
+ }));
266
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleFocus", function (e) {
267
+ if (_this.asProps.loading) {
268
+ var _this$spinnerRef$curr;
269
+ (_this$spinnerRef$curr = _this.spinnerRef.current) === null || _this$spinnerRef$curr === void 0 ? void 0 : _this$spinnerRef$curr.focus();
270
+ e.currentTarget.setAttribute('tabIndex', '-1');
271
+ } else if ((!e.relatedTarget || !(0, _useFocusLock.isFocusInside)(e.currentTarget, e.relatedTarget)) && _core.lastInteraction.isKeyboard()) {
272
+ var _row;
273
+ if (_this.focusedCell[0] === -1 && _this.focusedCell[1] === -1) {
274
+ _this.initFocusableCell();
275
+ }
276
+ _this.setInert(true);
277
+ var row = _this.getRow(_this.focusedCell[0]);
278
+ if (!row) {
279
+ _this.initFocusableCell();
280
+ row = _this.getRow(_this.focusedCell[0]);
281
+ }
282
+ if (!row && _this.asProps.virtualScroll) {
283
+ var _this$tableRef$curren4;
284
+ var firstAvailableCell = (_this$tableRef$curren4 = _this.tableRef.current) === null || _this$tableRef$curren4 === void 0 ? void 0 : _this$tableRef$curren4.querySelector("[role=\"gridcell\"]");
285
+ var firstAvailableRow = firstAvailableCell === null || firstAvailableCell === void 0 ? void 0 : firstAvailableCell.parentElement;
286
+ if (firstAvailableCell && firstAvailableRow) {
287
+ var _Number, _Number2;
288
+ var colIndex = ((_Number = Number(firstAvailableCell.getAttribute('aria-colindex'))) !== null && _Number !== void 0 ? _Number : 1) - 1;
289
+ var rowIndex = ((_Number2 = Number(firstAvailableRow.getAttribute('aria-rowindex'))) !== null && _Number2 !== void 0 ? _Number2 : 1) - 1;
290
+ _this.focusedCell[0] = rowIndex;
291
+ _this.focusedCell[1] = colIndex;
292
+ row = firstAvailableRow;
293
+ }
294
+ }
295
+ var cell = (_row = row) === null || _row === void 0 ? void 0 : _row.querySelectorAll('[role=gridcell], [role=columnheader]').item(_this.focusedCell[1]);
296
+ cell === null || cell === void 0 ? void 0 : cell.removeAttribute('inert');
297
+ if (cell instanceof HTMLElement) {
298
+ if ((0, _hasParent.hasParent)(e.target, cell)) {
299
+ e.target.focus();
300
+ } else {
301
+ cell.focus();
302
+ }
303
+ }
304
+ e.currentTarget.setAttribute('tabIndex', '-1');
305
+ }
306
+ });
307
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleBlur", function (e) {
308
+ var relatedTarget = e.relatedTarget;
309
+ var tableElement = _this.tableRef.current;
310
+ if (tableElement && (!relatedTarget || !(0, _useFocusLock.isFocusInside)(tableElement, relatedTarget) || !_core.lastInteraction.isKeyboard())) {
311
+ _this.setInert(false);
312
+ tableElement.setAttribute('tabIndex', '0');
313
+ }
314
+ });
315
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMouseMove", function () {
316
+ _this.setInert(false);
317
+ });
318
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleBackFromAccordion", function (cellIndex) {
319
+ _this.changeFocusCell(-1, cellIndex === -1 ? 0 : cellIndex, 'up');
320
+ });
321
+ if (props.children) {
322
+ _this.columns = _this.calculateColumns();
323
+ } else {
324
+ var cols = _this.calculateColumnsFromConfig();
325
+ _this.columns = cols[0];
326
+ _this.treeColumns = cols[1];
327
+ }
328
+ _this.rows = _this.calculateRows();
329
+ return _this;
330
+ }
331
+ (0, _createClass2["default"])(DataTableRoot, [{
332
+ key: "uncontrolledProps",
333
+ value: function uncontrolledProps() {
334
+ return {
335
+ expandedRows: new Set()
336
+ };
337
+ }
338
+ }, {
339
+ key: "componentDidMount",
340
+ value: function componentDidMount() {
341
+ this.forceUpdate();
342
+ }
343
+ }, {
344
+ key: "componentDidUpdate",
345
+ value: function componentDidUpdate(prevProps) {
346
+ var _this$asProps2 = this.asProps,
347
+ data = _this$asProps2.data,
348
+ selectedRows = _this$asProps2.selectedRows;
349
+ if (prevProps.data !== data) {
350
+ this.rows = this.calculateRows();
351
+ this.forceUpdate();
352
+ }
353
+ if (prevProps.selectedRows !== selectedRows && selectedRows !== undefined) {
354
+ if (prevProps.selectedRows.length < data.length && selectedRows.length === data.length) {
355
+ this.setSelectAllMessage(true);
356
+ } else if (prevProps.selectedRows.length > 0 && selectedRows.length === 0) {
357
+ this.setSelectAllMessage(false);
358
+ }
359
+ }
360
+ }
361
+ }, {
362
+ key: "totalRows",
363
+ get: function get() {
364
+ var _this$asProps3 = this.asProps,
365
+ totalRows = _this$asProps3.totalRows,
366
+ expandedRows = _this$asProps3.expandedRows;
367
+ var flatRows = this.rows.flat();
368
+ var expandedRowsCount = Array.from(expandedRows !== null && expandedRows !== void 0 ? expandedRows : []).reduce(function (acc, rowKey) {
369
+ var dtRow = flatRows.find(function (el) {
370
+ return el[UNIQ_ROW_KEY] === rowKey;
371
+ });
372
+ if (dtRow) {
373
+ var _expandedRows = dtRow[ACCORDION];
374
+ if (Array.isArray(_expandedRows)) {
375
+ acc = acc + _expandedRows.length;
376
+ } else {
377
+ acc = acc + 1;
378
+ }
379
+ }
380
+ return acc;
381
+ }, 0);
382
+ if (totalRows !== undefined) {
383
+ return totalRows + expandedRowsCount;
384
+ }
385
+ var rows = this.rows.reduce(function (acc, item) {
386
+ acc = acc + 1;
387
+ if (Array.isArray(item)) {
388
+ acc = acc + item.length;
389
+ }
390
+ return acc;
391
+ }, 0);
392
+ return rows + expandedRowsCount;
393
+ }
394
+ }, {
395
+ key: "gridSettings",
396
+ get: function get() {
397
+ var columns = this.columns;
398
+ var gridTemplateColumns = columns.map(function (c) {
399
+ return c.gridColumnWidth;
400
+ });
401
+ var gridTemplateAreas = columns.map(function (c) {
402
+ return c.name;
403
+ });
404
+ return {
405
+ gridTemplateColumns: gridTemplateColumns,
406
+ gridTemplateAreas: gridTemplateAreas
407
+ };
408
+ }
409
+ }, {
410
+ key: "getHeadProps",
411
+ value: function getHeadProps() {
412
+ var _this2 = this;
413
+ var _this$asProps4 = this.asProps,
414
+ use = _this$asProps4.use,
415
+ compact = _this$asProps4.compact,
416
+ sort = _this$asProps4.sort,
417
+ onSortChange = _this$asProps4.onSortChange,
418
+ getI18nText = _this$asProps4.getI18nText,
419
+ uid = _this$asProps4.uid,
420
+ headerProps = _this$asProps4.headerProps,
421
+ onSelectedRowsChange = _this$asProps4.onSelectedRowsChange,
422
+ selectedRows = _this$asProps4.selectedRows,
423
+ sideIndents = _this$asProps4.sideIndents;
424
+ var _this$gridSettings = this.gridSettings,
425
+ gridTemplateColumns = _this$gridSettings.gridTemplateColumns,
426
+ gridTemplateAreas = _this$gridSettings.gridTemplateAreas;
427
+ return (0, _objectSpread2["default"])({
428
+ columns: this.columns,
429
+ treeColumns: this.treeColumns,
430
+ use: use,
431
+ tableRef: this.tableRef,
432
+ compact: Boolean(compact),
433
+ sort: sort,
434
+ onSortChange: onSortChange,
435
+ getI18nText: getI18nText,
436
+ uid: uid,
437
+ ref: this.headerRef,
438
+ gridAreaGroupMap: this.gridAreaGroupMap,
439
+ gridTemplateColumns: gridTemplateColumns,
440
+ gridTemplateAreas: gridTemplateAreas,
441
+ sideIndents: sideIndents,
442
+ totalRows: this.totalRows,
443
+ selectedRows: selectedRows,
444
+ onChangeSelectAll: function onChangeSelectAll(value, e) {
445
+ var selectedRowsIndexes = value ? new Array(_this2.totalRows).fill(undefined).map(function (_, i) {
446
+ return i;
447
+ }) : [];
448
+ onSelectedRowsChange === null || onSelectedRowsChange === void 0 ? void 0 : onSelectedRowsChange(selectedRowsIndexes, e);
449
+ }
450
+ }, headerProps);
451
+ }
452
+ }, {
453
+ key: "getBodyProps",
454
+ value: function getBodyProps() {
455
+ var _this$asProps5 = this.asProps,
456
+ use = _this$asProps5.use,
457
+ compact = _this$asProps5.compact,
458
+ loading = _this$asProps5.loading,
459
+ getI18nText = _this$asProps5.getI18nText,
460
+ expandedRows = _this$asProps5.expandedRows,
461
+ virtualScroll = _this$asProps5.virtualScroll,
462
+ uid = _this$asProps5.uid,
463
+ rowProps = _this$asProps5.rowProps,
464
+ renderCell = _this$asProps5.renderCell,
465
+ headerProps = _this$asProps5.headerProps,
466
+ renderEmptyData = _this$asProps5.renderEmptyData,
467
+ sideIndents = _this$asProps5.sideIndents,
468
+ selectedRows = _this$asProps5.selectedRows;
469
+ var _this$gridSettings2 = this.gridSettings,
470
+ gridTemplateColumns = _this$gridSettings2.gridTemplateColumns,
471
+ gridTemplateAreas = _this$gridSettings2.gridTemplateAreas;
472
+ return {
473
+ columns: this.columns,
474
+ rows: this.rows,
475
+ flatRows: this.rows.flat(),
476
+ use: use,
477
+ compact: Boolean(compact),
478
+ gridTemplateColumns: gridTemplateColumns,
479
+ gridTemplateAreas: gridTemplateAreas,
480
+ loading: loading,
481
+ headerHeight: this.getHeaderHeight(),
482
+ stickyHeader: headerProps === null || headerProps === void 0 ? void 0 : headerProps.sticky,
483
+ getI18nText: getI18nText,
484
+ expandedRows: expandedRows,
485
+ onExpandRow: this.onExpandRow,
486
+ spinnerRef: this.spinnerRef,
487
+ scrollTop: this.state.scrollTop,
488
+ scrollDirection: this.state.scrollDirection,
489
+ tableContainerRef: this.tableContainerRef,
490
+ tableRef: this.tableRef,
491
+ scrollAreaRef: this.scrollAreaRef,
492
+ onBackFromAccordion: this.handleBackFromAccordion,
493
+ virtualScroll: virtualScroll,
494
+ hasGroups: this.hasGroups,
495
+ uid: uid,
496
+ rowProps: rowProps,
497
+ renderCell: renderCell,
498
+ renderEmptyData: renderEmptyData,
499
+ sideIndents: sideIndents,
500
+ selectedRows: selectedRows,
501
+ onSelectRow: this.handleSelectRow
502
+ };
503
+ }
504
+ }, {
505
+ key: "setInert",
506
+ value: function setInert(value) {
507
+ var _this$tableRef$curren5;
508
+ var cells = (_this$tableRef$curren5 = this.tableRef.current) === null || _this$tableRef$curren5 === void 0 ? void 0 : _this$tableRef$curren5.querySelectorAll('[role=gridcell], [role=columnheader]');
509
+ cells === null || cells === void 0 ? void 0 : cells.forEach(function (cell) {
510
+ if (value === true) {
511
+ cell.setAttribute('inert', '');
512
+ } else {
513
+ cell.removeAttribute('inert');
514
+ }
515
+ });
516
+ }
517
+ }, {
518
+ key: "render",
519
+ value: function render() {
520
+ var _ref = this.asProps,
521
+ _ref2;
522
+ var SDataTable = _baseComponents.Box;
523
+ var _this$asProps6 = this.asProps,
524
+ Children = _this$asProps6.Children,
525
+ styles = _this$asProps6.styles,
526
+ w = _this$asProps6.w,
527
+ wMax = _this$asProps6.wMax,
528
+ wMin = _this$asProps6.wMin,
529
+ h = _this$asProps6.h,
530
+ hMax = _this$asProps6.hMax,
531
+ hMin = _this$asProps6.hMin,
532
+ virtualScroll = _this$asProps6.virtualScroll,
533
+ children = _this$asProps6.children,
534
+ headerProps = _this$asProps6.headerProps,
535
+ loading = _this$asProps6.loading,
536
+ selectedRows = _this$asProps6.selectedRows;
537
+ var _getScrollOffsetValue = (0, _utils.getScrollOffsetValue)(this.columns),
538
+ _getScrollOffsetValue2 = (0, _slicedToArray2["default"])(_getScrollOffsetValue, 2),
539
+ offsetLeftSum = _getScrollOffsetValue2[0],
540
+ offsetRightSum = _getScrollOffsetValue2[1];
541
+ var _this$gridSettings3 = this.gridSettings,
542
+ gridTemplateColumns = _this$gridSettings3.gridTemplateColumns,
543
+ gridTemplateAreas = _this$gridSettings3.gridTemplateAreas;
544
+ var Head = (0, _findComponent["default"])(Children, ['DataTable.Head']);
545
+ var headerPropsToCheck = headerProps !== null && headerProps !== void 0 ? headerProps : Head === null || Head === void 0 ? void 0 : Head.props;
546
+ var headerHeight = this.getHeaderHeight();
547
+ var topOffset = headerPropsToCheck !== null && headerPropsToCheck !== void 0 && headerPropsToCheck.sticky || headerPropsToCheck !== null && headerPropsToCheck !== void 0 && headerPropsToCheck.withScrollBar ? headerHeight : undefined;
548
+ var width = w !== null && w !== void 0 ? w : this.columns.some(function (c) {
549
+ return c.gridColumnWidth === 'auto' || c.gridColumnWidth === '1fr';
550
+ }) ? '100%' : undefined;
551
+ var gridTemplateRows = undefined;
552
+ if (virtualScroll && typeof virtualScroll !== 'boolean' && 'rowHeight' in virtualScroll) {
553
+ gridTemplateRows = "auto auto repeat(".concat(this.totalRows, ", minmax(").concat(virtualScroll.rowHeight, "px, auto)");
554
+ }
555
+ var scrollDirection = undefined;
556
+ var hasWidthSettings = Boolean(w) && w !== '100%' || Boolean(wMax);
557
+ var hasHeightSettings = Boolean(h) && h !== 'fit-content' || Boolean(hMax);
558
+ if (hasWidthSettings && !hasHeightSettings) {
559
+ scrollDirection = 'horizontal';
560
+ } else if (hasHeightSettings && !hasWidthSettings) {
561
+ scrollDirection = 'vertical';
562
+ } else if (hasWidthSettings && hasHeightSettings) {
563
+ scrollDirection = 'both';
564
+ }
565
+ return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/React.createElement(_baseComponents.ScrollArea, _ref2.cn("ScrollArea", {
566
+ "leftOffset": offsetLeftSum,
567
+ "rightOffset": offsetRightSum,
568
+ "topOffset": topOffset,
569
+ "w": width,
570
+ "wMax": wMax,
571
+ "wMin": wMin,
572
+ "h": h,
573
+ "hMax": hMax,
574
+ "hMin": hMin,
575
+ "shadow": true,
576
+ "ref": this.scrollAreaRef,
577
+ "container": this.tableContainerRef,
578
+ "styles": scrollStyles,
579
+ "onScroll": this.handleScroll,
580
+ "disableAutofocusToContent": true
581
+ }), /*#__PURE__*/React.createElement(_baseComponents.ScrollArea.Container, {
582
+ tabIndex: -1
583
+ // @ts-ignore
584
+ ,
585
+ scrollDirection: scrollDirection
586
+ // @ts-ignore
587
+ ,
588
+ loading: loading,
589
+ headerHeight: "".concat(headerHeight, "px")
590
+ }, /*#__PURE__*/React.createElement(SDataTable, _ref2.cn("SDataTable", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
591
+ "ref": (0, _ref10.forkRef)(this.tableRef, this.tableContainerRef),
592
+ "role": 'grid',
593
+ "onKeyDown": this.handleKeyDown,
594
+ "onMouseMove": this.handleMouseMove,
595
+ "tabIndex": 0,
596
+ "onFocus": this.handleFocus,
597
+ "onBlur": this.handleBlur,
598
+ "aria-rowcount": this.totalRows,
599
+ "aria-colcount": this.columns.length,
600
+ "gridTemplateColumns": gridTemplateColumns.join(' '),
601
+ "gridTemplateAreas": gridTemplateAreas.join(' '),
602
+ "gridTemplateRows": gridTemplateRows,
603
+ "w": '100%',
604
+ "use:data": undefined,
605
+ "use:w": undefined,
606
+ "use:wMax": undefined,
607
+ "use:wMin": undefined,
608
+ "use:h": undefined,
609
+ "use:hMax": undefined,
610
+ "use:hMin": undefined
611
+ }, _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 && !loading && /*#__PURE__*/React.createElement(_baseComponents.ScrollArea.Bar, {
612
+ orientation: "horizontal",
613
+ top: topOffset - SCROLL_BAR_HEIGHT,
614
+ zIndex: 10
615
+ }), !loading && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_baseComponents.ScrollArea.Bar, {
616
+ orientation: "horizontal",
617
+ zIndex: 10
618
+ }), /*#__PURE__*/React.createElement(_baseComponents.ScrollArea.Bar, {
619
+ orientation: "vertical",
620
+ zIndex: 10
621
+ })), selectedRows !== undefined && /*#__PURE__*/React.createElement(_baseComponents.ScreenReaderOnly, _ref2.cn("ScreenReaderOnly", {
622
+ "aria-live": 'polite',
623
+ "role": 'status'
624
+ }), this.state.selectAllMessage));
625
+ }
626
+ }, {
627
+ key: "calculateColumns",
628
+ value: function calculateColumns() {
629
+ var _this3 = this;
630
+ var _this$props = this.props,
631
+ children = _this$props.children,
632
+ data = _this$props.data,
633
+ selectedRows = _this$props.selectedRows;
634
+ var HeadComponent = (0, _findComponent["default"])(children, ['Head']);
635
+ this.hasGroups = (0, _findComponent["default"])(HeadComponent.props.children, ['Head.Group']) !== undefined;
636
+ var columnIndex = 0;
637
+ var groupIndex = 0;
638
+ var gridColumnIndex = selectedRows ? 2 : 1;
639
+ var calculateGridTemplateColumn = this.calculateGridTemplateColumn.bind(this);
640
+ var columns = [];
641
+ if (selectedRows) {
642
+ var column = {
643
+ name: SELECT_ALL.toString(),
644
+ // @ts-ignore
645
+ ref: function ref(node) {
646
+ if (node) {
647
+ var calculatedWidth = node.getBoundingClientRect().width;
648
+ var calculatedHeight = node.getBoundingClientRect().height;
649
+ column.calculatedWidth = calculatedWidth;
650
+ column.calculatedHeight = calculatedHeight;
651
+ }
652
+ this.ref.current = node;
653
+ },
654
+ gridColumnWidth: '40px',
655
+ calculatedWidth: 0,
656
+ calculatedHeight: 0,
657
+ alignItems: 'flex-start'
658
+ };
659
+ columns.push(column);
660
+ }
661
+ var makeColumn = function makeColumn(columnElement, parent, isFirst, isLast) {
662
+ var _columnElement$props$, _ref3, _columnElement$props$2;
663
+ 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;
664
+ 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;
665
+ var column = {
666
+ name: columnElement.props.name,
667
+ // @ts-ignore
668
+ ref: function ref(node) {
669
+ if (node) {
670
+ var calculatedWidth = node.getBoundingClientRect().width;
671
+ var calculatedHeight = node.getBoundingClientRect().height;
672
+ column.calculatedWidth = calculatedWidth;
673
+ column.calculatedHeight = calculatedHeight;
674
+ }
675
+ this.ref.current = node;
676
+ },
677
+ gridColumnWidth: calculateGridTemplateColumn(columnElement),
678
+ fixed: (_columnElement$props$ = columnElement.props.fixed) !== null && _columnElement$props$ !== void 0 ? _columnElement$props$ : parent === null || parent === void 0 ? void 0 : parent.props.fixed,
679
+ calculatedWidth: 0,
680
+ calculatedHeight: 0,
681
+ borders: (_ref3 = (_columnElement$props$2 = columnElement.props.borders) !== null && _columnElement$props$2 !== void 0 ? _columnElement$props$2 : leftBordersFromParent) !== null && _ref3 !== void 0 ? _ref3 : rightBordersFromParent,
682
+ parent: parent,
683
+ flexWrap: columnElement.props.flexWrap,
684
+ alignItems: columnElement.props.alignItems,
685
+ alignContent: columnElement.props.alignContent,
686
+ justifyContent: columnElement.props.justifyContent
687
+ };
688
+ return column;
689
+ };
690
+ var childIsColumn = function childIsColumn(child) {
691
+ return child.type === _Head.Head.Column;
692
+ };
693
+ var childIsGroup = function childIsGroup(child) {
694
+ return child.type === _Head.Head.Group;
695
+ };
696
+ React.Children.forEach(HeadComponent.props.children, function (child, i) {
697
+ if (! /*#__PURE__*/React.isValidElement(child)) return;
698
+ if (childIsColumn(child)) {
699
+ var col = makeColumn(child);
700
+ col.gridArea = "1 / ".concat(gridColumnIndex, " / ").concat(_this3.hasGroups ? '3' : '2', " / ").concat(gridColumnIndex + 1);
701
+ columnIndex++;
702
+ gridColumnIndex++;
703
+ columns.push(col);
704
+ } else if (childIsGroup(child)) {
705
+ var Group = child;
706
+ var childCount = React.Children.count(child.props.children);
707
+ var initGridColumn = gridColumnIndex;
708
+ React.Children.forEach(child.props.children, function (child, j) {
709
+ if ((child === null || child === void 0 ? void 0 : child.type) === _Head.Head.Column) {
710
+ var isFirst = j === 0;
711
+ var isLast = j === childCount - 1;
712
+ var _col = makeColumn(child, Group, isFirst, isLast);
713
+ if (i === 0 && j === 0 && data.some(function (d) {
714
+ return d[ACCORDION];
715
+ })) {
716
+ gridColumnIndex++;
717
+ _col.gridArea = "2 / ".concat(gridColumnIndex - 1, " / 3 / ").concat(gridColumnIndex + 1);
718
+ } else {
719
+ _col.gridArea = "2 / ".concat(gridColumnIndex, " / 3 / ").concat(gridColumnIndex + 1);
720
+ }
721
+ _col.gridArea = "2 / ".concat(gridColumnIndex, " / 3 / ").concat(gridColumnIndex + 1);
722
+ columnIndex++;
723
+ gridColumnIndex++;
724
+ columns.push(_col);
725
+ }
726
+ });
727
+ _this3.gridAreaGroupMap.set(groupIndex, "1 / ".concat(initGridColumn, " / 2 / ").concat(gridColumnIndex));
728
+ groupIndex++;
729
+ }
730
+ });
731
+ return columns.filter(Boolean);
732
+ }
733
+ }, {
734
+ key: "calculateColumnsFromConfig",
735
+ value: function calculateColumnsFromConfig() {
736
+ var _this4 = this;
737
+ var _this$props2 = this.props,
738
+ columns = _this$props2.columns,
739
+ data = _this$props2.data,
740
+ selectedRows = _this$props2.selectedRows;
741
+ this.hasGroups = columns.some(function (column) {
742
+ return 'columns' in column;
743
+ });
744
+ var columnIndex = 0;
745
+ var groupIndex = 0;
746
+ var gridColumnIndex = selectedRows ? 2 : 1;
747
+ var calculateGridTemplateColumn = this.calculateGridTemplateColumn.bind(this);
748
+ var calculatedColumns = [];
749
+ var treeColumns = [];
750
+ if (selectedRows) {
751
+ var column = {
752
+ name: SELECT_ALL.toString(),
753
+ // @ts-ignore
754
+ ref: function ref(node) {
755
+ if (node) {
756
+ var calculatedWidth = node.getBoundingClientRect().width;
757
+ var calculatedHeight = node.getBoundingClientRect().height;
758
+ column.calculatedWidth = calculatedWidth;
759
+ column.calculatedHeight = calculatedHeight;
760
+ }
761
+ this.ref.current = node;
762
+ },
763
+ gridColumnWidth: '40px',
764
+ calculatedWidth: 0,
765
+ calculatedHeight: 0,
766
+ alignItems: 'flex-start'
767
+ };
768
+ calculatedColumns.push(column);
769
+ }
770
+ var makeColumn = function makeColumn(columnElement, parent, isFirst, isLast) {
771
+ var _columnElement$fixed, _ref4, _columnElement$border;
772
+ 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;
773
+ 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;
774
+ var column = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, columnElement), {}, {
775
+ name: childIsColumn(columnElement) ? columnElement.name : '',
776
+ // @ts-ignore
777
+ ref: function ref(node) {
778
+ var _columnElement$ref;
779
+ if (node) {
780
+ var calculatedWidth = node.getBoundingClientRect().width;
781
+ var calculatedHeight = node.getBoundingClientRect().height;
782
+ column.calculatedWidth = calculatedWidth;
783
+ column.calculatedHeight = calculatedHeight;
784
+ }
785
+ if (childIsColumn(columnElement) && (_columnElement$ref = columnElement.ref) !== null && _columnElement$ref !== void 0 && _columnElement$ref.hasOwnProperty('current')) {
786
+ // @ts-ignore
787
+ columnElement.ref.current = node;
788
+ }
789
+ if (this !== null && this !== void 0 && this.ref) {
790
+ this.ref.current = node;
791
+ }
792
+ },
793
+ gridColumnWidth: childIsColumn(columnElement) ? calculateGridTemplateColumn(columnElement) : '',
794
+ fixed: (_columnElement$fixed = columnElement.fixed) !== null && _columnElement$fixed !== void 0 ? _columnElement$fixed : parent === null || parent === void 0 ? void 0 : parent.fixed,
795
+ calculatedWidth: 0,
796
+ calculatedHeight: 0,
797
+ borders: (_ref4 = (_columnElement$border = columnElement.borders) !== null && _columnElement$border !== void 0 ? _columnElement$border : leftBordersFromParent) !== null && _ref4 !== void 0 ? _ref4 : rightBordersFromParent,
798
+ parent: parent
799
+ });
800
+ return column;
801
+ };
802
+ var childIsColumn = function childIsColumn(child) {
803
+ return !('columns' in child);
804
+ };
805
+ var childIsGroup = function childIsGroup(child) {
806
+ return 'columns' in child;
807
+ };
808
+ columns.forEach(function (child, i) {
809
+ if (childIsColumn(child)) {
810
+ var col = makeColumn(child);
811
+ col.gridArea = "1 / ".concat(gridColumnIndex, " / ").concat(_this4.hasGroups ? '3' : '2', " / ").concat(gridColumnIndex + 1);
812
+ columnIndex++;
813
+ gridColumnIndex++;
814
+ calculatedColumns.push(col);
815
+ treeColumns.push(col);
816
+ } else if (childIsGroup(child)) {
817
+ var Group = makeColumn(child);
818
+ var childCount = child.columns.length;
819
+ var initGridColumn = gridColumnIndex;
820
+ Group.columns = [];
821
+ Group.children = child.children;
822
+ child.columns.forEach(function (child, j) {
823
+ var _Group$columns;
824
+ var isFirst = j === 0;
825
+ var isLast = j === childCount - 1;
826
+ var col = makeColumn(child, Group, isFirst, isLast);
827
+ if (i === 0 && j === 0 && data.some(function (d) {
828
+ return d[ACCORDION];
829
+ })) {
830
+ gridColumnIndex++;
831
+ col.gridArea = "2 / ".concat(gridColumnIndex - 1, " / 3 / ").concat(gridColumnIndex + 1);
832
+ } else {
833
+ col.gridArea = "2 / ".concat(gridColumnIndex, " / 3 / ").concat(gridColumnIndex + 1);
834
+ }
835
+ col.gridArea = "2 / ".concat(gridColumnIndex, " / 3 / ").concat(gridColumnIndex + 1);
836
+ columnIndex++;
837
+ gridColumnIndex++;
838
+ calculatedColumns.push(col);
839
+ (_Group$columns = Group.columns) === null || _Group$columns === void 0 ? void 0 : _Group$columns.push(col);
840
+ });
841
+ treeColumns.push(Group);
842
+ _this4.gridAreaGroupMap.set(groupIndex, "1 / ".concat(initGridColumn, " / 2 / ").concat(gridColumnIndex));
843
+ groupIndex++;
844
+ }
845
+ });
846
+ return [calculatedColumns, treeColumns];
847
+ }
848
+ }, {
849
+ key: "calculateRows",
850
+ value: function calculateRows() {
851
+ var _this5 = this;
852
+ var columns = this.columns;
853
+ // @ts-ignore
854
+ var _this$props3 = this.props,
855
+ data = _this$props3.data,
856
+ uid = _this$props3.uid;
857
+ var rows = [];
858
+ var columnNames = columns.map(function (column) {
859
+ return column.name;
860
+ });
861
+ var rowIndex = 0;
862
+ var id = 100000000; // need this for gen keys by toString(36)
863
+
864
+ var makeDtRow = function makeDtRow(row, excludeColumns) {
865
+ var _Object$entries$reduc;
866
+ var columns = new Set(columnNames);
867
+ var dtRow = Object.entries(row).reduce(function (acc, _ref5) {
868
+ var _ref6 = (0, _slicedToArray2["default"])(_ref5, 2),
869
+ key = _ref6[0],
870
+ value = _ref6[1];
871
+ var columnsToRow = key.split(_this5.columnsSplitter);
872
+ if (columnsToRow.length === 1) {
873
+ acc[key] = value !== null && value !== void 0 ? value : '';
874
+ columns["delete"](key);
875
+ } else {
876
+ acc[columnsToRow[0]] = new _MergedCells.MergedColumnsCell(value, {
877
+ dataKey: key,
878
+ size: columnsToRow.length
879
+ });
880
+ columnsToRow.forEach(function (value) {
881
+ columns["delete"](value);
882
+ });
883
+ }
884
+ if (row[ACCORDION]) {
885
+ acc[ACCORDION] = row[ACCORDION];
886
+ }
887
+ return acc;
888
+ }, (_Object$entries$reduc = {}, (0, _defineProperty2["default"])(_Object$entries$reduc, UNIQ_ROW_KEY, row[UNIQ_ROW_KEY] || "".concat(uid, "_").concat((rowIndex + id).toString(36))), (0, _defineProperty2["default"])(_Object$entries$reduc, ROW_INDEX, rowIndex), _Object$entries$reduc));
889
+ excludeColumns === null || excludeColumns === void 0 ? void 0 : excludeColumns.forEach(function (value) {
890
+ columns["delete"](value);
891
+ });
892
+ if (columns.size > 0) {
893
+ columns.forEach(function (value) {
894
+ dtRow[value] = '';
895
+ });
896
+ }
897
+ return dtRow;
898
+ };
899
+ data.forEach(function (row) {
900
+ var groupedRows = row[ROW_GROUP];
901
+ if (groupedRows) {
902
+ var _Object$entries$reduc2;
903
+ var innerRows = [];
904
+ var groupedKeys = [];
905
+ var groupedRowData = Object.entries(row).reduce(function (acc, _ref7) {
906
+ var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
907
+ key = _ref8[0],
908
+ value = _ref8[1];
909
+ acc[key] = new _MergedCells.MergedRowsCell(value, groupedRows.length);
910
+ groupedKeys.push(key);
911
+ return acc;
912
+ }, (_Object$entries$reduc2 = {}, (0, _defineProperty2["default"])(_Object$entries$reduc2, UNIQ_ROW_KEY, ''), (0, _defineProperty2["default"])(_Object$entries$reduc2, ROW_INDEX, -1), _Object$entries$reduc2));
913
+ groupedRows.forEach(function (childRow, index) {
914
+ var dtRow;
915
+ if (index === 0) {
916
+ var rowData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, childRow), groupedRowData);
917
+ dtRow = makeDtRow(rowData);
918
+ } else {
919
+ dtRow = makeDtRow(childRow, groupedKeys);
920
+ }
921
+ innerRows.push(dtRow);
922
+ rowIndex++;
923
+ });
924
+ rows.push(innerRows);
925
+ } else {
926
+ var dtRow = makeDtRow(row);
927
+ rows.push(dtRow);
928
+ rowIndex++;
929
+ }
930
+ });
931
+ return rows;
932
+ }
933
+ }, {
934
+ key: "calculateGridTemplateColumn",
935
+ value: function calculateGridTemplateColumn(c) {
936
+ var _ref9;
937
+ return (_ref9 = /*#__PURE__*/React.isValidElement(c) ? c.props.gtcWidth : c.gtcWidth) !== null && _ref9 !== void 0 ? _ref9 : this.props.defaultGridTemplateColumnWidth;
938
+ }
939
+ }, {
940
+ key: "getHeaderHeight",
941
+ value: function getHeaderHeight() {
942
+ var _this$headerRef$curre;
943
+ var header = (_this$headerRef$curre = this.headerRef.current) === null || _this$headerRef$curre === void 0 ? void 0 : _this$headerRef$curre.children;
944
+ var height = 0;
945
+ 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++) {
946
+ var _header$length, _header$item;
947
+ 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;
948
+ if (columnHeight) {
949
+ height = columnHeight;
950
+ break;
951
+ }
952
+ }
953
+ return height;
954
+ }
955
+ }]);
956
+ return DataTableRoot;
957
+ }(_core.Component);
958
+ (0, _defineProperty2["default"])(DataTableRoot, "displayName", 'DataTable');
959
+ (0, _defineProperty2["default"])(DataTableRoot, "style", style);
960
+ (0, _defineProperty2["default"])(DataTableRoot, "enhance", [(0, _uniqueID["default"])(), (0, _i18nEnhance["default"])(_intergalacticDynamicLocales.localizedMessages)]);
961
+ (0, _defineProperty2["default"])(DataTableRoot, "defaultProps", {
962
+ use: 'primary',
963
+ defaultGridTemplateColumnWidth: 'auto',
964
+ defaultExpandedRows: new Set(),
965
+ defaultSelectedRows: undefined,
966
+ h: 'fit-content',
967
+ renderEmptyData: function renderEmptyData() {
968
+ return /*#__PURE__*/React.createElement(_widgetEmpty.NoData, {
969
+ py: 10,
970
+ type: 'nothing-found',
971
+ description: '',
972
+ w: '100%'
973
+ });
974
+ }
975
+ });
976
+ var DataTable = (0, _core.createComponent)(DataTableRoot, {
977
+ Head: _Head.Head,
978
+ Body: _Body.Body
979
+ });
980
+ exports.DataTable = DataTable;
981
+ //# sourceMappingURL=DataTable.js.map