@semcore/data-table 1.5.3 → 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 +18 -0
- package/lib/cjs/Body.js +104 -63
- package/lib/cjs/Body.js.map +1 -1
- package/lib/cjs/DataTable.js +183 -144
- package/lib/cjs/DataTable.js.map +1 -1
- package/lib/cjs/Head.js +16 -9
- package/lib/cjs/Head.js.map +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/style/data-table.shadow.css +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 +107 -64
- package/lib/es6/Body.js.map +1 -1
- package/lib/es6/DataTable.js +185 -142
- package/lib/es6/DataTable.js.map +1 -1
- package/lib/es6/Head.js +17 -9
- package/lib/es6/Head.js.map +1 -1
- package/lib/es6/index.js.map +1 -1
- package/lib/es6/style/data-table.shadow.css +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 +19 -3
- 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/style/data-table.shadow.css +1 -1
- 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 -118
- 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; } }
|
|
@@ -67,45 +69,45 @@ var style = (
|
|
|
67
69
|
/*__reshadow_css_start__*/
|
|
68
70
|
_core.sstyled.insert(
|
|
69
71
|
/*__inner_css_start__*/
|
|
70
|
-
".
|
|
72
|
+
".___SDataTable_3r9at_gg_{position:relative}.___SHeadWrapper_3r9at_gg_{position:relative}.___SHeadWrapper_3r9at_gg_.__sticky_3r9at_gg_{position:-webkit-sticky;position:sticky;top:0;z-index:2}.___SHead_3r9at_gg_{display:flex;position:relative;flex-direction:row;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;z-index:0}.___SColumn_3r9at_gg_{display:flex;flex-grow:1;font-size:12px;line-height:18px;color:#333333;box-sizing:border-box;position:relative}.___SColumn_3r9at_gg_:focus{outline:none;box-shadow:inset 0 0 0 3px rgba(43,148,225,.3)}.___SColumn_3r9at_gg_.__hidden_3r9at_gg_{height:0!important;padding:0!important;overflow:hidden!important;border:none!important}.___SColumn_3r9at_gg_._use_primary_3r9at_gg_{padding:12px;border-right:1px solid #dee3e5;border-bottom:1px solid #dee3e5;background-color:#f2f3f4}.___SColumn_3r9at_gg_._use_secondary_3r9at_gg_{padding:8px;border-bottom:1px solid #a6b0b3;background-color:#fff}.___SColumn_3r9at_gg_.__use_3r9at_gg_:last-child{border-right:none}.___SColumn_3r9at_gg_.__group_3r9at_gg_.__use_3r9at_gg_{display:flex;flex-wrap:wrap;flex-direction:column;border-bottom:none;padding:0}.___SColumn_3r9at_gg_.__groupHead_3r9at_gg_.__use_3r9at_gg_{justify-content:center;border-right:none;z-index:1}.___SColumn_3r9at_gg_.__groupHead_3r9at_gg_._use_primary_3r9at_gg_{border-bottom:1px solid #dee3e5}.___SColumn_3r9at_gg_.__groupHead_3r9at_gg_._use_secondary_3r9at_gg_{border-bottom:1px solid #a6b0b3}.___SColumn_3r9at_gg_.__sortable_3r9at_gg_{cursor:pointer}.___SColumn_3r9at_gg_.__sortable_3r9at_gg_._use_primary_3r9at_gg_:hover{background-color:#e4e7e8}.___SColumn_3r9at_gg_.__active_3r9at_gg_._use_primary_3r9at_gg_{background-color:#e4e7e8}.___SColumn_3r9at_gg_.__resizable_3r9at_gg_:hover:after{background:#a6b0b3}.___SColumn_3r9at_gg_.__resizable_3r9at_gg_:after{content:\"\";position:absolute;bottom:0;right:-1px;height:100vh;width:1px;background:transparent;cursor:col-resize}.___SColumn_3r9at_gg_.__fixed_3r9at_gg_{position:-webkit-sticky;position:sticky;z-index:2}.___SSortIcon_3r9at_gg_{margin-top:2px;margin-left:4px;color:#bdc4c6}.___SSortIcon_3r9at_gg_.__active_3r9at_gg_{fill:#64787e}.___SBodyWrapper_3r9at_gg_{position:relative}.___SBody_3r9at_gg_{display:flex;flex-direction:column;position:relative;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.___SRow_3r9at_gg_{display:flex;flex-direction:row;position:relative}.___SRow_3r9at_gg_:hover .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_),.___SRow_3r9at_gg_.__active_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#f6f7f7}.___SRow_3r9at_gg_._theme_muted_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#f2f3f4}.___SRow_3r9at_gg_:hover .___SCell_3r9at_gg_._theme_muted_3r9at_gg_,.___SRow_3r9at_gg_._theme_muted_3r9at_gg_:hover .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_),.___SRow_3r9at_gg_._theme_muted_3r9at_gg_.__active_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#f6f7f7}.___SRow_3r9at_gg_._theme_info_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#d5eaf9}.___SRow_3r9at_gg_:hover .___SCell_3r9at_gg_._theme_info_3r9at_gg_,.___SRow_3r9at_gg_._theme_info_3r9at_gg_:hover .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_),.___SRow_3r9at_gg_._theme_info_3r9at_gg_.__active_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#cae4f8}.___SRow_3r9at_gg_._theme_success_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#e5f3e0}.___SRow_3r9at_gg_:hover .___SCell_3r9at_gg_._theme_success_3r9at_gg_,.___SRow_3r9at_gg_._theme_success_3r9at_gg_:hover .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_),.___SRow_3r9at_gg_._theme_success_3r9at_gg_.__active_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#dcefd6}.___SRow_3r9at_gg_._theme_warning_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#fef3e6}.___SRow_3r9at_gg_:hover .___SCell_3r9at_gg_._theme_warning_3r9at_gg_,.___SRow_3r9at_gg_._theme_warning_3r9at_gg_:hover .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_),.___SRow_3r9at_gg_._theme_warning_3r9at_gg_.__active_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#feefde}.___SRow_3r9at_gg_._theme_danger_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#fdeaea}.___SRow_3r9at_gg_:hover .___SCell_3r9at_gg_._theme_danger_3r9at_gg_,.___SRow_3r9at_gg_._theme_danger_3r9at_gg_:hover .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_),.___SRow_3r9at_gg_._theme_danger_3r9at_gg_.__active_3r9at_gg_ .___SCell_3r9at_gg_:not(.__theme_3r9at_gg_){background-color:#fce0e0}.___SCell_3r9at_gg_{display:flex;flex:1;font-size:14px;color:#333333;line-height:20px;box-sizing:border-box;border-bottom:1px solid #dee3e5;overflow:hidden;white-space:nowrap}.___SCell_3r9at_gg_._use_primary_3r9at_gg_{padding:12px;min-height:45px;background-color:#fff}.___SCell_3r9at_gg_._use_secondary_3r9at_gg_{padding:8px;min-height:37px;background-color:#fff}.___SCell_3r9at_gg_.__fixed_3r9at_gg_{position:-webkit-sticky;position:sticky;z-index:1}.___SCell_3r9at_gg_._theme_muted_3r9at_gg_{background-color:#f2f3f4}.___SCell_3r9at_gg_._theme_info_3r9at_gg_{background-color:#d5eaf9}.___SCell_3r9at_gg_._theme_success_3r9at_gg_{background-color:#e5f3e0}.___SCell_3r9at_gg_._theme_warning_3r9at_gg_{background-color:#fef3e6}.___SCell_3r9at_gg_._theme_danger_3r9at_gg_{background-color:#fdeaea}.___SScrollAreaBar_3r9at_gg_._orientation_horizontal_3r9at_gg_{position:-webkit-sticky;position:sticky;bottom:0;left:0;margin-top:-12px;z-index:2}.___SScrollAreaBar_3r9at_gg_._orientation_vertical_3r9at_gg_{width:12px}.___SScrollAreaBar_3r9at_gg_._orientation_horizontal_3r9at_gg_{margin-left:calc(var(--left_1jyhdcr) + 4px);margin-right:calc(var(--right_1jyhdcr) + 4px);width:calc(100% - var(--offsetSum_1jyhdcr) - 8px)}"
|
|
71
73
|
/*__inner_css_end__*/
|
|
72
|
-
, "
|
|
74
|
+
, "1jyhdcr_gg_")
|
|
73
75
|
/*__reshadow_css_end__*/
|
|
74
76
|
, {
|
|
75
|
-
"__SDataTable": "
|
|
76
|
-
"__SHeadWrapper": "
|
|
77
|
-
"_sticky": "
|
|
78
|
-
"__SHead": "
|
|
79
|
-
"__SColumn": "
|
|
80
|
-
"_hidden": "
|
|
81
|
-
"_use_primary": "
|
|
82
|
-
"_use_secondary": "
|
|
83
|
-
"_use": "
|
|
84
|
-
"_group": "
|
|
85
|
-
"_groupHead": "
|
|
86
|
-
"_sortable": "
|
|
87
|
-
"_active": "
|
|
88
|
-
"_resizable": "
|
|
89
|
-
"_fixed": "
|
|
90
|
-
"__SSortIcon": "
|
|
91
|
-
"__SBodyWrapper": "
|
|
92
|
-
"__SBody": "
|
|
93
|
-
"__SRow": "
|
|
94
|
-
"__SCell": "
|
|
95
|
-
"_theme": "
|
|
96
|
-
"_theme_muted": "
|
|
97
|
-
"_theme_info": "
|
|
98
|
-
"_theme_success": "
|
|
99
|
-
"_theme_warning": "
|
|
100
|
-
"_theme_danger": "
|
|
101
|
-
"__SScrollAreaBar": "
|
|
102
|
-
"_orientation_horizontal": "
|
|
103
|
-
"_orientation_vertical": "
|
|
104
|
-
"--left": "--
|
|
105
|
-
"--right": "--
|
|
106
|
-
"--offsetSum": "--
|
|
77
|
+
"__SDataTable": "___SDataTable_3r9at_gg_",
|
|
78
|
+
"__SHeadWrapper": "___SHeadWrapper_3r9at_gg_",
|
|
79
|
+
"_sticky": "__sticky_3r9at_gg_",
|
|
80
|
+
"__SHead": "___SHead_3r9at_gg_",
|
|
81
|
+
"__SColumn": "___SColumn_3r9at_gg_",
|
|
82
|
+
"_hidden": "__hidden_3r9at_gg_",
|
|
83
|
+
"_use_primary": "_use_primary_3r9at_gg_",
|
|
84
|
+
"_use_secondary": "_use_secondary_3r9at_gg_",
|
|
85
|
+
"_use": "__use_3r9at_gg_",
|
|
86
|
+
"_group": "__group_3r9at_gg_",
|
|
87
|
+
"_groupHead": "__groupHead_3r9at_gg_",
|
|
88
|
+
"_sortable": "__sortable_3r9at_gg_",
|
|
89
|
+
"_active": "__active_3r9at_gg_",
|
|
90
|
+
"_resizable": "__resizable_3r9at_gg_",
|
|
91
|
+
"_fixed": "__fixed_3r9at_gg_",
|
|
92
|
+
"__SSortIcon": "___SSortIcon_3r9at_gg_",
|
|
93
|
+
"__SBodyWrapper": "___SBodyWrapper_3r9at_gg_",
|
|
94
|
+
"__SBody": "___SBody_3r9at_gg_",
|
|
95
|
+
"__SRow": "___SRow_3r9at_gg_",
|
|
96
|
+
"__SCell": "___SCell_3r9at_gg_",
|
|
97
|
+
"_theme": "__theme_3r9at_gg_",
|
|
98
|
+
"_theme_muted": "_theme_muted_3r9at_gg_",
|
|
99
|
+
"_theme_info": "_theme_info_3r9at_gg_",
|
|
100
|
+
"_theme_success": "_theme_success_3r9at_gg_",
|
|
101
|
+
"_theme_warning": "_theme_warning_3r9at_gg_",
|
|
102
|
+
"_theme_danger": "_theme_danger_3r9at_gg_",
|
|
103
|
+
"__SScrollAreaBar": "___SScrollAreaBar_3r9at_gg_",
|
|
104
|
+
"_orientation_horizontal": "_orientation_horizontal_3r9at_gg_",
|
|
105
|
+
"_orientation_vertical": "_orientation_vertical_3r9at_gg_",
|
|
106
|
+
"--left": "--left_1jyhdcr",
|
|
107
|
+
"--right": "--right_1jyhdcr",
|
|
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",
|
|
@@ -386,7 +425,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
|
|
|
386
425
|
}, {
|
|
387
426
|
key: "render",
|
|
388
427
|
value: function render() {
|
|
389
|
-
var _ref = this
|
|
428
|
+
var _ref = this.asProps,
|
|
390
429
|
_ref2;
|
|
391
430
|
|
|
392
431
|
var SDataTable = _flexBox.Box;
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AADA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,kBAAkB,GAAG;AACzBC,EAAAA,IAAI,EAAE,KADmB;AAEzBC,EAAAA,GAAG,EAAE;AAFoB,CAA3B;AAIA,IAAMC,sBAAsB,GAAG,MAA/B;AAEA,IAAMC,SAAS,GAAGC,MAAM,CAAC,WAAD,CAAxB;;AAEA,IAAMC,SAAS,GAAG,OAAlB;;AAEA,SAASC,oBAAT,CAA8BC,IAA9B,EAAoC;AAClC,qBAAYA,IAAI,CAACC,OAAL,CAAaH,SAAb,EAAwB,GAAxB,CAAZ;AACD;;IAEKI,mB;;;;;AAeJ,+BAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,gGAJT,EAIS;AAAA,8GAFRC,kBAAMC,SAAN,EAEQ;AAAA,yGASA,UAACL,IAAD,EAAOM,CAAP,EAAa;AAC9B,UAAMC,MAAM,GAAG,MAAKC,OAAL,CAAaC,IAAb,CAAkB,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACV,IAAF,KAAWA,IAAlB;AAAA,OAAlB,CAAf;;AACA,aAAO,sEAEL,cAFK,EAGL,CACEO,MAAM,CAACP,IADT,EAEEO,MAAM,CAACI,MAAP,GAAgBnB,kBAAkB,CAACe,MAAM,CAACK,aAAR,CAAlC,GAA2DL,MAAM,CAACK,aAFpE,CAHK,EAOLN,CAPK,CAAP;AASD,KApBkB;AAAA,sGAsBH,YAAM;AACpB,YAAKO,WAAL;AACD,KAxBkB;AAAA,mGA0BN,YAAM;AAAA;;AACjB,8BAAKC,QAAL,2FAAeC,OAAf,gFAAwBC,cAAxB,CAAuC;AACrCC,QAAAA,KAAK,EAAE,SAD8B;AAErCC,QAAAA,MAAM,EAAE,SAF6B;AAGrCC,QAAAA,QAAQ,EAAE;AAH2B,OAAvC;AAKD,KAhCkB;AAGjB,QAAMd,SAAS,GAAG,6BAAlB,CAHiB,CAIjB;;AACA,UAAKe,aAAL,GAAqBf,SAAS,CAAC,MAAD,CAA9B;AACA,UAAKgB,aAAL,GAAqBhB,SAAS,CAAC,MAAD,CAA9B;AANiB;AAOlB;;;;WA2BD,qBAAYG,OAAZ,EAAqB;AAAA;;AACnBA,MAAAA,OAAO,CAACc,OAAR,CAAgB,UAACf,MAAD,EAAY;AAAA;;AAC1B,iCAAA,MAAI,CAACO,QAAL,CAAcC,OAAd,gFAAuBQ,KAAvB,CAA6BC,WAA7B,CAAyCjB,MAAM,CAACkB,MAAhD,YAA2DlB,MAAM,CAACmB,KAAlE;AACD,OAFD,EAEG,EAFH;AAGD;;;WAED,2BAAkBC,QAAlB,EAA4D;AAAA;;AAAA,UAAhCC,OAAgC,uEAAtB;AAAEC,QAAAA,KAAK,EAAEC;AAAT,OAAsB;AAC1D,UAAQC,IAAR,GAAiB,KAAKC,OAAtB,CAAQD,IAAR;AACA,UAAME,eAAe,GAAG,EAAxB;;AACA7B,wBAAM8B,QAAN,CAAeZ,OAAf,CAAuBK,QAAvB,EAAiC,UAACQ,KAAD,EAAW;AAAA;;AAC1C,YAAI,eAAC/B,kBAAMgC,cAAN,CAAqBD,KAArB,CAAL,EAAkC;AAClC,YAAIA,KAAK,CAACE,IAAN,KAAeC,eAAe,CAACC,MAAnC,EAA2C;AAE3C,2BAA+EJ,KAAK,CAAChC,KAArF;AAAA,YAAMwB,QAAN,gBAAMA,QAAN;AAAA,YAAgB3B,IAAhB,gBAAgBA,IAAhB;AAAA,8CAAsB6B,KAAtB;AAAA,YAAsBA,KAAtB,mCAA8BD,OAAO,CAACC,KAAtC;AAAA,YAA6CW,SAA7C,gBAA6CA,SAA7C;AAAA,YAAwDC,QAAxD,gBAAwDA,QAAxD;AAAA,YAAqEtC,KAArE;AACA,YAAMuC,OAAO,GAAG,CAAC1C,IAAjB;AACA,YAAIQ,OAAO,GAAG,IAAd;;AAEA,YAAIkC,OAAJ,EAAa;AACXlC,UAAAA,OAAO,GAAG,MAAI,CAACmC,iBAAL,CAAuBhB,QAAvB,EAAiC;AACzCE,YAAAA,KAAK,EAALA;AADyC,WAAjC,CAAV;AAGA7B,UAAAA,IAAI,GAAG,2BAAeQ,OAAf,EACJoC,GADI,CACA,UAAClC,CAAD;AAAA,mBAAOA,CAAC,CAACV,IAAT;AAAA,WADA,EAEJ6C,IAFI,CAEC,GAFD,CAAP;AAGA,cAAI,CAACrC,OAAO,CAACsC,MAAb,EAAqB;AACrBnB,UAAAA,QAAQ,GAAGvB,kBAAM8B,QAAN,CAAea,OAAf,CAAuBpB,QAAvB,EAAiCqB,MAAjC,CACT,UAACb,KAAD;AAAA,mBAAW,EAAE,gCAAMC,cAAN,CAAqBD,KAArB,KAA+BA,KAAK,CAACE,IAAN,KAAeC,eAAe,CAACC,MAAhE,CAAX;AAAA,WADS,CAAX;AAGD;;AAED,YAAMhC,MAAM,GAAG,MAAI,CAACC,OAAL,CAAaC,IAAb,CAAkB,UAACC,CAAD;AAAA,iBAAOA,CAAC,CAACV,IAAF,KAAWA,IAAlB;AAAA,SAAlB,CAAf;;AAEAiC,QAAAA,eAAe,CAACgB,IAAhB,CAAqB;AACnB,cAAIvB,KAAJ,GAAY;AAAA;;AACV,mBAAO,+BAAKvB,KAAL,CAAW+C,GAAX,CAAenC,OAAf,gFAAwBoC,qBAAxB,GAAgDzB,KAAhD,KAAyD,CAAhE;AACD,WAHkB;;AAInB1B,UAAAA,IAAI,EAAJA,IAJmB;AAKnByB,UAAAA,MAAM,EAAE1B,oBAAoB,CAACC,IAAD,CALT;AAMnB6B,UAAAA,KAAK,EAALA,KANmB;AAOnBW,UAAAA,SAAS,EAATA,SAPmB;AAQnB7B,UAAAA,MAAM,EAAEoB,IAAI,CAAC,CAAD,CAAJ,KAAY/B,IARD;AASnByC,UAAAA,QAAQ,EAARA,QATmB;AAUnB7B,UAAAA,aAAa,EACXmB,IAAI,CAAC,CAAD,CAAJ,KAAY/B,IAAZ,GACI+B,IAAI,CAAC,CAAD,CADR,GAEI,CAAAxB,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEK,aAAR,MACC,OAAO6B,QAAP,IAAmB,QAAnB,GAA8BA,QAA9B,GAAyC9C,sBAD1C,CAba;AAenBa,UAAAA,OAAO,EAAPA,OAfmB;AAgBnBL,UAAAA,KAAK;AACH+C,YAAAA,GAAG,EAAE,CAAA3C,MAAM,SAAN,IAAAA,MAAM,WAAN,6BAAAA,MAAM,CAAEJ,KAAR,gEAAe+C,GAAf,kBAAsB9C,kBAAMC,SAAN,EADxB;AAEHsB,YAAAA,QAAQ,EAARA;AAFG,aAGAxB,KAHA;AAhBc,SAArB;AAsBD,OA7CD;;AA8CA,aAAO8B,eAAP;AACD;;;WAED,sBAAa9B,KAAb,EAAoB;AAClB,UAAQiD,GAAR,GAAgB,KAAKpB,OAArB,CAAQoB,GAAR;AACA,UAAMnB,eAAe,GAAG,KAAKU,iBAAL,CAAuBxC,KAAK,CAACwB,QAA7B,CAAxB;AACA,WAAKnB,OAAL,GAAe,2BAAeyB,eAAf,CAAf;AACA,aAAO;AACLoB,QAAAA,YAAY,EAAE,wCAAqB,KAAKC,gBAA1B,EAA4C,KAAKC,UAAjD,CADT;AAELtB,QAAAA,eAAe,EAAfA,eAFK;AAGLmB,QAAAA,GAAG,EAAHA,GAHK;AAILI,QAAAA,QAAQ,EAAE,KAAKC,aAJV;AAKLC,QAAAA,UAAU,EAAE,KAAKrC;AALZ,OAAP;AAOD;;;WAED,sBAAalB,KAAb,EAAoB;AAClB,0BAAsB,KAAK6B,OAA3B;AAAA,UAAQ2B,IAAR,iBAAQA,IAAR;AAAA,UAAcP,GAAd,iBAAcA,GAAd;AACA,UAAMQ,UAAU,GAAG,EAAnB;AACA,UAAMC,SAAS,GAAG,EAAlB;;AACAzD,wBAAM8B,QAAN,CAAeZ,OAAf,CAAuBnB,KAAK,CAACwB,QAA7B,EAAuC,UAACQ,KAAD,EAAW;AAChD,0BAAI/B,kBAAMgC,cAAN,CAAqBD,KAArB,CAAJ,EAAiC;AAC/B,8BAAqCA,KAAK,CAAChC,KAA3C;AAAA,cAAQH,IAAR,iBAAQA,IAAR;AAAA,cAAc2B,QAAd,iBAAcA,QAAd;AAAA,cAA2BmC,KAA3B;;AACA,cAAI3B,KAAK,CAACE,IAAN,KAAeC,eAAe,CAACyB,IAA/B,IAAuC/D,IAA3C,EAAiD;AAC/CA,YAAAA,IAAI,CAACgE,KAAL,CAAW,GAAX,EAAgB1C,OAAhB,CAAwB,UAACtB,IAAD,EAAU;AAChC4D,cAAAA,UAAU,CAAC5D,IAAD,CAAV,GAAmB4D,UAAU,CAAC5D,IAAD,CAAV,IAAoB,EAAvC;AACA4D,cAAAA,UAAU,CAAC5D,IAAD,CAAV,CAAiBiD,IAAjB,iCACKa,KADL;AAEEG,gBAAAA,YAAY,EAAEtC;AAFhB;AAID,aAND;AAOD;;AACD,cAAIQ,KAAK,CAACE,IAAN,KAAeC,eAAe,CAAC4B,GAAnC,EAAwC;AACtCL,YAAAA,SAAS,CAACZ,IAAV,iCACKa,KADL;AAEEK,cAAAA,WAAW,EAAExC;AAFf;AAID;AACF;AACF,OAnBD;;AAqBA,aAAO;AACLnB,QAAAA,OAAO,EAAE,KAAKA,OADT;AAEL4D,QAAAA,IAAI,EAAE,KAAKC,UAAL,CAAgBV,IAAhB,EAAsBC,UAAtB,CAFD;AAGLR,QAAAA,GAAG,EAAHA,GAHK;AAILS,QAAAA,SAAS,EAATA,SAJK;AAKLH,QAAAA,UAAU,EAAE,KAAKtC;AALZ,OAAP;AAOD;;;WAED,oBAAWuC,IAAX,EAAiBC,UAAjB,EAA6B;AAC3B,UAAMpD,OAAO,GAAG,KAAKA,OAArB;;AAEA,eAAS8D,SAAT,CAAmBX,IAAnB,EAAoD;AAAA,YAA3B/B,OAA2B,uEAAjB;AAAE2C,UAAAA,OAAO,EAAE;AAAX,SAAiB;AAClD,eAAOZ,IAAI,CAACf,GAAL,CAAS,UAAC4B,GAAD,EAAS;AACvB,cAAMC,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAYH,GAAZ,EAAiBI,MAAjB,CAAwB,UAACC,GAAD,EAAM7E,IAAN,EAAe;AAC3D,gBAAM8E,KAAK,GAAG9E,IAAI,CAACgE,KAAL,CAAW,GAAX,CAAd;;AACA,gBAAIc,KAAK,CAAChC,MAAN,IAAgB,CAApB,EAAuB;AACrB+B,cAAAA,GAAG,CAAC5B,IAAJ,CAAS,CAAC6B,KAAD,EAAQN,GAAG,CAACxE,IAAD,CAAX,CAAT;AACD;;AACD,mBAAO6E,GAAP;AACD,WANqB,EAMnB,EANmB,CAAtB;AAOA,cAAME,gBAAgB,GAAGN,aAAa,CACnCG,MADsB,CACf,UAACC,GAAD;AAAA;AAAA,gBAAOC,KAAP;;AAAA,mBAAkBD,GAAG,CAACG,MAAJ,CAAWF,KAAX,CAAlB;AAAA,WADe,EACsB,EADtB,EAEtB9B,MAFsB,CAEf,UAAChD,IAAD,EAAOiF,CAAP,EAAUC,GAAV;AAAA,mBAAkBA,GAAG,CAACC,OAAJ,CAAYnF,IAAZ,MAAsBiF,CAAxC;AAAA,WAFe,CAAzB;AAGA,cAAMG,SAAS,GAAGZ,GAAG,CAAC5E,SAAD,CAAH,IAAkB,EAApC;AACA,cAAMyF,aAAa,GAAGD,SAAS,CAC5BR,MADmB,CACZ,UAACC,GAAD,EAAML,GAAN;AAAA,mBAAcK,GAAG,CAACG,MAAJ,CAAWN,MAAM,CAACC,IAAP,CAAYH,GAAZ,CAAX,CAAd;AAAA,WADY,EACgC,EADhC,EAEnBxB,MAFmB,CAEZ,UAAChD,IAAD,EAAOiF,CAAP,EAAUC,GAAV;AAAA,mBAAkBA,GAAG,CAACC,OAAJ,CAAYnF,IAAZ,MAAsBiF,CAAxC;AAAA,WAFY,CAAtB;AAGA,cAAIK,UAAU,GAAG,KAAjB;AAEA,cAAMC,KAAK,GAAG,EAAd;AACAA,UAAAA,KAAK,CAACC,IAAN,GAAahB,GAAb;AACA,iBAAOhE,OAAO,CAACoE,MAAR,CAAe,UAACC,GAAD,EAAMtE,MAAN,EAAiB;AACrC,gBAAMkF,WAAW,GAAGhB,aAAa,CAAChE,IAAd,CAAmB,UAACiF,KAAD;AAAA;;AAAA,gCAAWA,KAAK,CAAC,CAAD,CAAhB,4CAAW,QAAUC,QAAV,CAAmBpF,MAAM,CAACP,IAA1B,CAAX;AAAA,aAAnB,CAApB;;AACA,gBAAIyF,WAAJ,EAAiB;AACf,iEAAsBA,WAAtB;AAAA,kBAAOX,KAAP;AAAA,kBAAcnB,KAAd;;AACA,kBAAImB,KAAK,CAAC,CAAD,CAAL,KAAavE,MAAM,CAACP,IAAxB,EAA8B;AAC5B6E,gBAAAA,GAAG,CAAC5B,IAAJ,CAAS;AACPjD,kBAAAA,IAAI,EAAE8E,KAAK,CAACjC,IAAN,CAAW,GAAX,CADC;AAEPpB,kBAAAA,MAAM,EAAEqD,KAAK,CAAClC,GAAN,CAAU7C,oBAAV,CAFD;AAGP8B,kBAAAA,KAAK,EAAEtB,MAAM,CAACsB,KAHP;AAIP8B,kBAAAA,IAAI,EAAJA,KAJO;AAKPiC,kBAAAA,WAAW,EAAEhC,UAAU,CAACrD,MAAM,CAACP,IAAR,CAAV,IAA2B;AALjC,iBAAT;AAOD;AACF,aAXD,MAWO,IAAIO,MAAM,CAACP,IAAP,IAAewE,GAAnB,EAAwB;AAC7BK,cAAAA,GAAG,CAAC5B,IAAJ,CAAS;AACPjD,gBAAAA,IAAI,EAAEO,MAAM,CAACP,IADN;AAEPyB,gBAAAA,MAAM,EAAElB,MAAM,CAACkB,MAFR;AAGPI,gBAAAA,KAAK,EAAEtB,MAAM,CAACsB,KAHP;AAIP8B,gBAAAA,IAAI,EAAEa,GAAG,CAACjE,MAAM,CAACP,IAAR,CAJF;AAKP4F,gBAAAA,WAAW,EAAEhC,UAAU,CAACrD,MAAM,CAACP,IAAR,CAAV,IAA2B;AALjC,eAAT;AAOD,aARM,MAQA,IAAI,CAACsF,UAAD,IAAeD,aAAa,CAACM,QAAd,CAAuBpF,MAAM,CAACP,IAA9B,CAAnB,EAAwD;AAC7D;AACAsF,cAAAA,UAAU,GAAG,IAAb;AACAT,cAAAA,GAAG,CAAC5B,IAAJ,CACEqB,SAAS,CAACc,SAAD,EAAY;AACnBb,gBAAAA,OAAO,gDAAMG,MAAM,CAACC,IAAP,CAAYH,GAAZ,CAAN,uCAA2BO,gBAA3B;AADY,eAAZ,CADX;AAKD,aARM,MAQA,IAAI,CAAC,8CAAInD,OAAO,CAAC2C,OAAZ,uCAAwBc,aAAxB,GAAuCM,QAAvC,CAAgDpF,MAAM,CAACP,IAAvD,CAAL,EAAmE;AACxE6E,cAAAA,GAAG,CAAC5B,IAAJ,CAAS;AACPjD,gBAAAA,IAAI,EAAEO,MAAM,CAACP,IADN;AAEPyB,gBAAAA,MAAM,EAAElB,MAAM,CAACkB,MAFR;AAGPI,gBAAAA,KAAK,EAAEtB,MAAM,CAACsB,KAHP;AAIP8B,gBAAAA,IAAI,EAAE,IAJC;AAKPiC,gBAAAA,WAAW,EAAEhC,UAAU,CAACrD,MAAM,CAACP,IAAR,CAAV,IAA2B;AALjC,eAAT;AAOD;;AACD,mBAAO6E,GAAP;AACD,WAvCM,EAuCJU,KAvCI,CAAP;AAwCD,SA3DM,CAAP;AA4DD;;AAED,aAAOjB,SAAS,CAACX,IAAD,CAAhB;AACD;;;WAED,8BAAqB;AACnB,WAAKkC,WAAL,CAAiB,KAAKrF,OAAtB;AACD;;;WAED,kBAAS;AAAA;AAAA;;AACP,UAAMsF,UAAU,GAIMC,YAJtB;AACA,2BAA6B,KAAK/D,OAAlC;AAAA,UAAQE,QAAR,kBAAQA,QAAR;AAAA,UAAkB8D,MAAlB,kBAAkBA,MAAlB;AAEA,qBAAO,mBAAQA,MAAR,CAAP,eACE,gCAAC,UAAD;AAAA,0BAAyC,CAAC,MAAD,CAAzC;AAAA,eAAwD,KAAKlF;AAA7D,+BACE,gCAAC,QAAD,2BADF,CADF;AAKD;;;EA5O+BmF,e;;iCAA5B/F,mB,iBACiB,iB;iCADjBA,mB,WAGWqB,K;iCAHXrB,mB,kBAKkB;AACpBkD,EAAAA,GAAG,EAAE,SADe;AAEpBrB,EAAAA,IAAI,EAAE,EAFc;AAGpB4B,EAAAA,IAAI,EAAE;AAHc,C;;AA0OxB,SAASuC,mBAAT,GAA+B;AAC7B,SAAO,IAAP;AACD;;AAED,IAAM5D,eAAe,GAAG,sBACtBpC,mBADsB,EAEtB;AACEiG,EAAAA,IAAI,EAAJA,gBADF;AAEEC,EAAAA,IAAI,EAAJA,gBAFF;AAGE7D,EAAAA,MAAM,EAAE2D,mBAHV;AAIEnC,EAAAA,IAAI,EAAEmC,mBAJR;AAKEhC,EAAAA,GAAG,EAAEgC;AALP,CAFsB,EAStB,EATsB,CAAxB;eAae5D,e","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"}
|