@semcore/data-table 2.1.0 → 2.2.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.
@@ -69,43 +69,45 @@ var style = (
69
69
  /*__reshadow_css_start__*/
70
70
  _core.sstyled.insert(
71
71
  /*__inner_css_start__*/
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)}"
72
+ ".___SDataTable_129rn_gg_{position:relative}.___SHeadWrapper_129rn_gg_{position:relative}.___SHeadWrapper_129rn_gg_.__sticky_129rn_gg_{position:-webkit-sticky;position:sticky;top:0;z-index:2}.___SHead_129rn_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_129rn_gg_{display:flex;flex-grow:1;font-size:12px;line-height:18px;color:#333333;box-sizing:border-box;position:relative}.___SColumn_129rn_gg_:focus{outline:none;box-shadow:inset 0 0 0 3px rgba(43,148,225,.3)}.___SColumn_129rn_gg_.__hidden_129rn_gg_{height:0!important;padding:0!important;overflow:hidden!important;border:none!important}.___SColumn_129rn_gg_._use_primary_129rn_gg_{padding:12px;border-right:1px solid #dee3e5;border-bottom:1px solid #dee3e5;background-color:#f2f3f4}.___SColumn_129rn_gg_._use_secondary_129rn_gg_{padding:8px;border-bottom:1px solid #a6b0b3;background-color:#fff}.___SColumn_129rn_gg_.__use_129rn_gg_:last-child{border-right:none}.___SColumn_129rn_gg_.__group_129rn_gg_.__use_129rn_gg_{display:flex;flex-wrap:wrap;flex-direction:column;border-bottom:none;padding:0}.___SColumn_129rn_gg_.__groupHead_129rn_gg_.__use_129rn_gg_{justify-content:center;border-right:none;z-index:1}.___SColumn_129rn_gg_.__groupHead_129rn_gg_._use_primary_129rn_gg_{border-bottom:1px solid #dee3e5}.___SColumn_129rn_gg_.__groupHead_129rn_gg_._use_secondary_129rn_gg_{border-bottom:1px solid #a6b0b3}.___SColumn_129rn_gg_.__sortable_129rn_gg_{cursor:pointer}.___SColumn_129rn_gg_.__sortable_129rn_gg_._use_primary_129rn_gg_:hover{background-color:#e4e7e8}.___SColumn_129rn_gg_.__active_129rn_gg_._use_primary_129rn_gg_{background-color:#e4e7e8}.___SColumn_129rn_gg_.__resizable_129rn_gg_:hover:after{background:#a6b0b3}.___SColumn_129rn_gg_.__resizable_129rn_gg_:after{content:\"\";position:absolute;bottom:0;right:-1px;height:100vh;width:1px;background:transparent;cursor:col-resize}.___SColumn_129rn_gg_.__fixed_129rn_gg_{position:-webkit-sticky;position:sticky;z-index:2}.___SSortIcon_129rn_gg_{margin-top:2px;margin-left:4px;color:#bdc4c6}.___SSortIcon_129rn_gg_.__active_129rn_gg_{fill:#64787e}.___SBodyWrapper_129rn_gg_{position:relative}.___SBody_129rn_gg_{display:flex;flex-direction:column;position:relative;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.___SRow_129rn_gg_{display:flex;flex-direction:row;position:relative}.___SRow_129rn_gg_:hover .___SCell_129rn_gg_:not(.__theme_129rn_gg_),.___SRow_129rn_gg_.__active_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#f6f7f7}.___SRow_129rn_gg_._theme_muted_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#f2f3f4}.___SRow_129rn_gg_:hover .___SCell_129rn_gg_._theme_muted_129rn_gg_,.___SRow_129rn_gg_._theme_muted_129rn_gg_:hover .___SCell_129rn_gg_:not(.__theme_129rn_gg_),.___SRow_129rn_gg_._theme_muted_129rn_gg_.__active_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#f6f7f7}.___SRow_129rn_gg_._theme_info_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#d5eaf9}.___SRow_129rn_gg_:hover .___SCell_129rn_gg_._theme_info_129rn_gg_,.___SRow_129rn_gg_._theme_info_129rn_gg_:hover .___SCell_129rn_gg_:not(.__theme_129rn_gg_),.___SRow_129rn_gg_._theme_info_129rn_gg_.__active_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#cae4f8}.___SRow_129rn_gg_._theme_success_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#e5f3e0}.___SRow_129rn_gg_:hover .___SCell_129rn_gg_._theme_success_129rn_gg_,.___SRow_129rn_gg_._theme_success_129rn_gg_:hover .___SCell_129rn_gg_:not(.__theme_129rn_gg_),.___SRow_129rn_gg_._theme_success_129rn_gg_.__active_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#dcefd6}.___SRow_129rn_gg_._theme_warning_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#fef3e6}.___SRow_129rn_gg_:hover .___SCell_129rn_gg_._theme_warning_129rn_gg_,.___SRow_129rn_gg_._theme_warning_129rn_gg_:hover .___SCell_129rn_gg_:not(.__theme_129rn_gg_),.___SRow_129rn_gg_._theme_warning_129rn_gg_.__active_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#feefde}.___SRow_129rn_gg_._theme_danger_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#fdeaea}.___SRow_129rn_gg_:hover .___SCell_129rn_gg_._theme_danger_129rn_gg_,.___SRow_129rn_gg_._theme_danger_129rn_gg_:hover .___SCell_129rn_gg_:not(.__theme_129rn_gg_),.___SRow_129rn_gg_._theme_danger_129rn_gg_.__active_129rn_gg_ .___SCell_129rn_gg_:not(.__theme_129rn_gg_){background-color:#fce0e0}.___SRow_129rn_gg_.__positioned_129rn_gg_{position:absolute}.___SCell_129rn_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_129rn_gg_._use_primary_129rn_gg_{padding:12px;min-height:45px;background-color:#fff}.___SCell_129rn_gg_._use_secondary_129rn_gg_{padding:8px;min-height:37px;background-color:#fff}.___SCell_129rn_gg_.__fixed_129rn_gg_{position:-webkit-sticky;position:sticky;z-index:1}.___SCell_129rn_gg_._theme_muted_129rn_gg_{background-color:#f2f3f4}.___SCell_129rn_gg_._theme_info_129rn_gg_{background-color:#d5eaf9}.___SCell_129rn_gg_._theme_success_129rn_gg_{background-color:#e5f3e0}.___SCell_129rn_gg_._theme_warning_129rn_gg_{background-color:#fef3e6}.___SCell_129rn_gg_._theme_danger_129rn_gg_{background-color:#fdeaea}.___SScrollAreaBar_129rn_gg_._orientation_horizontal_129rn_gg_{position:-webkit-sticky;position:sticky;bottom:0;left:0;margin-top:-12px;z-index:2}.___SScrollAreaBar_129rn_gg_._orientation_vertical_129rn_gg_{width:12px}.___SScrollAreaBar_129rn_gg_._orientation_horizontal_129rn_gg_{margin-left:calc(var(--left_n8z383) + 4px);margin-right:calc(var(--right_n8z383) + 4px);width:calc(100% - var(--offsetSum_n8z383) - 8px)}.___SHeightHold_129rn_gg_{position:absolute;top:0;width:100px}"
73
73
  /*__inner_css_end__*/
