@semcore/data-table 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/lib/cjs/Body.js +101 -62
- package/lib/cjs/Body.js.map +1 -1
- package/lib/cjs/DataTable.js +148 -109
- package/lib/cjs/DataTable.js.map +1 -1
- package/lib/cjs/Head.js +15 -8
- package/lib/cjs/Head.js.map +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/types.js +4 -0
- package/lib/cjs/types.js.map +1 -0
- package/lib/cjs/utils.js +26 -26
- package/lib/cjs/utils.js.map +1 -1
- package/lib/es6/Body.js +104 -63
- package/lib/es6/Body.js.map +1 -1
- package/lib/es6/DataTable.js +150 -107
- package/lib/es6/DataTable.js.map +1 -1
- package/lib/es6/Head.js +16 -8
- package/lib/es6/Head.js.map +1 -1
- package/lib/es6/index.js.map +1 -1
- package/lib/es6/types.js +2 -0
- package/lib/es6/types.js.map +1 -0
- package/lib/es6/utils.js +20 -24
- package/lib/es6/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/Body.tsx +136 -0
- package/src/DataTable.tsx +428 -0
- package/src/{Head.jsx → Head.tsx} +29 -11
- package/src/{index.js → index.ts} +0 -0
- package/src/types.ts +54 -0
- package/src/utils.ts +55 -0
- package/lib/types/index.d.ts +0 -99
- package/src/Body.jsx +0 -119
- package/src/DataTable.jsx +0 -283
- package/src/index.d.ts +0 -99
- package/src/utils.js +0 -54
package/lib/cjs/DataTable.js
CHANGED
|
@@ -9,10 +9,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports["default"] = exports.ROW_GROUP = void 0;
|
|
11
11
|
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
-
|
|
16
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
17
13
|
|
|
18
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -58,6 +54,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
58
54
|
|
|
59
55
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
60
56
|
|
|
57
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (_e) { function e(_x) { return _e.apply(this, arguments); } e.toString = function () { return _e.toString(); }; return e; }(function (e) { throw e; }), f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function (_e2) { function e(_x2) { return _e2.apply(this, arguments); } e.toString = function () { return _e2.toString(); }; return e; }(function (e) { didErr = true; err = e; }), f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
58
|
+
|
|
59
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
60
|
+
|
|
61
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
62
|
+
|
|
61
63
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
62
64
|
|
|
63
65
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -105,7 +107,7 @@ _core.sstyled.insert(
|
|
|
105
107
|
"--right": "--right_1jyhdcr",
|
|
106
108
|
"--offsetSum": "--offsetSum_1jyhdcr"
|
|
107
109
|
});
|
|
108
|
-
var
|
|
110
|
+
var REVERSED_SORT_DIRECTION = {
|
|
109
111
|
desc: 'asc',
|
|
110
112
|
asc: 'desc'
|
|
111
113
|
};
|
|
@@ -114,9 +116,9 @@ var ROW_GROUP = Symbol('ROW_GROUP');
|
|
|
114
116
|
exports.ROW_GROUP = ROW_GROUP;
|
|
115
117
|
var cssVarReg = /[:;]/g;
|
|
116
118
|
|
|
117
|
-
function createCssVarForWidth(name) {
|
|
119
|
+
var createCssVarForWidth = function createCssVarForWidth(name) {
|
|
118
120
|
return "--".concat(name.replace(cssVarReg, '_'), "_width");
|
|
119
|
-
}
|
|
121
|
+
};
|
|
120
122
|
|
|
121
123
|
var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
122
124
|
(0, _inherits2["default"])(RootDefinitionTable, _Component);
|
|
@@ -130,12 +132,14 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
130
132
|
_this = _super.call(this, props);
|
|
131
133
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "columns", []);
|
|
132
134
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "tableRef", /*#__PURE__*/_react["default"].createRef());
|
|
133
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "scrollBodyRef", null);
|
|
136
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "scrollHeadRef", null);
|
|
137
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handlerSortClick", function (name, event) {
|
|
138
|
+
var column = _this.columns.find(function (column) {
|
|
139
|
+
return column.name === name;
|
|
136
140
|
});
|
|
137
141
|
|
|
138
|
-
return (0, _fire["default"])((0, _assertThisInitialized2["default"])(_this), 'onSortChange', [column.name, column.active ?
|
|
142
|
+
return (0, _fire["default"])((0, _assertThisInitialized2["default"])(_this), 'onSortChange', [column.name, column.active ? REVERSED_SORT_DIRECTION[column.sortDirection] : column.sortDirection], event);
|
|
139
143
|
});
|
|
140
144
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handlerResize", function () {
|
|
141
145
|
_this.forceUpdate();
|
|
@@ -159,18 +163,45 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
159
163
|
(0, _createClass2["default"])(RootDefinitionTable, [{
|
|
160
164
|
key: "setVarStyle",
|
|
161
165
|
value: function setVarStyle(columns) {
|
|
162
|
-
var
|
|
166
|
+
var _iterator = _createForOfIteratorHelper(columns),
|
|
167
|
+
_step;
|
|
163
168
|
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
try {
|
|
170
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
171
|
+
var _column = _step.value;
|
|
166
172
|
|
|
167
|
-
|
|
168
|
-
|
|
173
|
+
if (Array.isArray(_column.cssVar)) {
|
|
174
|
+
var _iterator2 = _createForOfIteratorHelper(_column.cssVar),
|
|
175
|
+
_step2;
|
|
176
|
+
|
|
177
|
+
try {
|
|
178
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
179
|
+
var _this$tableRef$curren2;
|
|
180
|
+
|
|
181
|
+
var cssVar = _step2.value;
|
|
182
|
+
(_this$tableRef$curren2 = this.tableRef.current) === null || _this$tableRef$curren2 === void 0 ? void 0 : _this$tableRef$curren2.style.setProperty(cssVar, "".concat(_column.width, "px"));
|
|
183
|
+
}
|
|
184
|
+
} catch (err) {
|
|
185
|
+
_iterator2.e(err);
|
|
186
|
+
} finally {
|
|
187
|
+
_iterator2.f();
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
var _this$tableRef$curren3;
|
|
191
|
+
|
|
192
|
+
(_this$tableRef$curren3 = this.tableRef.current) === null || _this$tableRef$curren3 === void 0 ? void 0 : _this$tableRef$curren3.style.setProperty(_column.cssVar, "".concat(_column.width, "px"));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
} catch (err) {
|
|
196
|
+
_iterator.e(err);
|
|
197
|
+
} finally {
|
|
198
|
+
_iterator.f();
|
|
199
|
+
}
|
|
169
200
|
}
|
|
170
201
|
}, {
|
|
171
202
|
key: "childrenToColumns",
|
|
172
203
|
value: function childrenToColumns(children) {
|
|
173
|
-
var
|
|
204
|
+
var _this2 = this;
|
|
174
205
|
|
|
175
206
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
176
207
|
fixed: undefined
|
|
@@ -183,23 +214,24 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
183
214
|
|
|
184
215
|
if (! /*#__PURE__*/_react["default"].isValidElement(child)) return;
|
|
185
216
|
if (child.type !== DefinitionTable.Column) return;
|
|
186
|
-
var
|
|
187
|
-
children =
|
|
188
|
-
name =
|
|
189
|
-
|
|
190
|
-
fixed =
|
|
191
|
-
resizable =
|
|
192
|
-
sortable =
|
|
193
|
-
props = (0, _objectWithoutProperties2["default"])(
|
|
217
|
+
var _ref3 = child.props,
|
|
218
|
+
children = _ref3.children,
|
|
219
|
+
name = _ref3.name,
|
|
220
|
+
_ref3$fixed = _ref3.fixed,
|
|
221
|
+
fixed = _ref3$fixed === void 0 ? options.fixed : _ref3$fixed,
|
|
222
|
+
resizable = _ref3.resizable,
|
|
223
|
+
sortable = _ref3.sortable,
|
|
224
|
+
props = (0, _objectWithoutProperties2["default"])(_ref3, _excluded);
|
|
194
225
|
var isGroup = !name;
|
|
195
|
-
var columns =
|
|
226
|
+
var columns = [];
|
|
196
227
|
|
|
197
228
|
if (isGroup) {
|
|
198
|
-
columns =
|
|
229
|
+
columns = _this2.childrenToColumns(children, {
|
|
199
230
|
fixed: fixed
|
|
200
231
|
});
|
|
201
|
-
name = (0, _utils.flattenColumns)(columns).map(function (
|
|
202
|
-
|
|
232
|
+
name = (0, _utils.flattenColumns)(columns).map(function (_ref4) {
|
|
233
|
+
var name = _ref4.name;
|
|
234
|
+
return name;
|
|
203
235
|
}).join('/');
|
|
204
236
|
if (!columns.length) return;
|
|
205
237
|
children = _react["default"].Children.toArray(children).filter(function (child) {
|
|
@@ -207,8 +239,8 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
207
239
|
});
|
|
208
240
|
}
|
|
209
241
|
|
|
210
|
-
var column =
|
|
211
|
-
return
|
|
242
|
+
var column = _this2.columns.find(function (column) {
|
|
243
|
+
return column.name === name;
|
|
212
244
|
});
|
|
213
245
|
|
|
214
246
|
columnsChildren.push({
|
|
@@ -227,6 +259,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
227
259
|
sortDirection: sort[0] === name ? sort[1] : (column === null || column === void 0 ? void 0 : column.sortDirection) || (typeof sortable == 'string' ? sortable : DEFAULT_SORT_DIRECTION),
|
|
228
260
|
columns: columns,
|
|
229
261
|
props: _objectSpread({
|
|
262
|
+
name: name,
|
|
230
263
|
ref: (column === null || column === void 0 ? void 0 : (_column$props = column.props) === null || _column$props === void 0 ? void 0 : _column$props.ref) || /*#__PURE__*/_react["default"].createRef(),
|
|
231
264
|
children: children
|
|
232
265
|
}, props)
|
|
@@ -255,28 +288,28 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
255
288
|
var _this$asProps = this.asProps,
|
|
256
289
|
data = _this$asProps.data,
|
|
257
290
|
use = _this$asProps.use;
|
|
258
|
-
var
|
|
259
|
-
var
|
|
291
|
+
var cellPropsLayers = {};
|
|
292
|
+
var rowPropsLayers = [];
|
|
260
293
|
|
|
261
294
|
_react["default"].Children.forEach(props.children, function (child) {
|
|
262
295
|
if ( /*#__PURE__*/_react["default"].isValidElement(child)) {
|
|
263
|
-
var
|
|
264
|
-
name =
|
|
265
|
-
children =
|
|
266
|
-
other = (0, _objectWithoutProperties2["default"])(
|
|
296
|
+
var _ref5 = child.props,
|
|
297
|
+
name = _ref5.name,
|
|
298
|
+
children = _ref5.children,
|
|
299
|
+
other = (0, _objectWithoutProperties2["default"])(_ref5, _excluded2);
|
|
267
300
|
|
|
268
301
|
if (child.type === DefinitionTable.Cell && name) {
|
|
269
302
|
name.split('/').forEach(function (name) {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
303
|
+
cellPropsLayers[name] = cellPropsLayers[name] || [];
|
|
304
|
+
cellPropsLayers[name].push(_objectSpread(_objectSpread({}, other), {}, {
|
|
305
|
+
childrenPropsGetter: children
|
|
273
306
|
}));
|
|
274
307
|
});
|
|
275
308
|
}
|
|
276
309
|
|
|
277
310
|
if (child.type === DefinitionTable.Row) {
|
|
278
|
-
|
|
279
|
-
|
|
311
|
+
rowPropsLayers.push(_objectSpread(_objectSpread({}, other), {}, {
|
|
312
|
+
childrenPropsGetter: children
|
|
280
313
|
}));
|
|
281
314
|
}
|
|
282
315
|
}
|
|
@@ -284,99 +317,105 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
284
317
|
|
|
285
318
|
return {
|
|
286
319
|
columns: this.columns,
|
|
287
|
-
rows: this.dataToRows(data,
|
|
320
|
+
rows: this.dataToRows(data, cellPropsLayers),
|
|
288
321
|
use: use,
|
|
289
|
-
|
|
322
|
+
rowPropsLayers: rowPropsLayers,
|
|
290
323
|
$scrollRef: this.scrollBodyRef
|
|
291
324
|
};
|
|
292
325
|
}
|
|
293
326
|
}, {
|
|
294
327
|
key: "dataToRows",
|
|
295
|
-
value: function dataToRows(data,
|
|
296
|
-
var
|
|
328
|
+
value: function dataToRows(data, cellPropsLayers) {
|
|
329
|
+
var _this3 = this;
|
|
297
330
|
|
|
298
|
-
function parseData(data) {
|
|
299
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
300
|
-
exclude: []
|
|
301
|
-
};
|
|
331
|
+
var parseData = function parseData(data, exclude) {
|
|
302
332
|
return data.map(function (row) {
|
|
303
|
-
var
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
333
|
+
var groupByName = {};
|
|
334
|
+
var groupedColumns = {};
|
|
335
|
+
var ungroupedColumns = {};
|
|
336
|
+
|
|
337
|
+
for (var rowKey in row) {
|
|
338
|
+
var columnNames = rowKey.split('/');
|
|
339
|
+
|
|
340
|
+
if (columnNames.length >= 2) {
|
|
341
|
+
var _iterator3 = _createForOfIteratorHelper(columnNames),
|
|
342
|
+
_step3;
|
|
343
|
+
|
|
344
|
+
try {
|
|
345
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
346
|
+
var _column2 = _step3.value;
|
|
347
|
+
groupByName[_column2] = {
|
|
348
|
+
groupedColumns: columnNames,
|
|
349
|
+
groupData: row[rowKey]
|
|
350
|
+
};
|
|
351
|
+
groupedColumns[rowKey] = true;
|
|
352
|
+
}
|
|
353
|
+
} catch (err) {
|
|
354
|
+
_iterator3.e(err);
|
|
355
|
+
} finally {
|
|
356
|
+
_iterator3.f();
|
|
357
|
+
}
|
|
358
|
+
} else {
|
|
359
|
+
ungroupedColumns[rowKey] = true;
|
|
308
360
|
}
|
|
361
|
+
}
|
|
309
362
|
|
|
310
|
-
return acc;
|
|
311
|
-
}, []);
|
|
312
|
-
var nameColumnsGroup = columnsGroups.reduce(function (acc, _ref3) {
|
|
313
|
-
var _ref4 = (0, _slicedToArray2["default"])(_ref3, 1),
|
|
314
|
-
names = _ref4[0];
|
|
315
|
-
|
|
316
|
-
return acc.concat(names);
|
|
317
|
-
}, []).filter(function (name, i, arr) {
|
|
318
|
-
return arr.indexOf(name) === i;
|
|
319
|
-
});
|
|
320
363
|
var rowsGroup = row[ROW_GROUP] || [];
|
|
321
|
-
var
|
|
322
|
-
return
|
|
323
|
-
}
|
|
324
|
-
return
|
|
325
|
-
});
|
|
326
|
-
var
|
|
327
|
-
|
|
328
|
-
cells
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
names = _columnGroup[0],
|
|
339
|
-
_data = _columnGroup[1];
|
|
340
|
-
|
|
341
|
-
if (names[0] === column.name) {
|
|
342
|
-
acc.push({
|
|
343
|
-
name: names.join('/'),
|
|
344
|
-
cssVar: names.map(createCssVarForWidth),
|
|
364
|
+
var rowsGroupedNames = Object.fromEntries(rowsGroup.map(function (subRow) {
|
|
365
|
+
return Object.keys(subRow);
|
|
366
|
+
}).flat().map(function (key) {
|
|
367
|
+
return [key, true];
|
|
368
|
+
}));
|
|
369
|
+
var isGroup = false;
|
|
370
|
+
|
|
371
|
+
var cells = _this3.columns.map(function (column) {
|
|
372
|
+
if (groupByName[column.name]) {
|
|
373
|
+
var _groupByName$column$n = groupByName[column.name],
|
|
374
|
+
_groupedColumns = _groupByName$column$n.groupedColumns,
|
|
375
|
+
groupData = _groupByName$column$n.groupData;
|
|
376
|
+
|
|
377
|
+
if (_groupedColumns[0] === column.name) {
|
|
378
|
+
return {
|
|
379
|
+
name: _groupedColumns.join('/'),
|
|
380
|
+
cssVar: _groupedColumns.map(createCssVarForWidth),
|
|
345
381
|
fixed: column.fixed,
|
|
346
|
-
data:
|
|
347
|
-
|
|
348
|
-
}
|
|
382
|
+
data: groupData,
|
|
383
|
+
cellPropsLayers: cellPropsLayers[column.name] || []
|
|
384
|
+
};
|
|
349
385
|
}
|
|
350
386
|
} else if (column.name in row) {
|
|
351
|
-
|
|
387
|
+
return {
|
|
352
388
|
name: column.name,
|
|
353
389
|
cssVar: column.cssVar,
|
|
354
390
|
fixed: column.fixed,
|
|
355
391
|
data: row[column.name],
|
|
356
|
-
|
|
357
|
-
}
|
|
358
|
-
} else if (!
|
|
359
|
-
// TODO:
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
} else if (![].concat((0, _toConsumableArray2["default"])(options.exclude), (0, _toConsumableArray2["default"])(nameRowsGroup)).includes(column.name)) {
|
|
365
|
-
acc.push({
|
|
392
|
+
cellPropsLayers: cellPropsLayers[column.name] || []
|
|
393
|
+
};
|
|
394
|
+
} else if (!isGroup && rowsGroupedNames[column.name]) {
|
|
395
|
+
// TODO: make it work not only with first group
|
|
396
|
+
isGroup = true;
|
|
397
|
+
return parseData(rowsGroup, _objectSpread(_objectSpread({}, ungroupedColumns), groupedColumns));
|
|
398
|
+
} else if (!exclude[column.name] && !rowsGroupedNames[column.name]) {
|
|
399
|
+
return {
|
|
366
400
|
name: column.name,
|
|
367
401
|
cssVar: column.cssVar,
|
|
368
402
|
fixed: column.fixed,
|
|
369
403
|
data: null,
|
|
370
|
-
|
|
371
|
-
}
|
|
404
|
+
cellPropsLayers: cellPropsLayers[column.name] || []
|
|
405
|
+
};
|
|
372
406
|
}
|
|
407
|
+
}).filter(function (column) {
|
|
408
|
+
return column !== undefined;
|
|
409
|
+
}).map(function (column) {
|
|
410
|
+
return column;
|
|
411
|
+
});
|
|
373
412
|
|
|
374
|
-
|
|
375
|
-
|
|
413
|
+
cells.flatRowData = row;
|
|
414
|
+
return cells;
|
|
376
415
|
});
|
|
377
|
-
}
|
|
416
|
+
};
|
|
378
417
|
|
|
379
|
-
return parseData(data);
|
|
418
|
+
return parseData(data, {});
|
|
380
419
|
}
|
|
381
420
|
}, {
|
|
382
421
|
key: "componentDidUpdate",
|
package/lib/cjs/DataTable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/DataTable.jsx"],"names":["MAP_SORT_DIRECTION","desc","asc","DEFAULT_SORT_DIRECTION","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","replace","RootDefinitionTable","props","React","createRef","e","column","columns","find","c","active","sortDirection","forceUpdate","tableRef","current","scrollIntoView","block","inline","behavior","scrollBodyRef","scrollHeadRef","forEach","style","setProperty","cssVar","width","children","options","fixed","undefined","sort","asProps","columnsChildren","Children","child","isValidElement","type","DefinitionTable","Column","resizable","sortable","isGroup","childrenToColumns","map","join","length","toArray","filter","push","ref","getBoundingClientRect","use","$onSortClick","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","data","propsCells","$propsRow","other","Cell","split","getCellProps","Row","getRowProps","rows","dataToRows","parseData","exclude","row","columnsGroups","Object","keys","reduce","acc","names","nameColumnsGroup","concat","i","arr","indexOf","rowsGroup","nameRowsGroup","isGroupRow","cells","_row","columnGroup","group","includes","rendersCell","setVarStyle","SDataTable","Box","styles","Component","ComponentDefinition","Head","Body"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport fire from '@semcore/utils/lib/fire';\nimport { flattenColumns } from './utils';\nimport Head from './Head';\nimport Body from './Body';\n\nimport style from './style/data-table.shadow.css';\n\nconst MAP_SORT_DIRECTION = {\n desc: 'asc',\n asc: 'desc',\n};\nconst DEFAULT_SORT_DIRECTION = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;]/g;\n\nfunction createCssVarForWidth(name) {\n return `--${name.replace(cssVarReg, '_')}_width`;\n}\n\nclass RootDefinitionTable extends Component {\n static displayName = 'DefinitionTable';\n\n static style = style;\n\n static defaultProps = {\n use: 'primary',\n sort: [],\n data: [],\n };\n\n columns = [];\n\n tableRef = React.createRef();\n\n constructor(props) {\n super(props);\n\n const createRef = syncScroll();\n // first create body ref for master scroll\n this.scrollBodyRef = createRef('body');\n this.scrollHeadRef = createRef('head');\n }\n\n handlerSortClick = (name, e) => {\n const column = this.columns.find((c) => c.name === name);\n return fire(\n this,\n 'onSortChange',\n [\n column.name,\n column.active ? MAP_SORT_DIRECTION[column.sortDirection] : column.sortDirection,\n ],\n e,\n );\n };\n\n handlerResize = () => {\n this.forceUpdate();\n };\n\n scrollToUp = () => {\n this.tableRef?.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n };\n\n setVarStyle(columns) {\n columns.forEach((column) => {\n this.tableRef.current?.style.setProperty(column.cssVar, `${column.width}px`);\n }, {});\n }\n\n childrenToColumns(children, options = { fixed: undefined }) {\n const { sort } = this.asProps;\n const columnsChildren = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type !== DefinitionTable.Column) return;\n\n let { children, name, fixed = options.fixed, resizable, sortable, ...props } = child.props;\n const isGroup = !name;\n let columns = null;\n\n if (isGroup) {\n columns = this.childrenToColumns(children, {\n fixed,\n });\n name = flattenColumns(columns)\n .map((c) => c.name)\n .join('/');\n if (!columns.length) return;\n children = React.Children.toArray(children).filter(\n (child) => !(React.isValidElement(child) && child.type === DefinitionTable.Column),\n );\n }\n\n const column = this.columns.find((c) => c.name === name);\n\n columnsChildren.push({\n get width() {\n return this.props.ref.current?.getBoundingClientRect().width || 0;\n },\n name,\n cssVar: createCssVarForWidth(name),\n fixed,\n resizable,\n active: sort[0] === name,\n sortable,\n sortDirection:\n sort[0] === name\n ? sort[1]\n : column?.sortDirection ||\n (typeof sortable == 'string' ? sortable : DEFAULT_SORT_DIRECTION),\n columns,\n props: {\n ref: column?.props?.ref || React.createRef(),\n children,\n ...props,\n },\n });\n });\n return columnsChildren;\n }\n\n getHeadProps(props) {\n const { use } = this.asProps;\n const columnsChildren = this.childrenToColumns(props.children);\n this.columns = flattenColumns(columnsChildren);\n return {\n $onSortClick: callAllEventHandlers(this.handlerSortClick, this.scrollToUp),\n columnsChildren,\n use,\n onResize: this.handlerResize,\n $scrollRef: this.scrollHeadRef,\n };\n }\n\n getBodyProps(props) {\n const { data, use } = this.asProps;\n const propsCells = {};\n const $propsRow = [];\n React.Children.forEach(props.children, (child) => {\n if (React.isValidElement(child)) {\n const { name, children, ...other } = child.props;\n if (child.type === DefinitionTable.Cell && name) {\n name.split('/').forEach((name) => {\n propsCells[name] = propsCells[name] || [];\n propsCells[name].push({\n ...other,\n getCellProps: children,\n });\n });\n }\n if (child.type === DefinitionTable.Row) {\n $propsRow.push({\n ...other,\n getRowProps: children,\n });\n }\n }\n });\n\n return {\n columns: this.columns,\n rows: this.dataToRows(data, propsCells),\n use,\n $propsRow,\n $scrollRef: this.scrollBodyRef,\n };\n }\n\n dataToRows(data, propsCells) {\n const columns = this.columns;\n\n function parseData(data, options = { exclude: [] }) {\n return data.map((row) => {\n const columnsGroups = Object.keys(row).reduce((acc, name) => {\n const names = name.split('/');\n if (names.length >= 2) {\n acc.push([names, row[name]]);\n }\n return acc;\n }, []);\n const nameColumnsGroup = columnsGroups\n .reduce((acc, [names]) => acc.concat(names), [])\n .filter((name, i, arr) => arr.indexOf(name) === i);\n const rowsGroup = row[ROW_GROUP] || [];\n const nameRowsGroup = rowsGroup\n .reduce((acc, row) => acc.concat(Object.keys(row)), [])\n .filter((name, i, arr) => arr.indexOf(name) === i);\n let isGroupRow = false;\n\n const cells = [];\n cells._row = row;\n return columns.reduce((acc, column) => {\n const columnGroup = columnsGroups.find((group) => group[0]?.includes(column.name));\n if (columnGroup) {\n const [names, data] = columnGroup;\n if (names[0] === column.name) {\n acc.push({\n name: names.join('/'),\n cssVar: names.map(createCssVarForWidth),\n fixed: column.fixed,\n data,\n rendersCell: propsCells[column.name] || [],\n });\n }\n } else if (column.name in row) {\n acc.push({\n name: column.name,\n cssVar: column.cssVar,\n fixed: column.fixed,\n data: row[column.name],\n rendersCell: propsCells[column.name] || [],\n });\n } else if (!isGroupRow && nameRowsGroup.includes(column.name)) {\n // TODO: сделать универсально\n isGroupRow = true;\n acc.push(\n parseData(rowsGroup, {\n exclude: [...Object.keys(row), ...nameColumnsGroup],\n }),\n );\n } else if (![...options.exclude, ...nameRowsGroup].includes(column.name)) {\n acc.push({\n name: column.name,\n cssVar: column.cssVar,\n fixed: column.fixed,\n data: null,\n rendersCell: propsCells[column.name] || [],\n });\n }\n return acc;\n }, cells);\n });\n }\n\n return parseData(data);\n }\n\n componentDidUpdate() {\n this.setVarStyle(this.columns);\n }\n\n render() {\n const SDataTable = Root;\n const { Children, styles } = this.asProps;\n\n return sstyled(styles)(\n <SDataTable render={Box} __excludeProps={['data']} ref={this.tableRef}>\n <Children />\n </SDataTable>,\n );\n }\n}\n\nfunction ComponentDefinition() {\n return null;\n}\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n);\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n"],"file":"DataTable.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/DataTable.tsx"],"names":["REVERSED_SORT_DIRECTION","desc","asc","DEFAULT_SORT_DIRECTION","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","replace","RootDefinitionTable","props","React","createRef","event","column","columns","find","active","sortDirection","forceUpdate","tableRef","current","scrollIntoView","block","inline","behavior","scrollBodyRef","scrollHeadRef","Array","isArray","cssVar","style","setProperty","width","children","options","fixed","undefined","sort","asProps","columnsChildren","Children","forEach","child","isValidElement","type","DefinitionTable","Column","resizable","sortable","isGroup","childrenToColumns","map","join","length","toArray","filter","push","ref","getBoundingClientRect","use","$onSortClick","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","data","cellPropsLayers","rowPropsLayers","other","Cell","split","childrenPropsGetter","Row","rows","dataToRows","parseData","exclude","row","groupByName","groupedColumns","ungroupedColumns","rowKey","columnNames","groupData","rowsGroup","rowsGroupedNames","Object","fromEntries","subRow","keys","flat","key","cells","flatRowData","setVarStyle","SDataTable","Box","styles","Component","ComponentDefinition","Head","Body"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root, PropGetterFn } from '@semcore/core';\nimport { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport fire from '@semcore/utils/lib/fire';\nimport { flattenColumns } from './utils';\nimport type {\n RowData,\n SortDirection,\n PseudoChildPropsGetter,\n PropsLayer,\n NestedCells,\n Column,\n} from './types';\nimport Head from './Head';\nimport Body from './Body';\n\nimport style from './style/data-table.shadow.css';\n\nconst REVERSED_SORT_DIRECTION: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\nconst DEFAULT_SORT_DIRECTION: SortDirection = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;]/g;\n\nconst createCssVarForWidth = (name: string) => {\n return `--${name.replace(cssVarReg, '_')}_width`;\n};\n\ntype AsProps = {\n use: 'primary' | 'secondary';\n sort: SortDirection[];\n data: RowData[];\n};\n\ntype HeadAsProps = {\n children: React.ReactChild;\n};\ntype BodyAsProps = {\n children: React.ReactChild;\n};\n\n/* utils type */\ntype CProps<Props, Ctx = {}, UCProps = {}> = Props & {\n children?: ((props: Props & Ctx, handlers: UCProps) => React.ReactNode) | React.ReactNode;\n};\ntype ReturnEl = React.ReactElement | null;\ntype ChildRenderFn<Props> = Props & {\n children?: (props: Props, column: DataTableData, index: number) => { [key: string]: unknown };\n};\n/* utils type */\n\nexport type DataTableData = { [key: string]: unknown };\nexport type DataTableSort = [string, 'desc' | 'asc'];\nexport type DataTableTheme = 'muted' | 'info' | 'success' | 'warning' | 'danger';\nexport type DataTableUse = 'primary' | 'secondary';\nexport type DataTableRow = DataTableCell[];\nexport type DataTableCell = {\n /** Name of column */\n name: string;\n /** Data of column */\n data: React.ReactNode;\n [key: string]: unknown;\n};\n\nexport interface IDataTableProps extends IBoxProps {\n /** Theme for table\n * @default primary\n * */\n use?: DataTableUse;\n /** Data for table */\n data?: DataTableData[];\n /** Active sort object */\n sort?: DataTableSort;\n /** Handler call when will request change sort */\n onSortChange?: (sort: DataTableSort, e?: React.SyntheticEvent) => void;\n}\n\nexport interface IDataTableHeadProps extends IBoxProps {\n /** Sticky header table\n * @deprecated\n * */\n sticky?: boolean;\n\n /** Hidden header */\n hidden?: boolean;\n}\n\nexport interface IDataTableColumnProps extends IFlexProps {\n /** Unique name column */\n name?: string;\n /** Enable sort for column also if you pass string you can set default sort */\n sortable?: boolean | 'desc' | 'asc';\n /** Enable resize for column\n * @ignore */\n resizable?: boolean;\n /** Fixed column on the left/right */\n fixed?: 'left' | 'right';\n}\n\nexport interface IDataTableBodyProps extends IBoxProps {\n /** Rows table */\n rows?: DataTableRow[];\n}\n\nexport interface IDataTableRowProps extends IBoxProps {\n /** Theme for row */\n theme?: DataTableTheme;\n /** Displays row as active/hover */\n active?: boolean;\n}\n\nexport interface IDataTableCellProps extends IFlexProps {\n /** Unique name column or columns separated by / */\n name: string;\n /** Theme for cell */\n theme?: DataTableTheme;\n}\n\nclass RootDefinitionTable extends Component<AsProps> {\n static displayName = 'DefinitionTable';\n\n static style = style;\n\n static defaultProps = {\n use: 'primary',\n sort: [],\n data: [],\n } as AsProps;\n\n columns: Column[] = [];\n\n tableRef = React.createRef<HTMLElement>();\n scrollBodyRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n scrollHeadRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n\n constructor(props: AsProps) {\n super(props);\n\n const createRef = syncScroll();\n // first create body ref for master scroll\n this.scrollBodyRef = createRef('body');\n this.scrollHeadRef = createRef('head');\n }\n\n handlerSortClick = (name: string, event: React.MouseEvent) => {\n const column = this.columns.find((column) => column.name === name)!;\n return fire(\n this,\n 'onSortChange',\n [\n column.name,\n column.active ? REVERSED_SORT_DIRECTION[column.sortDirection] : column.sortDirection,\n ],\n event,\n );\n };\n\n handlerResize = () => {\n this.forceUpdate();\n };\n\n scrollToUp = () => {\n this.tableRef?.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n };\n\n setVarStyle(columns: Column[]) {\n for (const column of columns) {\n if (Array.isArray(column.cssVar)) {\n for (const cssVar of column.cssVar) {\n this.tableRef.current?.style.setProperty(cssVar, `${column.width}px`);\n }\n } else {\n this.tableRef.current?.style.setProperty(column.cssVar, `${column.width}px`);\n }\n }\n }\n\n childrenToColumns(\n children: React.ReactNode,\n options: { fixed?: 'left' | 'right' } = { fixed: undefined },\n ) {\n const { sort } = this.asProps;\n const columnsChildren: Column[] = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type !== DefinitionTable.Column) return;\n\n let {\n children,\n name,\n fixed = options.fixed,\n resizable,\n sortable,\n ...props\n } = child.props as Column['props'];\n const isGroup = !name;\n let columns: Column[] = [];\n\n if (isGroup) {\n columns = this.childrenToColumns(children, { fixed });\n name = flattenColumns(columns)\n .map(({ name }) => name)\n .join('/');\n if (!columns.length) return;\n children = React.Children.toArray(children).filter(\n (child) => !(React.isValidElement(child) && child.type === DefinitionTable.Column),\n );\n }\n\n const column = this.columns.find((column) => column.name === name);\n\n columnsChildren.push({\n get width() {\n return this.props.ref.current?.getBoundingClientRect().width || 0;\n },\n name,\n cssVar: createCssVarForWidth(name),\n fixed,\n resizable,\n active: sort[0] === name,\n sortable,\n sortDirection:\n sort[0] === name\n ? sort[1]\n : column?.sortDirection ||\n (typeof sortable == 'string' ? sortable : DEFAULT_SORT_DIRECTION),\n columns,\n props: {\n name,\n ref: column?.props?.ref || React.createRef(),\n children,\n ...props,\n },\n });\n });\n return columnsChildren;\n }\n\n getHeadProps(props: HeadAsProps) {\n const { use } = this.asProps;\n const columnsChildren = this.childrenToColumns(props.children);\n this.columns = flattenColumns(columnsChildren);\n return {\n $onSortClick: callAllEventHandlers(this.handlerSortClick, this.scrollToUp),\n columnsChildren,\n use,\n onResize: this.handlerResize,\n $scrollRef: this.scrollHeadRef,\n };\n }\n\n getBodyProps(props: BodyAsProps) {\n const { data, use } = this.asProps;\n\n const cellPropsLayers: { [columnName: string]: PropsLayer[] } = {};\n const rowPropsLayers: PropsLayer[] = [];\n\n React.Children.forEach(props.children, (child) => {\n if (React.isValidElement(child)) {\n const { name, children, ...other } = child.props as {\n name?: string;\n children?: PseudoChildPropsGetter;\n } & { [propName: string]: unknown };\n if (child.type === DefinitionTable.Cell && name) {\n name.split('/').forEach((name) => {\n cellPropsLayers[name] = cellPropsLayers[name] || [];\n cellPropsLayers[name].push({\n ...other,\n childrenPropsGetter: children,\n });\n });\n }\n if (child.type === DefinitionTable.Row) {\n rowPropsLayers.push({\n ...other,\n childrenPropsGetter: children,\n });\n }\n }\n });\n\n return {\n columns: this.columns,\n rows: this.dataToRows(data, cellPropsLayers),\n use,\n rowPropsLayers,\n $scrollRef: this.scrollBodyRef,\n };\n }\n\n dataToRows(data: RowData[], cellPropsLayers: { [columnName: string]: PropsLayer[] }) {\n const parseData = (data: RowData[], exclude: { [columnName: string]: true }) =>\n data.map((row) => {\n const groupByName: {\n [columnName: string]: {\n groupedColumns: string[];\n groupData: { [columnName: string]: unknown };\n };\n } = {};\n const groupedColumns: { [columnname: string]: true } = {};\n const ungroupedColumns: { [columnname: string]: true } = {};\n for (const rowKey in row) {\n const columnNames = rowKey.split('/');\n if (columnNames.length >= 2) {\n for (const column of columnNames) {\n groupByName[column] = {\n groupedColumns: columnNames,\n groupData: row[rowKey] as { [columnName: string]: unknown },\n };\n groupedColumns[rowKey] = true;\n }\n } else {\n ungroupedColumns[rowKey] = true;\n }\n }\n const rowsGroup = row[ROW_GROUP] || [];\n const rowsGroupedNames = Object.fromEntries(\n rowsGroup\n .map((subRow) => Object.keys(subRow))\n .flat()\n .map((key) => [key, true]),\n );\n\n let isGroup = false;\n\n const cells: NestedCells = this.columns\n .map((column) => {\n if (groupByName[column.name]) {\n const { groupedColumns, groupData } = groupByName[column.name];\n if (groupedColumns[0] === column.name) {\n return {\n name: groupedColumns.join('/'),\n cssVar: groupedColumns.map(createCssVarForWidth),\n fixed: column.fixed,\n data: groupData,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n } else if (column.name in row) {\n return {\n name: column.name,\n cssVar: column.cssVar,\n fixed: column.fixed,\n data: row[column.name],\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n } else if (!isGroup && rowsGroupedNames[column.name]) {\n // TODO: make it work not only with first group\n isGroup = true;\n return parseData(rowsGroup, {\n ...ungroupedColumns,\n ...groupedColumns,\n });\n } else if (!exclude[column.name] && !rowsGroupedNames[column.name]) {\n return {\n name: column.name,\n cssVar: column.cssVar,\n fixed: column.fixed,\n data: null,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n })\n .filter((column) => column !== undefined)\n .map((column) => column!);\n\n cells.flatRowData = row;\n return cells;\n });\n\n return parseData(data, {});\n }\n\n componentDidUpdate() {\n this.setVarStyle(this.columns);\n }\n\n render() {\n const SDataTable = Root;\n const { Children, styles } = this.asProps;\n\n return sstyled(styles)(\n <SDataTable render={Box} __excludeProps={['data']} ref={this.tableRef}>\n <Children />\n </SDataTable>,\n );\n }\n}\n\ninterface IDataTableCtx {\n getHeadProps: PropGetterFn;\n getBodyProps: PropGetterFn;\n}\n\nfunction ComponentDefinition() {\n return null;\n}\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n) as (<T>(props: CProps<IDataTableProps & T, IDataTableCtx>) => ReturnEl) & {\n Head: <T>(props: IDataTableHeadProps & T) => ReturnEl;\n Body: <T>(props: IDataTableBodyProps & T) => ReturnEl;\n Column: <T>(props: IDataTableColumnProps & T) => ReturnEl;\n Cell: <T>(props: ChildRenderFn<IDataTableCellProps & T>) => ReturnEl;\n Row: <T>(props: ChildRenderFn<IDataTableRowProps & T>) => ReturnEl;\n};\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n"],"file":"DataTable.js"}
|
package/lib/cjs/Head.js
CHANGED
|
@@ -85,14 +85,14 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
85
85
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
86
86
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "columns", []);
|
|
87
87
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bindHandlerSortClick", function (name) {
|
|
88
|
-
return function (
|
|
89
|
-
_this.asProps.$onSortClick(name,
|
|
88
|
+
return function (event) {
|
|
89
|
+
_this.asProps.$onSortClick(name, event);
|
|
90
90
|
};
|
|
91
91
|
});
|
|
92
92
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bindHandlerKeyDown", function (name) {
|
|
93
|
-
return function (
|
|
94
|
-
if (
|
|
95
|
-
_this.asProps.$onSortClick(name,
|
|
93
|
+
return function (event) {
|
|
94
|
+
if (event.code === 'Enter') {
|
|
95
|
+
_this.asProps.$onSortClick(name, event);
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
98
|
});
|
|
@@ -111,7 +111,7 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
111
111
|
}, {
|
|
112
112
|
key: "renderColumn",
|
|
113
113
|
value: function renderColumn(column, width) {
|
|
114
|
-
var _ref2,
|
|
114
|
+
var _ref2, _column$columns;
|
|
115
115
|
|
|
116
116
|
var _this$asProps = this.asProps,
|
|
117
117
|
styles = _this$asProps.styles,
|
|
@@ -120,7 +120,7 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
120
120
|
var SColumn = _flexBox.Flex;
|
|
121
121
|
var SHead = _flexBox.Box;
|
|
122
122
|
var SSortIcon = SORTING_ICON[column.sortDirection];
|
|
123
|
-
var isGroup =
|
|
123
|
+
var isGroup = ((_column$columns = column.columns) === null || _column$columns === void 0 ? void 0 : _column$columns.length) > 0;
|
|
124
124
|
var cSize = isGroup ? (0, _utils.flattenColumns)(column.columns).length : 1;
|
|
125
125
|
|
|
126
126
|
var _getFixedStyle = (0, _utils.getFixedStyle)(column, this.columns),
|
|
@@ -128,7 +128,13 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
128
128
|
name = _getFixedStyle2[0],
|
|
129
129
|
value = _getFixedStyle2[1];
|
|
130
130
|
|
|
131
|
-
var style = _objectSpread(
|
|
131
|
+
var style = _objectSpread({
|
|
132
|
+
flexBasis: column.props.flex === undefined && "".concat(width * cSize, "%")
|
|
133
|
+
}, column.props.style);
|
|
134
|
+
|
|
135
|
+
if (name !== undefined && value !== undefined) {
|
|
136
|
+
style[name] = value;
|
|
137
|
+
}
|
|
132
138
|
|
|
133
139
|
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SColumn, _ref2.cn("SColumn", _objectSpread(_objectSpread({
|
|
134
140
|
"key": column.name,
|
|
@@ -191,6 +197,7 @@ var Head = /*#__PURE__*/function (_Component) {
|
|
|
191
197
|
return Head;
|
|
192
198
|
}(_core.Component);
|
|
193
199
|
|
|
200
|
+
(0, _defineProperty2["default"])(Head, "displayName", void 0);
|
|
194
201
|
var _default = Head;
|
|
195
202
|
exports["default"] = _default;
|
|
196
203
|
//# sourceMappingURL=Head.js.map
|
package/lib/cjs/Head.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Head.
|
|
1
|
+
{"version":3,"sources":["../../src/Head.tsx"],"names":["SORTING_ICON","desc","SortDesc","asc","SortAsc","Head","name","event","asProps","$onSortClick","code","columns","width","map","column","renderColumn","styles","use","hidden","SColumn","Flex","SHead","Box","SSortIcon","sortDirection","isGroup","length","cSize","value","style","flexBasis","props","flex","undefined","fixed","resizable","sortable","active","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","children","renderColumns","Children","columnsChildren","onResize","$scrollRef","sticky","SHeadWrapper","offsetLeftSum","offsetRightSum","logger","warn","displayName","scrollStyles","origin","Component"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport { flattenColumns, getFixedStyle, getScrollOffsetValue } from './utils';\nimport type { Column } from './types';\nimport logger from '@semcore/utils/lib/logger';\nimport type ResizeObserverCallback from 'resize-observer-polyfill';\n\nimport scrollStyles from './style/scroll-area.shadow.css';\n\nconst SORTING_ICON = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\n\ntype AsProps = {\n $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;\n $scrollRef: (instance: unknown) => void;\n use: 'primary' | 'secondary';\n columnsChildren: Column[];\n onResize: ResizeObserverCallback;\n sticky: boolean;\n ['data-ui-name']: string;\n};\n\nclass Head extends Component<AsProps> {\n columns: Column[] = [];\n\n static displayName: string;\n\n bindHandlerSortClick = (name: string) => (event: React.MouseEvent) => {\n this.asProps.$onSortClick(name, event);\n };\n\n bindHandlerKeyDown = (name: string) => (event: React.KeyboardEvent) => {\n if (event.code === 'Enter') {\n this.asProps.$onSortClick(name, event);\n }\n };\n\n renderColumns(columns: Column[], width: number) {\n return columns.map((column) => this.renderColumn(column, width));\n }\n\n renderColumn(column: Column, width: number) {\n const { styles, use, hidden } = this.asProps;\n const SColumn = Flex;\n const SHead = Box;\n const SSortIcon = SORTING_ICON[column.sortDirection];\n const isGroup = column.columns?.length > 0;\n const cSize = isGroup ? flattenColumns(column.columns).length : 1;\n const [name, value] = getFixedStyle(column, this.columns);\n\n const style = {\n flexBasis: column.props.flex === undefined && `${width * cSize}%`,\n ...column.props.style,\n };\n\n if (name !== undefined && value !== undefined) {\n style[name] = value;\n }\n\n return sstyled(styles)(\n <SColumn\n key={column.name}\n use={use}\n fixed={column.fixed}\n resizable={column.resizable}\n sortable={column.sortable}\n active={column.active}\n group={isGroup}\n tabIndex={column.sortable && 0}\n {...column.props}\n onClick={callAllEventHandlers(\n column.props.onClick,\n column.sortable ? this.bindHandlerSortClick(column.name) : undefined,\n )}\n onKeyDown={callAllEventHandlers(\n column.props.onKeyDown,\n column.sortable ? this.bindHandlerKeyDown(column.name) : undefined,\n )}\n style={style}\n hidden={hidden}\n >\n {isGroup ? (\n <>\n <SColumn groupHead use={use}>\n <div>{column.props.children}</div>\n </SColumn>\n <SHead>{this.renderColumns(column.columns, 100 / cSize)}</SHead>\n </>\n ) : (\n <>\n <div>{column.props.children}</div>\n {column.sortable ? <SSortIcon active={column.active} /> : null}\n </>\n )}\n </SColumn>,\n );\n }\n\n render() {\n const SHead = Root;\n const { Children, styles, columnsChildren, onResize, $scrollRef, sticky } = this.asProps;\n const SHeadWrapper = Box;\n\n this.columns = flattenColumns(columnsChildren);\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(this.columns);\n\n logger.warn(\n sticky,\n \"'sticky' property is deprecated, use '<Sticky/>' wrapper\",\n this.asProps['data-ui-name'] || Head.displayName,\n );\n\n return sstyled(styles)(\n <SHeadWrapper sticky={sticky}>\n <ScrollArea\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n shadow\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef}>\n <SHead render={Box}>\n {this.renderColumns(columnsChildren, 100 / this.columns.length)}\n </SHead>\n </ScrollArea.Container>\n </ScrollArea>\n {Children.origin}\n </SHeadWrapper>,\n );\n }\n}\n\nexport default Head;\n"],"file":"Head.js"}
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export { default } from './DataTable';\nexport * from './DataTable';\n"],"file":"index.js"}
|
package/lib/cjs/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/types.ts"],"names":[],"mappings":";;AACA","sourcesContent":["import React from 'react';\nimport { ROW_GROUP } from './DataTable';\n\nexport type PseudoChildPropsGetter = (\n props: { [propName: string]: unknown },\n rowData: { [columnName: string]: unknown },\n index: number,\n) => { [propName: string]: unknown };\nexport type PropsLayer = {\n childrenPropsGetter?: PseudoChildPropsGetter;\n [propName: string]: unknown;\n};\n\nexport type SortDirection = 'asc' | 'desc';\nexport type Column<\n Props extends { [propName: string]: unknown } = { [propName: string]: unknown },\n> = {\n name: string;\n active: boolean;\n width: number;\n fixed?: 'left' | 'right';\n resizable?: boolean;\n sortable?: boolean | SortDirection;\n sortDirection: SortDirection;\n cssVar: string | string[];\n data?: unknown;\n props: {\n name: string;\n } & Partial<{\n onClick: (event: React.MouseEvent) => void;\n onKeyDown: (event: React.KeyboardEvent) => void;\n ref: React.RefObject<HTMLElement>;\n style: React.CSSProperties;\n fixed: 'left' | 'right';\n children: React.ReactNode[];\n\n resizable: boolean;\n sortable: boolean | SortDirection;\n sortDirection: SortDirection;\n }> &\n Props;\n columns: Column[];\n};\nexport type Cell = Pick<Column, 'name' | 'cssVar' | 'fixed' | 'data'> & {\n cellPropsLayers: PropsLayer[];\n};\nexport type RowData<\n Data extends { [columnName: string]: unknown } = { [columnName: string]: unknown },\n> = Data &\n Partial<{\n name: string;\n [ROW_GROUP]: RowData[];\n }>;\nexport type NestedCells = (Cell | NestedCells)[] & { flatRowData?: RowData };\n"],"file":"types.js"}
|