@semcore/data-table 16.0.0-prerelease.16 → 16.0.0-prerelease.17
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.
- package/lib/cjs/components/Body/Body.js +114 -100
- package/lib/cjs/components/Body/Body.js.map +1 -1
- package/lib/cjs/components/Body/Body.types.js.map +1 -1
- package/lib/cjs/components/Body/Cell.js +67 -30
- package/lib/cjs/components/Body/Cell.js.map +1 -1
- package/lib/cjs/components/Body/Cell.types.js.map +1 -1
- package/lib/cjs/components/Body/MergedCells.js +9 -5
- package/lib/cjs/components/Body/MergedCells.js.map +1 -1
- package/lib/cjs/components/Body/Row.js +72 -113
- package/lib/cjs/components/Body/Row.js.map +1 -1
- package/lib/cjs/components/Body/Row.types.js +2 -0
- package/lib/cjs/components/Body/Row.types.js.map +1 -1
- package/lib/cjs/components/Body/style.shadow.css +75 -36
- package/lib/cjs/components/DataTable/DataTable.js +142 -93
- package/lib/cjs/components/DataTable/DataTable.js.map +1 -1
- package/lib/cjs/components/DataTable/DataTable.types.js +2 -0
- package/lib/cjs/components/DataTable/DataTable.types.js.map +1 -1
- package/lib/cjs/components/Head/Column.js +54 -33
- package/lib/cjs/components/Head/Column.js.map +1 -1
- package/lib/cjs/components/Head/Column.types.js.map +1 -1
- package/lib/cjs/components/Head/Group.js +24 -33
- package/lib/cjs/components/Head/Group.js.map +1 -1
- package/lib/cjs/components/Head/Group.type.js.map +1 -1
- package/lib/cjs/components/Head/Head.js +23 -28
- package/lib/cjs/components/Head/Head.js.map +1 -1
- package/lib/cjs/components/Head/style.shadow.css +16 -14
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/style/scroll-shadows.shadow.css +13 -6
- package/lib/es6/components/Body/Body.js +114 -100
- package/lib/es6/components/Body/Body.js.map +1 -1
- package/lib/es6/components/Body/Body.types.js.map +1 -1
- package/lib/es6/components/Body/Cell.js +67 -30
- package/lib/es6/components/Body/Cell.js.map +1 -1
- package/lib/es6/components/Body/Cell.types.js.map +1 -1
- package/lib/es6/components/Body/MergedCells.js +9 -5
- package/lib/es6/components/Body/MergedCells.js.map +1 -1
- package/lib/es6/components/Body/Row.js +72 -113
- package/lib/es6/components/Body/Row.js.map +1 -1
- package/lib/es6/components/Body/Row.types.js +1 -1
- package/lib/es6/components/Body/Row.types.js.map +1 -1
- package/lib/es6/components/Body/style.shadow.css +75 -36
- package/lib/es6/components/DataTable/DataTable.js +142 -93
- package/lib/es6/components/DataTable/DataTable.js.map +1 -1
- package/lib/es6/components/DataTable/DataTable.types.js +6 -1
- package/lib/es6/components/DataTable/DataTable.types.js.map +1 -1
- package/lib/es6/components/Head/Column.js +52 -31
- package/lib/es6/components/Head/Column.js.map +1 -1
- package/lib/es6/components/Head/Column.types.js.map +1 -1
- package/lib/es6/components/Head/Group.js +24 -33
- package/lib/es6/components/Head/Group.js.map +1 -1
- package/lib/es6/components/Head/Group.type.js.map +1 -1
- package/lib/es6/components/Head/Head.js +24 -29
- package/lib/es6/components/Head/Head.js.map +1 -1
- package/lib/es6/components/Head/style.shadow.css +16 -14
- package/lib/es6/index.js.map +1 -1
- package/lib/es6/style/scroll-shadows.shadow.css +13 -6
- package/lib/esm/components/Body/Body.mjs +110 -98
- package/lib/esm/components/Body/Cell.mjs +64 -31
- package/lib/esm/components/Body/MergedCells.mjs +9 -5
- package/lib/esm/components/Body/Row.mjs +67 -109
- package/lib/esm/components/DataTable/DataTable.mjs +122 -43
- package/lib/esm/components/Head/Column.mjs +52 -32
- package/lib/esm/components/Head/Group.mjs +25 -34
- package/lib/esm/components/Head/Head.mjs +25 -30
- package/lib/esm/utils.mjs +0 -9
- package/lib/types/components/Body/Body.types.d.ts +12 -8
- package/lib/types/components/Body/Cell.types.d.ts +6 -6
- package/lib/types/components/Body/MergedCells.d.ts +8 -3
- package/lib/types/components/Body/Row.types.d.ts +19 -10
- package/lib/types/components/DataTable/DataTable.types.d.ts +16 -4
- package/lib/types/components/Head/Column.d.ts +2 -1
- package/lib/types/components/Head/Column.types.d.ts +1 -0
- package/lib/types/components/Head/Group.d.ts +0 -1
- package/lib/types/components/Head/Group.type.d.ts +4 -1
- package/lib/types/components/Head/Head.d.ts +6 -3
- package/lib/types/index.d.ts +2 -2
- package/package.json +7 -7
- package/lib/cjs/Body.js +0 -476
- package/lib/cjs/Body.js.map +0 -1
- package/lib/cjs/DataTable.js +0 -622
- package/lib/cjs/DataTable.js.map +0 -1
- package/lib/cjs/Head.js +0 -399
- package/lib/cjs/Head.js.map +0 -1
- package/lib/cjs/style/data-table.shadow.css +0 -394
- package/lib/cjs/types.js +0 -4
- package/lib/cjs/types.js.map +0 -1
- package/lib/es6/Body.js +0 -469
- package/lib/es6/Body.js.map +0 -1
- package/lib/es6/DataTable.js +0 -614
- package/lib/es6/DataTable.js.map +0 -1
- package/lib/es6/Head.js +0 -391
- package/lib/es6/Head.js.map +0 -1
- package/lib/es6/style/data-table.shadow.css +0 -394
- package/lib/es6/types.js +0 -2
- package/lib/es6/types.js.map +0 -1
- package/lib/esm/Head.mjs +0 -369
- package/lib/types/Body.d.ts +0 -61
- package/lib/types/DataTable.d.ts +0 -205
- package/lib/types/Head.d.ts +0 -45
- package/lib/types/types.d.ts +0 -73
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
4
|
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
4
5
|
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
5
6
|
import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
|
|
@@ -12,7 +13,6 @@ import { ScrollArea, Box } from "@semcore/base-components";
|
|
|
12
13
|
import { Head } from "../Head/Head.mjs";
|
|
13
14
|
import { Body } from "../Body/Body.mjs";
|
|
14
15
|
import { hasFocusableIn, isFocusInside } from "@semcore/core/lib/utils/use/useFocusLock";
|
|
15
|
-
import syncScroll from "@semcore/core/lib/utils/syncScroll";
|
|
16
16
|
import { getScrollOffsetValue } from "../../utils.mjs";
|
|
17
17
|
import findComponent from "@semcore/core/lib/utils/findComponent";
|
|
18
18
|
import { localizedMessages } from "../../translations/__intergalactic-dynamic-locales.mjs";
|
|
@@ -20,6 +20,7 @@ import i18nEnhance from "@semcore/core/lib/utils/enhances/i18nEnhance";
|
|
|
20
20
|
import uniqueIDEnhancement from "@semcore/core/lib/utils/uniqueID";
|
|
21
21
|
import { MergedRowsCell, MergedColumnsCell } from "../Body/MergedCells.mjs";
|
|
22
22
|
import { forkRef } from "@semcore/core/lib/utils/ref";
|
|
23
|
+
import { hasParent } from "@semcore/core/lib/utils/hasParent";
|
|
23
24
|
var style = (
|
|
24
25
|
/*__reshadow_css_start__*/
|
|
25
26
|
(sstyled.insert(
|
|
@@ -38,16 +39,17 @@ var scrollStyles = (
|
|
|
38
39
|
/*__reshadow_css_start__*/
|
|
39
40
|
(sstyled.insert(
|
|
40
41
|
/*__inner_css_start__*/
|
|
41
|
-
".
|
|
42
|
-
"
|
|
42
|
+
".___SScrollArea_14dz4_gg_{width:-moz-fit-content;width:fit-content}.___SScrollArea_14dz4_gg_ .___SShadowVertical_14dz4_gg_:before{display:none}.___SScrollArea_14dz4_gg_ .___SShadowHorizontal_14dz4_gg_:after,.___SScrollArea_14dz4_gg_ .___SShadowHorizontal_14dz4_gg_:before,.___SScrollArea_14dz4_gg_ .___SShadowVertical_14dz4_gg_:after{z-index:2}",
|
|
43
|
+
"14dz4_gg_"
|
|
43
44
|
), {
|
|
44
|
-
"__SScrollArea": "
|
|
45
|
-
"
|
|
46
|
-
"
|
|
45
|
+
"__SScrollArea": "___SScrollArea_14dz4_gg_",
|
|
46
|
+
"__SShadowVertical": "___SShadowVertical_14dz4_gg_",
|
|
47
|
+
"__SShadowHorizontal": "___SShadowHorizontal_14dz4_gg_"
|
|
47
48
|
})
|
|
48
49
|
);
|
|
49
50
|
var ACCORDION = Symbol("accordion");
|
|
50
51
|
var ROW_GROUP = Symbol("ROW_GROUP");
|
|
52
|
+
var SCROLL_BAR_HEIGHT = 12;
|
|
51
53
|
var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
52
54
|
_inherits(DataTableRoot2, _Component);
|
|
53
55
|
var _super = _createSuper(DataTableRoot2);
|
|
@@ -61,8 +63,7 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
61
63
|
_defineProperty(_assertThisInitialized(_this), "tableContainerRef", /* @__PURE__ */ React.createRef());
|
|
62
64
|
_defineProperty(_assertThisInitialized(_this), "tableRef", /* @__PURE__ */ React.createRef());
|
|
63
65
|
_defineProperty(_assertThisInitialized(_this), "headerRef", /* @__PURE__ */ React.createRef());
|
|
64
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
65
|
-
_defineProperty(_assertThisInitialized(_this), "scrollHeadRef", void 0);
|
|
66
|
+
_defineProperty(_assertThisInitialized(_this), "spinnerRef", /* @__PURE__ */ React.createRef());
|
|
66
67
|
_defineProperty(_assertThisInitialized(_this), "gridAreaGroupMap", /* @__PURE__ */ new Map());
|
|
67
68
|
_defineProperty(_assertThisInitialized(_this), "getRow", function(index) {
|
|
68
69
|
var _this$tableRef$curren;
|
|
@@ -75,6 +76,16 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
75
76
|
});
|
|
76
77
|
return hasFocusable;
|
|
77
78
|
});
|
|
79
|
+
_defineProperty(_assertThisInitialized(_this), "onExpandRow", function(expandedRowIndex) {
|
|
80
|
+
var expandedRows = _this.asProps.expandedRows;
|
|
81
|
+
if (expandedRows !== null && expandedRows !== void 0 && expandedRows.includes(expandedRowIndex)) {
|
|
82
|
+
_this.handlers.expandedRows(expandedRows.filter(function(row) {
|
|
83
|
+
return row !== expandedRowIndex;
|
|
84
|
+
}));
|
|
85
|
+
} else {
|
|
86
|
+
_this.handlers.expandedRows([].concat(_toConsumableArray(expandedRows), [expandedRowIndex]));
|
|
87
|
+
}
|
|
88
|
+
});
|
|
78
89
|
_defineProperty(_assertThisInitialized(_this), "changeFocusCell", function(rowIndex, colIndex, direction) {
|
|
79
90
|
var _this$tableRef$curren2, _this$tableRef$curren3;
|
|
80
91
|
var hasFocusable = _this.hasFocusableInHeader();
|
|
@@ -170,7 +181,11 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
170
181
|
}
|
|
171
182
|
});
|
|
172
183
|
_defineProperty(_assertThisInitialized(_this), "handleFocus", function(e) {
|
|
173
|
-
if (
|
|
184
|
+
if (_this.asProps.loading) {
|
|
185
|
+
var _this$spinnerRef$curr;
|
|
186
|
+
(_this$spinnerRef$curr = _this.spinnerRef.current) === null || _this$spinnerRef$curr === void 0 ? void 0 : _this$spinnerRef$curr.focus();
|
|
187
|
+
e.currentTarget.setAttribute("tabIndex", "-1");
|
|
188
|
+
} else if ((!e.relatedTarget || !isFocusInside(e.currentTarget, e.relatedTarget)) && lastInteraction.isKeyboard()) {
|
|
174
189
|
var _row;
|
|
175
190
|
if (_this.focusedCell[0] === -1 && _this.focusedCell[1] === -1) {
|
|
176
191
|
_this.initFocusableCell();
|
|
@@ -183,7 +198,13 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
183
198
|
}
|
|
184
199
|
var cell = (_row = row) === null || _row === void 0 ? void 0 : _row.querySelectorAll("[role=gridcell], [role=columnheader]").item(_this.focusedCell[1]);
|
|
185
200
|
cell === null || cell === void 0 ? void 0 : cell.removeAttribute("inert");
|
|
186
|
-
cell instanceof HTMLElement
|
|
201
|
+
if (cell instanceof HTMLElement) {
|
|
202
|
+
if (hasParent(e.target, cell)) {
|
|
203
|
+
e.target.focus();
|
|
204
|
+
} else {
|
|
205
|
+
cell.focus();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
187
208
|
e.currentTarget.setAttribute("tabIndex", "-1");
|
|
188
209
|
}
|
|
189
210
|
});
|
|
@@ -198,13 +219,17 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
198
219
|
_defineProperty(_assertThisInitialized(_this), "handleMouseMove", function() {
|
|
199
220
|
_this.setInert(false);
|
|
200
221
|
});
|
|
201
|
-
var createRef = syncScroll();
|
|
202
|
-
_this.scrollBodyRef = createRef("body");
|
|
203
|
-
_this.scrollHeadRef = createRef("head");
|
|
204
222
|
_this.columns = _this.calculateColumns();
|
|
205
223
|
return _this;
|
|
206
224
|
}
|
|
207
225
|
_createClass(DataTableRoot2, [{
|
|
226
|
+
key: "uncontrolledProps",
|
|
227
|
+
value: function uncontrolledProps() {
|
|
228
|
+
return {
|
|
229
|
+
expandedRows: []
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}, {
|
|
208
233
|
key: "componentDidMount",
|
|
209
234
|
value: function componentDidMount() {
|
|
210
235
|
this.forceUpdate();
|
|
@@ -212,8 +237,19 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
212
237
|
}, {
|
|
213
238
|
key: "totalRows",
|
|
214
239
|
get: function get() {
|
|
215
|
-
var
|
|
216
|
-
|
|
240
|
+
var _this2 = this;
|
|
241
|
+
var _this$asProps = this.asProps, totalRows = _this$asProps.totalRows, expandedRows = _this$asProps.expandedRows;
|
|
242
|
+
var expandedRowsCount = expandedRows === null || expandedRows === void 0 ? void 0 : expandedRows.reduce(function(acc, rowIndex) {
|
|
243
|
+
var dtRow = _this2.calculateRows().flat()[rowIndex];
|
|
244
|
+
var expandedRows2 = dtRow[ACCORDION];
|
|
245
|
+
if (Array.isArray(expandedRows2)) {
|
|
246
|
+
acc = acc + expandedRows2.length;
|
|
247
|
+
} else {
|
|
248
|
+
acc = acc + 1;
|
|
249
|
+
}
|
|
250
|
+
return acc;
|
|
251
|
+
}, 0);
|
|
252
|
+
return (totalRows !== null && totalRows !== void 0 ? totalRows : this.calculateRows().length) + expandedRowsCount;
|
|
217
253
|
}
|
|
218
254
|
}, {
|
|
219
255
|
key: "gridSettings",
|
|
@@ -232,7 +268,7 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
232
268
|
}, {
|
|
233
269
|
key: "getHeadProps",
|
|
234
270
|
value: function getHeadProps() {
|
|
235
|
-
var _this$
|
|
271
|
+
var _this$asProps2 = this.asProps, use = _this$asProps2.use, compact = _this$asProps2.compact, sort = _this$asProps2.sort, onSortChange = _this$asProps2.onSortChange, getI18nText = _this$asProps2.getI18nText, uid = _this$asProps2.uid;
|
|
236
272
|
var _this$gridSettings = this.gridSettings, gridTemplateColumns = _this$gridSettings.gridTemplateColumns, gridTemplateAreas = _this$gridSettings.gridTemplateAreas;
|
|
237
273
|
return {
|
|
238
274
|
columns: this.columns,
|
|
@@ -253,7 +289,7 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
253
289
|
key: "getBodyProps",
|
|
254
290
|
value: function getBodyProps() {
|
|
255
291
|
var _header$children;
|
|
256
|
-
var _this$
|
|
292
|
+
var _this$asProps3 = this.asProps, use = _this$asProps3.use, compact = _this$asProps3.compact, loading = _this$asProps3.loading, getI18nText = _this$asProps3.getI18nText, expandedRows = _this$asProps3.expandedRows;
|
|
257
293
|
var rows = this.calculateRows();
|
|
258
294
|
var _this$gridSettings2 = this.gridSettings, gridTemplateColumns = _this$gridSettings2.gridTemplateColumns, gridTemplateAreas = _this$gridSettings2.gridTemplateAreas;
|
|
259
295
|
var header = this.headerRef.current;
|
|
@@ -267,17 +303,17 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
267
303
|
return {
|
|
268
304
|
columns: this.columns,
|
|
269
305
|
rows,
|
|
306
|
+
flatRows: rows.flat(),
|
|
270
307
|
use,
|
|
271
|
-
scrollRef: this.scrollBodyRef,
|
|
272
|
-
headerRows: this.columns.some(function(column) {
|
|
273
|
-
return Boolean(column.parent);
|
|
274
|
-
}) ? 2 : 1,
|
|
275
308
|
compact: Boolean(compact),
|
|
276
309
|
gridTemplateColumns,
|
|
277
310
|
gridTemplateAreas,
|
|
278
311
|
loading,
|
|
279
312
|
headerHeight,
|
|
280
|
-
getI18nText
|
|
313
|
+
getI18nText,
|
|
314
|
+
expandedRows,
|
|
315
|
+
onExpandRow: this.onExpandRow,
|
|
316
|
+
spinnerRef: this.spinnerRef
|
|
281
317
|
};
|
|
282
318
|
}
|
|
283
319
|
}, {
|
|
@@ -298,17 +334,18 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
298
334
|
value: function render() {
|
|
299
335
|
var _ref = this.asProps, _ref2;
|
|
300
336
|
var SDataTable = Box;
|
|
301
|
-
var _this$
|
|
337
|
+
var _this$asProps4 = this.asProps, Children = _this$asProps4.Children, styles = _this$asProps4.styles, w = _this$asProps4.w, wMax = _this$asProps4.wMax, wMin = _this$asProps4.wMin, h = _this$asProps4.h, hMax = _this$asProps4.hMax, hMin = _this$asProps4.hMin;
|
|
302
338
|
var _getScrollOffsetValue = getScrollOffsetValue(this.columns), _getScrollOffsetValue2 = _slicedToArray(_getScrollOffsetValue, 2), offsetLeftSum = _getScrollOffsetValue2[0], offsetRightSum = _getScrollOffsetValue2[1];
|
|
303
339
|
var _this$gridSettings3 = this.gridSettings, gridTemplateColumns = _this$gridSettings3.gridTemplateColumns, gridTemplateAreas = _this$gridSettings3.gridTemplateAreas;
|
|
304
340
|
var Head2 = findComponent(Children, ["DataTable.Head"]);
|
|
305
|
-
var
|
|
341
|
+
var topOffset = Head2 !== null && Head2 !== void 0 && Head2.props.sticky || Head2 !== null && Head2 !== void 0 && Head2.props.withScrollBar ? this.getTopScrollOffset() : void 0;
|
|
306
342
|
var width = w !== null && w !== void 0 ? w : this.columns.some(function(c) {
|
|
307
343
|
return c.gridColumnWidth === "auto" || c.gridColumnWidth === "1fr";
|
|
308
344
|
}) ? "100%" : void 0;
|
|
309
345
|
return _ref2 = sstyled(styles), /* @__PURE__ */ React.createElement(ScrollArea, _ref2.cn("ScrollArea", {
|
|
310
346
|
"leftOffset": offsetLeftSum,
|
|
311
347
|
"rightOffset": offsetRightSum,
|
|
348
|
+
"topOffset": topOffset,
|
|
312
349
|
"w": width,
|
|
313
350
|
"wMax": wMax,
|
|
314
351
|
"wMin": wMin,
|
|
@@ -340,16 +377,22 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
340
377
|
"use:h": void 0,
|
|
341
378
|
"use:hMax": void 0,
|
|
342
379
|
"use:hMin": void 0
|
|
343
|
-
}, _ref))),
|
|
344
|
-
orientation: "horizontal"
|
|
380
|
+
}, _ref))), /* @__PURE__ */ React.createElement(Children, _ref2.cn("Children", {})))), (Head2 === null || Head2 === void 0 ? void 0 : Head2.props.withScrollBar) && topOffset && /* @__PURE__ */ React.createElement(ScrollArea.Bar, {
|
|
381
|
+
orientation: "horizontal",
|
|
382
|
+
top: topOffset - SCROLL_BAR_HEIGHT,
|
|
383
|
+
zIndex: 3
|
|
345
384
|
}), /* @__PURE__ */ React.createElement(ScrollArea.Bar, {
|
|
346
|
-
orientation: "
|
|
385
|
+
orientation: "horizontal",
|
|
386
|
+
zIndex: 2
|
|
387
|
+
}), /* @__PURE__ */ React.createElement(ScrollArea.Bar, {
|
|
388
|
+
orientation: "vertical",
|
|
389
|
+
zIndex: 2
|
|
347
390
|
}));
|
|
348
391
|
}
|
|
349
392
|
}, {
|
|
350
393
|
key: "calculateColumns",
|
|
351
394
|
value: function calculateColumns() {
|
|
352
|
-
var
|
|
395
|
+
var _this3 = this;
|
|
353
396
|
var _this$props = this.props, children = _this$props.children, data = _this$props.data;
|
|
354
397
|
var HeadComponent = findComponent(children, ["Head"]);
|
|
355
398
|
var hasGroup = findComponent(HeadComponent.props.children, ["Head.Group"]) !== void 0;
|
|
@@ -386,14 +429,20 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
386
429
|
};
|
|
387
430
|
return column;
|
|
388
431
|
};
|
|
432
|
+
var childIsColumn = function childIsColumn2(child) {
|
|
433
|
+
return child.type === Head.Column;
|
|
434
|
+
};
|
|
435
|
+
var childIsGroup = function childIsGroup2(child) {
|
|
436
|
+
return child.type === Head.Group;
|
|
437
|
+
};
|
|
389
438
|
React.Children.forEach(HeadComponent.props.children, function(child, i) {
|
|
390
439
|
if (!/* @__PURE__ */ React.isValidElement(child)) return;
|
|
391
|
-
if (child
|
|
440
|
+
if (childIsColumn(child)) {
|
|
392
441
|
var col = makeColumn(child);
|
|
393
442
|
col.gridArea = "1 / ".concat(gridColumnIndex, " / ").concat(hasGroup ? "3" : "2", " / ").concat(gridColumnIndex + 1);
|
|
394
443
|
gridColumnIndex++;
|
|
395
444
|
columns.push(col);
|
|
396
|
-
} else if (child
|
|
445
|
+
} else if (childIsGroup(child)) {
|
|
397
446
|
var Group = child;
|
|
398
447
|
var childCount = React.Children.count(child.props.children);
|
|
399
448
|
var initGridColumn = gridColumnIndex;
|
|
@@ -415,7 +464,7 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
415
464
|
columns.push(_col);
|
|
416
465
|
}
|
|
417
466
|
});
|
|
418
|
-
|
|
467
|
+
_this3.gridAreaGroupMap.set(groupIndex, "1 / ".concat(initGridColumn, " / 2 / ").concat(gridColumnIndex));
|
|
419
468
|
groupIndex++;
|
|
420
469
|
}
|
|
421
470
|
});
|
|
@@ -424,42 +473,55 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
424
473
|
}, {
|
|
425
474
|
key: "calculateRows",
|
|
426
475
|
value: function calculateRows() {
|
|
427
|
-
var
|
|
476
|
+
var _this4 = this;
|
|
428
477
|
var data = this.asProps.data;
|
|
429
478
|
var rows = [];
|
|
430
|
-
var
|
|
479
|
+
var rowIndex = 0;
|
|
480
|
+
var makeDtRow = function makeDtRow2(row) {
|
|
431
481
|
var dtRow = Object.entries(row).reduce(function(acc, _ref4) {
|
|
432
482
|
var _ref5 = _slicedToArray(_ref4, 2), key = _ref5[0], value = _ref5[1];
|
|
433
|
-
var columnsToRow = key.split(
|
|
483
|
+
var columnsToRow = key.split(_this4.columnsSplitter);
|
|
434
484
|
if (columnsToRow.length === 1) {
|
|
435
|
-
acc[key] = value;
|
|
485
|
+
acc[key] = value !== null && value !== void 0 ? value : "";
|
|
436
486
|
} else {
|
|
437
|
-
acc[columnsToRow[0]] = new MergedColumnsCell(value,
|
|
487
|
+
acc[columnsToRow[0]] = new MergedColumnsCell(value, {
|
|
488
|
+
dataKey: key,
|
|
489
|
+
size: columnsToRow.length
|
|
490
|
+
});
|
|
438
491
|
}
|
|
439
492
|
if (row[ACCORDION]) {
|
|
440
493
|
acc[ACCORDION] = row[ACCORDION];
|
|
441
494
|
}
|
|
442
495
|
return acc;
|
|
443
496
|
}, {});
|
|
444
|
-
|
|
497
|
+
return dtRow;
|
|
445
498
|
};
|
|
446
|
-
data.forEach(function(row
|
|
499
|
+
data.forEach(function(row) {
|
|
447
500
|
var groupedRows = row[ROW_GROUP];
|
|
501
|
+
var fromRow = rowIndex + 2;
|
|
448
502
|
if (groupedRows) {
|
|
503
|
+
var toRow = fromRow + groupedRows.length;
|
|
504
|
+
var innerRows = [];
|
|
449
505
|
groupedRows.forEach(function(childRow, index) {
|
|
506
|
+
var dtRow2;
|
|
450
507
|
if (index === 0) {
|
|
451
508
|
var rowData = _objectSpread(_objectSpread({}, childRow), Object.entries(row).reduce(function(acc, _ref6) {
|
|
452
509
|
var _ref7 = _slicedToArray(_ref6, 2), key = _ref7[0], value = _ref7[1];
|
|
453
|
-
acc[key] = new MergedRowsCell(value,
|
|
510
|
+
acc[key] = new MergedRowsCell(value, [fromRow, toRow]);
|
|
454
511
|
return acc;
|
|
455
512
|
}, {}));
|
|
456
|
-
|
|
513
|
+
dtRow2 = makeDtRow(rowData);
|
|
457
514
|
} else {
|
|
458
|
-
|
|
515
|
+
dtRow2 = makeDtRow(childRow);
|
|
459
516
|
}
|
|
517
|
+
innerRows.push(dtRow2);
|
|
518
|
+
rowIndex++;
|
|
460
519
|
});
|
|
520
|
+
rows.push(innerRows);
|
|
461
521
|
} else {
|
|
462
|
-
|
|
522
|
+
var dtRow = makeDtRow(row);
|
|
523
|
+
rows.push(dtRow);
|
|
524
|
+
rowIndex++;
|
|
463
525
|
}
|
|
464
526
|
});
|
|
465
527
|
return rows;
|
|
@@ -470,6 +532,22 @@ var DataTableRoot = /* @__PURE__ */ function(_Component) {
|
|
|
470
532
|
var _c$props$gtcWidth;
|
|
471
533
|
return (_c$props$gtcWidth = c.props.gtcWidth) !== null && _c$props$gtcWidth !== void 0 ? _c$props$gtcWidth : this.props.defaultGridTemplateColumnWidth;
|
|
472
534
|
}
|
|
535
|
+
}, {
|
|
536
|
+
key: "getTopScrollOffset",
|
|
537
|
+
value: function getTopScrollOffset() {
|
|
538
|
+
var _this$headerRef$curre;
|
|
539
|
+
var header = (_this$headerRef$curre = this.headerRef.current) === null || _this$headerRef$curre === void 0 ? void 0 : _this$headerRef$curre.children;
|
|
540
|
+
var height = 0;
|
|
541
|
+
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++) {
|
|
542
|
+
var _header$length, _header$item;
|
|
543
|
+
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;
|
|
544
|
+
if (columnHeight) {
|
|
545
|
+
height = columnHeight;
|
|
546
|
+
break;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
return height;
|
|
550
|
+
}
|
|
473
551
|
}]);
|
|
474
552
|
return DataTableRoot2;
|
|
475
553
|
}(Component);
|
|
@@ -479,7 +557,8 @@ _defineProperty(DataTableRoot, "enhance", [uniqueIDEnhancement(), i18nEnhance(lo
|
|
|
479
557
|
_defineProperty(DataTableRoot, "defaultProps", {
|
|
480
558
|
use: "primary",
|
|
481
559
|
defaultGridTemplateColumnWidth: "auto",
|
|
482
|
-
h: "auto"
|
|
560
|
+
h: "auto",
|
|
561
|
+
defaultExpandedRows: []
|
|
483
562
|
});
|
|
484
563
|
var DataTable = createComponent(DataTableRoot, {
|
|
485
564
|
Head,
|
|
@@ -5,41 +5,41 @@ import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitial
|
|
|
5
5
|
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
6
6
|
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
7
7
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
8
|
-
import { sstyled, assignProps, Component } from "@semcore/core";
|
|
8
|
+
import { sstyled, lastInteraction, assignProps, Component } from "@semcore/core";
|
|
9
9
|
import * as React from "react";
|
|
10
10
|
import { Flex } from "@semcore/base-components";
|
|
11
11
|
import SortDesc from "@semcore/icon/SortDesc/m";
|
|
12
12
|
import SortAsc from "@semcore/icon/SortAsc/m";
|
|
13
13
|
import { ButtonLink } from "@semcore/button";
|
|
14
14
|
import { getFocusableIn } from "@semcore/core/lib/utils/focus-lock/getFocusableIn";
|
|
15
|
-
import { SORT_ICON_WIDTH } from "../../Head.mjs";
|
|
16
15
|
import canUseDOM from "@semcore/core/lib/utils/canUseDOM";
|
|
16
|
+
import { isFocusInside } from "@semcore/core/lib/utils/focus-lock/isFocusInside";
|
|
17
17
|
var style = (
|
|
18
18
|
/*__reshadow_css_start__*/
|
|
19
19
|
(sstyled.insert(
|
|
20
20
|
/*__inner_css_start__*/
|
|
21
|
-
'.
|
|
22
|
-
"
|
|
21
|
+
'.___SGroupContainer_1yovy_gg_,.___SHead_1yovy_gg_{display:contents}.___SHead_1yovy_gg_.__sticky_1yovy_gg_ .___SColumn_1yovy_gg_{position:sticky;top:0;z-index:2}.___SHead_1yovy_gg_.__sticky_1yovy_gg_ .___SGroup_1yovy_gg_{top:0}.___SHead_1yovy_gg_.__sticky_1yovy_gg_ .___SGroupContainer_1yovy_gg_>.___SColumn_1yovy_gg_{position:sticky;z-index:2}.___SHead_1yovy_gg_.__compact_1yovy_gg_ .___SColumn_1yovy_gg_{padding:var(--intergalactic-spacing-3x, 12px) var(--intergalactic-spacing-2x, 8px)}.___SColumn_1yovy_gg_,.___SGroup_1yovy_gg_{display:flex;align-items:flex-start;font-size:var(--intergalactic-fs-100, 12px);color:var(--intergalactic-text-primary, #191b23);box-sizing:border-box;height:100%;position:relative;transition:width calc(var(--intergalactic-duration-extra-fast, 100)*1ms) ease-in-out,min-width calc(var(--intergalactic-duration-extra-fast, 100)*1ms) ease-in-out,max-width calc(var(--intergalactic-duration-extra-fast, 100)*1ms) ease-in-out;overflow:hidden}.___SGroup_1yovy_gg_{justify-content:center;text-align:center;background-color:var(--intergalactic-table-th-primary-cell, #f4f5f9)}.___SGroup_1yovy_gg_._use_primary_1yovy_gg_{padding:var(--intergalactic-spacing-3x, 12px)}.___SGroup_1yovy_gg_._use_primary_1yovy_gg_:has(~.___SColumn_1yovy_gg_.__visibleSort_1yovy_gg_){background-color:var(--intergalactic-table-th-primary-cell-hover, #e0e1e9)}.___SGroup_1yovy_gg_._use_secondary_1yovy_gg_{padding:var(--intergalactic-spacing-2x, 8px)}.___SColumn_1yovy_gg_._borders_both_1yovy_gg_,.___SColumn_1yovy_gg_._borders_left_1yovy_gg_,.___SGroup_1yovy_gg_._borders_both_1yovy_gg_,.___SGroup_1yovy_gg_._borders_left_1yovy_gg_{border-left:1px solid var(--intergalactic-border-secondary, #e0e1e9)}.___SColumn_1yovy_gg_._borders_both_1yovy_gg_,.___SColumn_1yovy_gg_._borders_right_1yovy_gg_,.___SGroup_1yovy_gg_._borders_both_1yovy_gg_,.___SGroup_1yovy_gg_._borders_right_1yovy_gg_{border-right:1px solid var(--intergalactic-border-secondary, #e0e1e9)}.___SColumn_1yovy_gg_._use_primary_1yovy_gg_{padding:var(--intergalactic-spacing-3x, 12px);border-bottom:1px solid var(--intergalactic-border-secondary, #e0e1e9);background-color:var(--intergalactic-table-th-primary-cell, #f4f5f9)}.___SColumn_1yovy_gg_._use_primary_1yovy_gg_ .___SSortWrapper_1yovy_gg_::before{background:linear-gradient(270deg,var(--intergalactic-table-th-primary-cell-hover, #e0e1e9) 67.5%,rgba(224,225,233,0) 105%)}.___SColumn_1yovy_gg_._use_primary_1yovy_gg_.__visibleSort_1yovy_gg_{background-color:var(--intergalactic-table-th-primary-cell-hover, #e0e1e9)}.___SColumn_1yovy_gg_._use_primary_1yovy_gg_.__visibleSort_1yovy_gg_ .___SSortWrapper_1yovy_gg_{flex-basis:calc(var(--intergalactic-spacing-1x, 4px) + 16px);opacity:1}.___SColumn_1yovy_gg_._use_primary_1yovy_gg_.__visibleSort_1yovy_gg_ .___SSortButton_1yovy_gg_,.___SColumn_1yovy_gg_._use_primary_1yovy_gg_.__visibleSort_1yovy_gg_ .___SSortWrapper_1yovy_gg_::before,.___SColumn_1yovy_gg_._use_secondary_1yovy_gg_.__visibleSort_1yovy_gg_ .___SSortWrapper_1yovy_gg_::before{display:flex;opacity:1}.___SColumn_1yovy_gg_._use_secondary_1yovy_gg_{padding:var(--intergalactic-spacing-2x, 8px);border-bottom:1px solid var(--intergalactic-border-table-accent, #a9abb6);background-color:var(--intergalactic-table-th-secondary-cell, #ffffff)}.___SColumn_1yovy_gg_._use_secondary_1yovy_gg_ .___SSortWrapper_1yovy_gg_::before{background:linear-gradient(270deg,var(--intergalactic-table-th-secondary-cell, #ffffff) 67.5%,rgba(255,255,255,0) 105%)}.___SColumn_1yovy_gg_._use_secondary_1yovy_gg_.__visibleSort_1yovy_gg_ .___SSortWrapper_1yovy_gg_{flex-basis:calc(var(--intergalactic-spacing-1x, 4px) + 16px);opacity:1}.___SColumn_1yovy_gg_._use_secondary_1yovy_gg_.__visibleSort_1yovy_gg_ .___SSortButton_1yovy_gg_{display:flex;opacity:1}.___SColumn_1yovy_gg_.__gridArea_1yovy_gg_,.___SGroupTitle_1yovy_gg_.__gridArea_1yovy_gg_,.___SGroup_1yovy_gg_.__gridArea_1yovy_gg_{grid-area:var(--gridArea_1yovy)}.___SHead_1yovy_gg_ .___SColumn_1yovy_gg_.__fixed_1yovy_gg_,.___SHead_1yovy_gg_ .___SGroup_1yovy_gg_.__fixed_1yovy_gg_,.___SHead_1yovy_gg_.__sticky_1yovy_gg_ .___SColumn_1yovy_gg_.__fixed_1yovy_gg_,.___SHead_1yovy_gg_.__sticky_1yovy_gg_ .___SGroup_1yovy_gg_{position:sticky;z-index:3}@media (hover:hover){.___SColumn_1yovy_gg_.__sortable_1yovy_gg_:hover{cursor:pointer}}.___SSortWrapper_1yovy_gg_{align-items:center;display:flex;flex-shrink:1;position:relative;flex-basis:0;min-height:16px;opacity:0;transition:all calc(var(--intergalactic-duration-extra-fast, 100)*1ms) ease-in-out}.___SSortButton_1yovy_gg_,.___SSortWrapper_1yovy_gg_:before{display:none;position:absolute;right:0;opacity:0;transition:opacity .3s ease}.___SSortWrapper_1yovy_gg_:before{content:"";top:0;width:20px;height:100%}.___SSortButton_1yovy_gg_{fill:var(--intergalactic-icon-secondary-neutral-hover-active, #878992);top:calc(-1*(1em*1.25 - 16px));margin-left:var(--intergalactic-spacing-1x, 4px)}',
|
|
22
|
+
"1yovy_gg_"
|
|
23
23
|
), {
|
|
24
|
-
"__SHead": "
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"_compact": "
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
24
|
+
"__SHead": "___SHead_1yovy_gg_",
|
|
25
|
+
"__SGroupContainer": "___SGroupContainer_1yovy_gg_",
|
|
26
|
+
"_sticky": "__sticky_1yovy_gg_",
|
|
27
|
+
"__SColumn": "___SColumn_1yovy_gg_",
|
|
28
|
+
"__SGroup": "___SGroup_1yovy_gg_",
|
|
29
|
+
"_compact": "__compact_1yovy_gg_",
|
|
30
|
+
"_use_secondary": "_use_secondary_1yovy_gg_",
|
|
31
|
+
"_borders_both": "_borders_both_1yovy_gg_",
|
|
32
|
+
"_borders_left": "_borders_left_1yovy_gg_",
|
|
33
|
+
"_borders_right": "_borders_right_1yovy_gg_",
|
|
34
|
+
"_gridArea": "__gridArea_1yovy_gg_",
|
|
35
|
+
"__SGroupTitle": "___SGroupTitle_1yovy_gg_",
|
|
36
|
+
"--gridArea": "--gridArea_1yovy",
|
|
37
|
+
"_fixed": "__fixed_1yovy_gg_",
|
|
38
|
+
"_sortable": "__sortable_1yovy_gg_",
|
|
39
|
+
"__SSortWrapper": "___SSortWrapper_1yovy_gg_",
|
|
40
|
+
"__SSortButton": "___SSortButton_1yovy_gg_",
|
|
41
|
+
"_use_primary": "_use_primary_1yovy_gg_",
|
|
42
|
+
"_visibleSort": "__visibleSort_1yovy_gg_"
|
|
43
43
|
})
|
|
44
44
|
);
|
|
45
45
|
var SORTING_ICON = {
|
|
@@ -50,6 +50,7 @@ var ARIA_SORT = {
|
|
|
50
50
|
desc: "descending",
|
|
51
51
|
asc: "ascending"
|
|
52
52
|
};
|
|
53
|
+
var SORT_ICON_WIDTH = 20;
|
|
53
54
|
var DEFAULT_DIRECTION = "desc";
|
|
54
55
|
var reversedSortDirection = {
|
|
55
56
|
desc: "asc",
|
|
@@ -113,16 +114,21 @@ var Column = /* @__PURE__ */ function(_Component) {
|
|
|
113
114
|
sortVisible: false
|
|
114
115
|
});
|
|
115
116
|
});
|
|
116
|
-
_defineProperty(_assertThisInitialized(_this), "handleBlur", function() {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
_defineProperty(_assertThisInitialized(_this), "handleBlur", function(e) {
|
|
118
|
+
var relatedTarget = e.relatedTarget;
|
|
119
|
+
if (!isFocusInside(e.currentTarget, relatedTarget) && lastInteraction.isKeyboard()) {
|
|
120
|
+
_this.setState({
|
|
121
|
+
sortVisible: false
|
|
122
|
+
});
|
|
123
|
+
}
|
|
120
124
|
});
|
|
121
125
|
_defineProperty(_assertThisInitialized(_this), "handleSortClick", function(e) {
|
|
122
126
|
var _this$asProps = _this.asProps, sort = _this$asProps.sort, onSortChange = _this$asProps.onSortChange, name = _this$asProps.name;
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
if (lastInteraction.isMouse() || lastInteraction.isKeyboard() && e.target === e.currentTarget) {
|
|
128
|
+
if (sort && onSortChange) {
|
|
129
|
+
var sortDirection = sort[0] === name ? reversedSortDirection[sort[1]] : DEFAULT_DIRECTION;
|
|
130
|
+
onSortChange([name, sortDirection], e);
|
|
131
|
+
}
|
|
126
132
|
}
|
|
127
133
|
});
|
|
128
134
|
_defineProperty(_assertThisInitialized(_this), "handleKeyDown", function(e) {
|
|
@@ -149,6 +155,7 @@ var Column = /* @__PURE__ */ function(_Component) {
|
|
|
149
155
|
(_focusableChildren$ = focusableChildren[0]) === null || _focusableChildren$ === void 0 ? void 0 : _focusableChildren$.focus();
|
|
150
156
|
e.preventDefault();
|
|
151
157
|
}
|
|
158
|
+
e.stopPropagation();
|
|
152
159
|
}
|
|
153
160
|
} else if (e.key === "Enter") {
|
|
154
161
|
var _focusableChildren$2;
|
|
@@ -181,6 +188,19 @@ var Column = /* @__PURE__ */ function(_Component) {
|
|
|
181
188
|
return _this;
|
|
182
189
|
}
|
|
183
190
|
_createClass(Column2, [{
|
|
191
|
+
key: "componentDidMount",
|
|
192
|
+
value: function componentDidMount() {
|
|
193
|
+
if (this.asProps.parent && this.asProps.sticky) {
|
|
194
|
+
var _columnElement$parent;
|
|
195
|
+
var columnElement = this.columnRef.current;
|
|
196
|
+
var groupElement = columnElement === null || columnElement === void 0 ? void 0 : (_columnElement$parent = columnElement.parentElement) === null || _columnElement$parent === void 0 ? void 0 : _columnElement$parent.children.item(0);
|
|
197
|
+
var groupHeight = groupElement === null || groupElement === void 0 ? void 0 : groupElement.getBoundingClientRect().height;
|
|
198
|
+
if (groupHeight) {
|
|
199
|
+
columnElement === null || columnElement === void 0 ? void 0 : columnElement.style.setProperty("top", "".concat(groupHeight, "px"));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}, {
|
|
184
204
|
key: "componentDidUpdate",
|
|
185
205
|
value: function componentDidUpdate(prevProps) {
|
|
186
206
|
var _prevProps$sort, _this$asProps$sort;
|
|
@@ -215,7 +235,7 @@ var Column = /* @__PURE__ */ function(_Component) {
|
|
|
215
235
|
var SColumn = Flex;
|
|
216
236
|
var SSortWrapper = "div";
|
|
217
237
|
var SSortButton = ButtonLink;
|
|
218
|
-
var _this$asProps3 = this.asProps, styles = _this$asProps3.styles, sortable = _this$asProps3.sortable, sort = _this$asProps3.sort, uid = _this$asProps3.uid, name = _this$asProps3.name, parent = _this$asProps3.parent, sortableColumnDescribeId = _this$asProps3.sortableColumnDescribeId;
|
|
238
|
+
var _this$asProps3 = this.asProps, styles = _this$asProps3.styles, sortable = _this$asProps3.sortable, sort = _this$asProps3.sort, uid = _this$asProps3.uid, name = _this$asProps3.name, parent = _this$asProps3.parent, sortableColumnDescribeId = _this$asProps3.sortableColumnDescribeId, Children = _this$asProps3.Children;
|
|
219
239
|
var SSortIcon = sort ? SORTING_ICON[sort[1]] : SORTING_ICON["asc"];
|
|
220
240
|
var isSorted = (sort === null || sort === void 0 ? void 0 : sort[0]) === name;
|
|
221
241
|
var visibleSort = sortable && (this.state.sortVisible || isSorted);
|
|
@@ -242,7 +262,7 @@ var Column = /* @__PURE__ */ function(_Component) {
|
|
|
242
262
|
"aria-describedby": ariaDescribedBy.length > 0 ? ariaDescribedBy.join(" ") : void 0,
|
|
243
263
|
"aria-sort": ariaSortValue,
|
|
244
264
|
"onClick": this.handleSortClick
|
|
245
|
-
}, _ref))),
|
|
265
|
+
}, _ref))), /* @__PURE__ */ React.createElement(Children, _ref2.cn("Children", {})), sortable && /* @__PURE__ */ React.createElement(SSortWrapper, _ref2.cn("SSortWrapper", {
|
|
246
266
|
"ref": this.sortWrapperRef
|
|
247
267
|
}), /* @__PURE__ */ React.createElement(SSortButton, _ref2.cn("SSortButton", {
|
|
248
268
|
"onClick": this.handleSortClick,
|