74
- , "1jyhdcr_gg_")
74
+ , "n8z383_gg_")
75
75
  /*__reshadow_css_end__*/
76
76
  , {
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"
77
+ "__SDataTable": "___SDataTable_129rn_gg_",
78
+ "__SHeadWrapper": "___SHeadWrapper_129rn_gg_",
79
+ "_sticky": "__sticky_129rn_gg_",
80
+ "__SHead": "___SHead_129rn_gg_",
81
+ "__SColumn": "___SColumn_129rn_gg_",
82
+ "_hidden": "__hidden_129rn_gg_",
83
+ "_use_primary": "_use_primary_129rn_gg_",
84
+ "_use_secondary": "_use_secondary_129rn_gg_",
85
+ "_use": "__use_129rn_gg_",
86
+ "_group": "__group_129rn_gg_",
87
+ "_groupHead": "__groupHead_129rn_gg_",
88
+ "_sortable": "__sortable_129rn_gg_",
89
+ "_active": "__active_129rn_gg_",
90
+ "_resizable": "__resizable_129rn_gg_",
91
+ "_fixed": "__fixed_129rn_gg_",
92
+ "__SSortIcon": "___SSortIcon_129rn_gg_",
93
+ "__SBodyWrapper": "___SBodyWrapper_129rn_gg_",
94
+ "__SBody": "___SBody_129rn_gg_",
95
+ "__SRow": "___SRow_129rn_gg_",
96
+ "__SCell": "___SCell_129rn_gg_",
97
+ "_theme": "__theme_129rn_gg_",
98
+ "_theme_muted": "_theme_muted_129rn_gg_",
99
+ "_theme_info": "_theme_info_129rn_gg_",
100
+ "_theme_success": "_theme_success_129rn_gg_",
101
+ "_theme_warning": "_theme_warning_129rn_gg_",
102
+ "_theme_danger": "_theme_danger_129rn_gg_",
103
+ "_positioned": "__positioned_129rn_gg_",
104
+ "__SScrollAreaBar": "___SScrollAreaBar_129rn_gg_",
105
+ "_orientation_horizontal": "_orientation_horizontal_129rn_gg_",
106
+ "_orientation_vertical": "_orientation_vertical_129rn_gg_",
107
+ "--left": "--left_n8z383",
108
+ "--right": "--right_n8z383",
109
+ "--offsetSum": "--offsetSum_n8z383",
110
+ "__SHeightHold": "___SHeightHold_129rn_gg_"
109
111
  });
