@semcore/data-table 16.0.0-prerelease.2 → 16.0.0-prerelease.21

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