110
112
  var REVERSED_SORT_DIRECTION = {
111
113
  desc: 'asc',
@@ -131,7 +133,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
131
133
  (0, _classCallCheck2["default"])(this, RootDefinitionTable);
132
134
  _this = _super.call(this, props);
133
135
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "columns", []);
134
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "tableRef", /*#__PURE__*/_react["default"].createRef());
136
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "tableRef", _react["default"].createRef());
135
137
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "scrollBodyRef", null);
136
138
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "scrollHeadRef", null);
137
139
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handlerSortClick", function (name, event) {
@@ -145,9 +147,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
145
147
  _this.forceUpdate();
146
148
  });
147
149
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "scrollToUp", function () {
148
- var _this$tableRef, _this$tableRef$curren;
149
-
150
- (_this$tableRef = _this.tableRef) === null || _this$tableRef === void 0 ? void 0 : (_this$tableRef$curren = _this$tableRef.current) === null || _this$tableRef$curren === void 0 ? void 0 : _this$tableRef$curren.scrollIntoView({
150
+ _this.tableRef?.current?.scrollIntoView({
151
151
  block: 'nearest',
152
152
  inline: 'nearest',
153
153
  behavior: 'smooth'
@@ -176,10 +176,8 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
176
176
 
177
177
  try {
178
178
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
179
- var _this$tableRef$curren2;
180
-
181
179
  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"));
180
+ this.tableRef.current?.style.setProperty(cssVar, "".concat(_column.width, "px"));
183
181
  }
184
182
  } catch (err) {
185
183
  _iterator2.e(err);
@@ -187,9 +185,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
187
185
  _iterator2.f();
188
186
  }
189
187
  } 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"));
188
+ this.tableRef.current?.style.setProperty(_column.cssVar, "".concat(_column.width, "px"));
193
189
  }
194
190
  }
195
191
  } catch (err) {
@@ -210,9 +206,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
210
206
  var columnsChildren = [];
211
207
 
212
208
  _react["default"].Children.forEach(children, function (child) {
213
- var _column$props;
214
-
215
- if (! /*#__PURE__*/_react["default"].isValidElement(child)) return;
209
+ if (!_react["default"].isValidElement(child)) return;
216
210
  if (child.type !== DefinitionTable.Column) return;
217
211
  var _ref3 = child.props,
218
212
  children = _ref3.children,
@@ -235,7 +229,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
235
229
  }).join('/');
236
230
  if (!columns.length) return;
237
231
  children = _react["default"].Children.toArray(children).filter(function (child) {
238
- return !( /*#__PURE__*/_react["default"].isValidElement(child) && child.type === DefinitionTable.Column);
232
+ return !(_react["default"].isValidElement(child) && child.type === DefinitionTable.Column);
239
233
  });
240
234
  }
241
235
 
@@ -245,9 +239,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
245
239
 
246
240
  columnsChildren.push({
247
241
  get width() {
248
- var _this$props$ref$curre;
249
-
250
- return ((_this$props$ref$curre = this.props.ref.current) === null || _this$props$ref$curre === void 0 ? void 0 : _this$props$ref$curre.getBoundingClientRect().width) || 0;
242
+ return this.props.ref.current?.getBoundingClientRect().width || 0;
251
243
  },
252
244
 
253
245
  name: name,
@@ -256,11 +248,11 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
256
248
  resizable: resizable,
257
249
  active: sort[0] === name,
258
250
  sortable: sortable,
259
- sortDirection: sort[0] === name ? sort[1] : (column === null || column === void 0 ? void 0 : column.sortDirection) || (typeof sortable == 'string' ? sortable : DEFAULT_SORT_DIRECTION),
251
+ sortDirection: sort[0] === name ? sort[1] : column?.sortDirection || (typeof sortable == 'string' ? sortable : DEFAULT_SORT_DIRECTION),
260
252
  columns: columns,
261
253
  props: _objectSpread({
262
254
  name: name,
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(),
255
+ ref: column?.props?.ref || _react["default"].createRef(),
264
256
  children: children
265
257
  }, props)
266
258
  });
@@ -287,12 +279,13 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
287
279
  value: function getBodyProps(props) {
288
280
  var _this$asProps = this.asProps,
289
281
  data = _this$asProps.data,
290
- use = _this$asProps.use;
282
+ use = _this$asProps.use,
283
+ uniqueKey = _this$asProps.uniqueKey;
291
284
  var cellPropsLayers = {};
292
285
  var rowPropsLayers = [];
293
286
 
294
287
  _react["default"].Children.forEach(props.children, function (child) {
295
- if ( /*#__PURE__*/_react["default"].isValidElement(child)) {
288
+ if (_react["default"].isValidElement(child)) {
296
289
  var _ref5 = child.props,
297
290
  name = _ref5.name,
298
291
  children = _ref5.children,
@@ -315,13 +308,15 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
315
308
  }
316
309
  });
317
310
 
318
- return {
311
+ var result = {
319
312
  columns: this.columns,
320
313
  rows: this.dataToRows(data, cellPropsLayers),
314
+ uniqueKey: uniqueKey,
321
315
  use: use,
322
316
  rowPropsLayers: rowPropsLayers,
323
317
  $scrollRef: this.scrollBodyRef
324
318
  };
319
+ return result;
325
320
  }
326
321
  }, {
327
322
  key: "dataToRows",
@@ -445,6 +440,7 @@ var RootDefinitionTable = /*#__PURE__*/function (_Component) {
445
440
  (0, _defineProperty2["default"])(RootDefinitionTable, "style", style);
446
441
  (0, _defineProperty2["default"])(RootDefinitionTable, "defaultProps", {
447
442
  use: 'primary',
443
+ uniqueKey: 'id',
448
444
  sort: [],
449
445
  data: []
450
446
  });
@@ -1 +1 @@
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"}
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","uniqueKey","cellPropsLayers","rowPropsLayers","other","Cell","split","childrenPropsGetter","Row","result","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 uniqueKey: string;\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 /** Field name in one data entity that is unique accross all set of data\n * @default id\n */\n uniqueKey?: string;\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 /** When enabled, only visually acessable rows are rendered.\n * `tollerance` property controls how many rows outside of viewport are render.\n * `rowHeight` fixes the rows height if it known. If not provided, first row node height is measured.\n * @default { tollerance: 2 }\n */\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\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 uniqueKey: 'id',\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, uniqueKey } = 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 const result = {\n columns: this.columns,\n rows: this.dataToRows(data, cellPropsLayers),\n uniqueKey,\n use,\n rowPropsLayers,\n $scrollRef: this.scrollBodyRef,\n };\n\n return result;\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
@@ -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, _column$columns;
114
+ var _ref2;
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 = ((_column$columns = column.columns) === null || _column$columns === void 0 ? void 0 : _column$columns.length) > 0;
123
+ var isGroup = 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),
@@ -1 +1 @@
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":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AADA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,IAAI,EAAEC,aADa;AAEnBC,EAAAA,GAAG,EAAEC;AAFc,CAArB;;IAeMC,I;;;;;;;;;;;;;;;gGACgB,E;6GAIG,UAACC,IAAD;AAAA,aAAkB,UAACC,KAAD,EAA6B;AACpE,cAAKC,OAAL,CAAaC,YAAb,CAA0BH,IAA1B,EAAgCC,KAAhC;AACD,OAFsB;AAAA,K;2GAIF,UAACD,IAAD;AAAA,aAAkB,UAACC,KAAD,EAAgC;AACrE,YAAIA,KAAK,CAACG,IAAN,KAAe,OAAnB,EAA4B;AAC1B,gBAAKF,OAAL,CAAaC,YAAb,CAA0BH,IAA1B,EAAgCC,KAAhC;AACD;AACF,OAJoB;AAAA,K;;;;;;WAMrB,uBAAcI,OAAd,EAAiCC,KAAjC,EAAgD;AAAA;;AAC9C,aAAOD,OAAO,CAACE,GAAR,CAAY,UAACC,MAAD;AAAA,eAAY,MAAI,CAACC,YAAL,CAAkBD,MAAlB,EAA0BF,KAA1B,CAAZ;AAAA,OAAZ,CAAP;AACD;;;WAED,sBAAaE,MAAb,EAA6BF,KAA7B,EAA4C;AAAA;;AAC1C,0BAAgC,KAAKJ,OAArC;AAAA,UAAQQ,MAAR,iBAAQA,MAAR;AAAA,UAAgBC,GAAhB,iBAAgBA,GAAhB;AAAA,UAAqBC,MAArB,iBAAqBA,MAArB;AACA,UAAMC,OAAO,GAAGC,aAAhB;AACA,UAAMC,KAAK,GAAGC,YAAd;AACA,UAAMC,SAAS,GAAGvB,YAAY,CAACc,MAAM,CAACU,aAAR,CAA9B;AACA,UAAMC,OAAO,GAAG,oBAAAX,MAAM,CAACH,OAAP,oEAAgBe,MAAhB,IAAyB,CAAzC;AACA,UAAMC,KAAK,GAAGF,OAAO,GAAG,2BAAeX,MAAM,CAACH,OAAtB,EAA+Be,MAAlC,GAA2C,CAAhE;;AACA,2BAAsB,0BAAcZ,MAAd,EAAsB,KAAKH,OAA3B,CAAtB;AAAA;AAAA,UAAOL,IAAP;AAAA,UAAasB,KAAb;;AAEA,UAAMC,KAAK;AACTC,QAAAA,SAAS,EAAEhB,MAAM,CAACiB,KAAP,CAAaC,IAAb,KAAsBC,SAAtB,cAAsCrB,KAAK,GAAGe,KAA9C;AADF,SAENb,MAAM,CAACiB,KAAP,CAAaF,KAFP,CAAX;;AAKA,UAAIvB,IAAI,KAAK2B,SAAT,IAAsBL,KAAK,KAAKK,SAApC,EAA+C;AAC7CJ,QAAAA,KAAK,CAACvB,IAAD,CAAL,GAAcsB,KAAd;AACD;;AAED,qBAAO,mBAAQZ,MAAR,CAAP,eACE,gCAAC,OAAD;AAAA,eACOF,MAAM,CAACR,IADd;AAAA,eAEOW,GAFP;AAAA,iBAGSH,MAAM,CAACoB,KAHhB;AAAA,qBAIapB,MAAM,CAACqB,SAJpB;AAAA,oBAKYrB,MAAM,CAACsB,QALnB;AAAA,kBAMUtB,MAAM,CAACuB,MANjB;AAAA,iBAOSZ,OAPT;AAAA,oBAQYX,MAAM,CAACsB,QAAP,IAAmB;AAR/B,SASMtB,MAAM,CAACiB,KATb;AAAA,mBAUW,wCACPjB,MAAM,CAACiB,KAAP,CAAaO,OADN,EAEPxB,MAAM,CAACsB,QAAP,GAAkB,KAAKG,oBAAL,CAA0BzB,MAAM,CAACR,IAAjC,CAAlB,GAA2D2B,SAFpD,CAVX;AAAA,qBAca,wCACTnB,MAAM,CAACiB,KAAP,CAAaS,SADJ,EAET1B,MAAM,CAACsB,QAAP,GAAkB,KAAKK,kBAAL,CAAwB3B,MAAM,CAACR,IAA/B,CAAlB,GAAyD2B,SAFhD,CAdb;AAAA,iBAkBSJ,KAlBT;AAAA,kBAmBUX;AAnBV,WAqBGO,OAAO,gBACN,+EACE,gCAAC,OAAD;AAAA;AAAA,eAAwBR;AAAxB,uBACE,4DAAMH,MAAM,CAACiB,KAAP,CAAaW,QAAnB,CADF,CADF,eAIE,gCAAC,KAAD,yBAAQ,KAAKC,aAAL,CAAmB7B,MAAM,CAACH,OAA1B,EAAmC,MAAMgB,KAAzC,CAAR,CAJF,CADM,gBAQN,+EACE,4DAAMb,MAAM,CAACiB,KAAP,CAAaW,QAAnB,CADF,EAEG5B,MAAM,CAACsB,QAAP,gBAAkB,gCAAC,SAAD;AAAA,kBAAmBtB,MAAM,CAACuB;AAA1B,SAAlB,GAAyD,IAF5D,CA7BJ,CADF;AAqCD;;;WAED,kBAAS;AAAA;AAAA;;AACP,UAAMhB,KAAK,GAwBYC,YAxBvB;AACA,2BAA4E,KAAKd,OAAjF;AAAA,UAAQoC,QAAR,kBAAQA,QAAR;AAAA,UAAkB5B,MAAlB,kBAAkBA,MAAlB;AAAA,UAA0B6B,eAA1B,kBAA0BA,eAA1B;AAAA,UAA2CC,QAA3C,kBAA2CA,QAA3C;AAAA,UAAqDC,UAArD,kBAAqDA,UAArD;AAAA,UAAiEC,MAAjE,kBAAiEA,MAAjE;AACA,UAAMC,YAAY,GAAG3B,YAArB;AAEA,WAAKX,OAAL,GAAe,2BAAekC,eAAf,CAAf;;AAEA,kCAAwC,iCAAqB,KAAKlC,OAA1B,CAAxC;AAAA;AAAA,UAAOuC,aAAP;AAAA,UAAsBC,cAAtB;;AAEAC,yBAAOC,IAAP,CACEL,MADF,EAEE,0DAFF,EAGE,KAAKxC,OAAL,CAAa,cAAb,KAAgCH,IAAI,CAACiD,WAHvC;;AAMA,qBAAO,mBAAQtC,MAAR,CAAP,eACE,gCAAC,YAAD;AAAA,kBAAsBgC;AAAtB,uBACE,gCAAC,sBAAD;AAAA,kBACUO,YADV;AAAA,8BAEeL,aAFf;AAAA,+BAGgBC,cAHhB;AAAA;AAAA,oBAKYL;AALZ,uBAOE,gCAAC,sBAAD,CAAY,SAAZ;AAAsB,QAAA,GAAG,EAAEC;AAA3B,sBACE,gCAAC,KAAD,0EACG,KAAKJ,aAAL,CAAmBE,eAAnB,EAAoC,MAAM,KAAKlC,OAAL,CAAae,MAAvD,CADH,CADF,CAPF,CADF,EAcGkB,QAAQ,CAACY,MAdZ,CADF;AAkBD;;;EA7GgBC,e;;iCAAbpD,I;eAgHSA,I","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"}
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"}
@@ -209,6 +209,10 @@ SRow[theme='danger']:hover SCell:not([theme]) {
209
209
  background-color: color-mod(var(--red) blend(#fff 85%));
210
210
  }
211
211
 
212
+ SRow[positioned] {
213
+ position: absolute;
214
+ }
215
+
212
216
  SCell {
213
217
  display: flex;
214
218
  flex: 1;
@@ -275,3 +279,10 @@ SScrollAreaBar[orientation='horizontal'] {
275
279
  margin-right: calc(var(--right) + 4px);
276
280
  width: calc(100% - var(--offsetSum) - 8px);
277
281
  }
282
+
283
+ SHeightHold {
284
+ position: absolute;
285
+ top: 0;
286
+ width: 100px;
287
+ /* pointer-events: none; */
288
+ }
@@ -1 +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"}
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 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"}