@react-fabric/data 1.0.0-beta.1 → 1.0.0-beta.4
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/dist/cjs/checklist/CheckList.js +134 -0
- package/dist/cjs/hooks/useSelectableList.js +54 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/table/Table.js +37 -4
- package/dist/cjs/table/useVirtualTable.js +2 -2
- package/dist/cjs/tree/TreePanel.js +14 -2
- package/dist/cjs/tree/useTree.js +7 -0
- package/dist/esm/checklist/CheckList.js +134 -0
- package/dist/esm/hooks/useSelectableList.js +54 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/table/Table.js +38 -5
- package/dist/esm/table/useVirtualTable.js +2 -2
- package/dist/esm/tree/TreePanel.js +15 -3
- package/dist/esm/tree/useTree.js +7 -0
- package/dist/types/checklist/CheckList.d.ts +30 -0
- package/dist/types/hooks/useSelectableList.d.ts +28 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/table/Table.d.ts +1 -1
- package/dist/types/table/types.d.ts +9 -4
- package/dist/types/table/useVirtualTable.d.ts +1 -1
- package/dist/types/tree/TreePanel.d.ts +1 -1
- package/dist/types/tree/types.d.ts +6 -2
- package/dist/types/tree/useTree.d.ts +1 -0
- package/package.json +5 -5
- package/src/checklist/CheckList.tsx +218 -0
- package/src/hooks/useSelectableList.ts +94 -0
- package/src/index.ts +3 -0
- package/src/table/Table.tsx +34 -4
- package/src/table/types.ts +10 -3
- package/src/table/useVirtualTable.ts +4 -4
- package/src/tree/TreePanel.tsx +12 -1
- package/src/tree/types.ts +8 -1
- package/src/tree/useTree.ts +5 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
4
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
7
|
+
var core = require('@react-fabric/core');
|
|
8
|
+
var utilities = require('@react-fabric/utilities');
|
|
9
|
+
var react = require('react');
|
|
10
|
+
var reactI18next = require('react-i18next');
|
|
11
|
+
var useSelectableList = require('../hooks/useSelectableList.js');
|
|
12
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
13
|
+
|
|
14
|
+
var _excluded = ["items", "maxCount", "allowNegative", "emptyMessage", "sortItems"];
|
|
15
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
+
var CheckItem = /*#__PURE__*/react.memo(function (_ref) {
|
|
18
|
+
var id = _ref.id,
|
|
19
|
+
allowNegative = _ref.allowNegative,
|
|
20
|
+
selected = _ref.selected,
|
|
21
|
+
icon = _ref.icon,
|
|
22
|
+
label = _ref.label,
|
|
23
|
+
isDisabled = _ref.isDisabled,
|
|
24
|
+
_onClick = _ref.onClick,
|
|
25
|
+
badge = _ref.badge;
|
|
26
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
27
|
+
role: "none",
|
|
28
|
+
className: "ax-checkList__item",
|
|
29
|
+
"data-disabled": isDisabled,
|
|
30
|
+
onClick: function onClick() {
|
|
31
|
+
return _onClick(id, false);
|
|
32
|
+
},
|
|
33
|
+
onContextMenu: function onContextMenu(e) {
|
|
34
|
+
return [allowNegative && _onClick(id, true), e.preventDefault()];
|
|
35
|
+
},
|
|
36
|
+
children: [!allowNegative && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
37
|
+
"data-type": "checkbox",
|
|
38
|
+
className: "ax-checkList__checkbox",
|
|
39
|
+
"data-selected": selected === 1,
|
|
40
|
+
icon: selected ? core.CoreIcons.checkboxInt : core.CoreIcons.checkboxOff
|
|
41
|
+
}), allowNegative && /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
42
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
43
|
+
"data-type": "multiple",
|
|
44
|
+
className: "ax-checkList__checkbox",
|
|
45
|
+
icon: selected === 1 ? core.CoreIcons.expand : selected === -1 ? core.CoreIcons.collapse : core.CoreIcons.checkboxOff,
|
|
46
|
+
"data-selected": selected
|
|
47
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
48
|
+
className: "ax-checkList__checkbox",
|
|
49
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
50
|
+
"data-type": "positive",
|
|
51
|
+
onClick: function onClick(e) {
|
|
52
|
+
return [(_onClick(id, false), e.stopPropagation())];
|
|
53
|
+
},
|
|
54
|
+
icon: selected === 1 ? core.CoreIcons.expandActive : core.CoreIcons.expand,
|
|
55
|
+
"data-selected": selected === 1
|
|
56
|
+
}), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
57
|
+
"data-type": "negative",
|
|
58
|
+
onClick: function onClick(e) {
|
|
59
|
+
return [(_onClick(id, true), e.stopPropagation())];
|
|
60
|
+
},
|
|
61
|
+
icon: selected === -1 ? core.CoreIcons.collapseActive : core.CoreIcons.collapse,
|
|
62
|
+
"data-selected": selected === -1
|
|
63
|
+
})]
|
|
64
|
+
})]
|
|
65
|
+
}), /*#__PURE__*/react.isValidElement(icon) && icon, utilities.isString(icon) && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
66
|
+
icon: icon
|
|
67
|
+
}), /*#__PURE__*/jsxRuntime.jsx("label", {
|
|
68
|
+
children: label
|
|
69
|
+
}), /*#__PURE__*/jsxRuntime.jsx(core.Badge, _objectSpread({}, badge))]
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
CheckItem.displayName = "CheckItem";
|
|
73
|
+
var CheckList = function CheckList(_ref2) {
|
|
74
|
+
var _ref2$items = _ref2.items,
|
|
75
|
+
items = _ref2$items === void 0 ? [] : _ref2$items,
|
|
76
|
+
_ref2$maxCount = _ref2.maxCount,
|
|
77
|
+
maxCount = _ref2$maxCount === void 0 ? 0 : _ref2$maxCount,
|
|
78
|
+
allowNegative = _ref2.allowNegative,
|
|
79
|
+
emptyMessage = _ref2.emptyMessage,
|
|
80
|
+
_ref2$sortItems = _ref2.sortItems,
|
|
81
|
+
sortItems = _ref2$sortItems === void 0 ? true : _ref2$sortItems,
|
|
82
|
+
props = _objectWithoutProperties(_ref2, _excluded);
|
|
83
|
+
var _useTranslation = reactI18next.useTranslation("data"),
|
|
84
|
+
t = _useTranslation.t;
|
|
85
|
+
var _useSelectableList = useSelectableList.useSelectableList(_objectSpread({
|
|
86
|
+
items: items
|
|
87
|
+
}, props)),
|
|
88
|
+
selection = _useSelectableList.selection,
|
|
89
|
+
toggleSelection = _useSelectableList.toggleSelection;
|
|
90
|
+
var _useState = react.useState(false),
|
|
91
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
92
|
+
showMore = _useState2[0],
|
|
93
|
+
setShowMore = _useState2[1];
|
|
94
|
+
react.useEffect(function () {
|
|
95
|
+
setShowMore(false);
|
|
96
|
+
}, [items]);
|
|
97
|
+
var listItems = react.useMemo(function () {
|
|
98
|
+
return _toConsumableArray(items).sort(function (a, b) {
|
|
99
|
+
if (sortItems && selection[a.id] !== selection[b.id]) {
|
|
100
|
+
if (selection[a.id] === 1) return -1;
|
|
101
|
+
if (selection[b.id] === 1) return 1;
|
|
102
|
+
if (selection[a.id] === -1) return -1;
|
|
103
|
+
if (selection[b.id] === -1) return 1;
|
|
104
|
+
}
|
|
105
|
+
return 0;
|
|
106
|
+
}).slice(0, !showMore && maxCount > 0 ? maxCount : undefined);
|
|
107
|
+
}, [items, selection, maxCount, showMore, sortItems]);
|
|
108
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
109
|
+
className: "ax-checkList",
|
|
110
|
+
children: [listItems.map(function (item, index) {
|
|
111
|
+
return /*#__PURE__*/react.createElement(CheckItem, _objectSpread(_objectSpread({}, item), {}, {
|
|
112
|
+
key: index,
|
|
113
|
+
onClick: toggleSelection,
|
|
114
|
+
allowNegative: allowNegative,
|
|
115
|
+
selected: selection[item.id]
|
|
116
|
+
}));
|
|
117
|
+
}), maxCount > 0 && items.length > maxCount && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
118
|
+
className: "ax-moreLink",
|
|
119
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("span", {
|
|
120
|
+
role: "none",
|
|
121
|
+
className: "link",
|
|
122
|
+
onClick: function onClick() {
|
|
123
|
+
return setShowMore(!showMore);
|
|
124
|
+
},
|
|
125
|
+
children: ["...", t("core:action.".concat(showMore ? "less" : "more"))]
|
|
126
|
+
})
|
|
127
|
+
}), listItems.length === 0 && /*#__PURE__*/jsxRuntime.jsx(core.EmptyContent, {
|
|
128
|
+
className: "text-sm",
|
|
129
|
+
message: emptyMessage !== null && emptyMessage !== void 0 ? emptyMessage : t("checkList.empty")
|
|
130
|
+
})]
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
exports.CheckList = CheckList;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
+
var useSelectableList = function useSelectableList(_ref) {
|
|
10
|
+
var items = _ref.items,
|
|
11
|
+
selected = _ref.selected,
|
|
12
|
+
nonselected = _ref.nonselected,
|
|
13
|
+
onChange = _ref.onChange,
|
|
14
|
+
onClick = _ref.onClick;
|
|
15
|
+
var selectionRef = react.useRef({});
|
|
16
|
+
var _useState = react.useState({}),
|
|
17
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
18
|
+
selection = _useState2[0],
|
|
19
|
+
setSelection = _useState2[1];
|
|
20
|
+
var _useTransition = react.useTransition(),
|
|
21
|
+
_useTransition2 = _slicedToArray(_useTransition, 2),
|
|
22
|
+
startTransition = _useTransition2[1];
|
|
23
|
+
react.useEffect(function () {
|
|
24
|
+
selectionRef.current = items.reduce(function (ret, _ref2) {
|
|
25
|
+
var _selected$includes, _nonselected$includes;
|
|
26
|
+
var id = _ref2.id;
|
|
27
|
+
return _objectSpread(_objectSpread({}, ret), {}, _defineProperty({}, id, selected !== null && selected !== void 0 && (_selected$includes = selected.includes) !== null && _selected$includes !== void 0 && _selected$includes.call(selected, id) ? 1 : nonselected !== null && nonselected !== void 0 && (_nonselected$includes = nonselected.includes) !== null && _nonselected$includes !== void 0 && _nonselected$includes.call(nonselected, id) ? -1 : 0));
|
|
28
|
+
}, {});
|
|
29
|
+
setSelection(_objectSpread({}, selectionRef.current));
|
|
30
|
+
}, [items, selected, nonselected]);
|
|
31
|
+
var toggleSelection = react.useCallback(function (id) {
|
|
32
|
+
var isNegative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
33
|
+
var check = isNegative ? -1 : 1;
|
|
34
|
+
if (selectionRef.current[id] !== check) selectionRef.current[id] = check;else if (selectionRef.current[id] === check) selectionRef.current[id] = 0;
|
|
35
|
+
var change = [[], []];
|
|
36
|
+
Object.entries(selectionRef.current).forEach(function (_ref3) {
|
|
37
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
38
|
+
id = _ref4[0],
|
|
39
|
+
select = _ref4[1];
|
|
40
|
+
return select === 1 ? change[0].push(id) : select === -1 ? change[1].push(id) : undefined;
|
|
41
|
+
});
|
|
42
|
+
setSelection(_objectSpread({}, selectionRef.current));
|
|
43
|
+
startTransition(function () {
|
|
44
|
+
onClick === null || onClick === void 0 || onClick(id, isNegative);
|
|
45
|
+
onChange === null || onChange === void 0 || onChange(change[0], change[1]);
|
|
46
|
+
});
|
|
47
|
+
}, []);
|
|
48
|
+
return {
|
|
49
|
+
selection: selection,
|
|
50
|
+
toggleSelection: toggleSelection
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
exports.useSelectableList = useSelectableList;
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('./i18n/index.js');
|
|
4
|
+
var CheckList = require('./checklist/CheckList.js');
|
|
4
5
|
var Histogram = require('./histogram/Histogram.js');
|
|
5
6
|
var JsonViewer = require('./json/JsonViewer.js');
|
|
6
7
|
var Pagination = require('./pagination/Pagination.js');
|
|
@@ -13,6 +14,7 @@ var usePagination = require('./hooks/usePagination.js');
|
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
|
|
17
|
+
exports.CheckList = CheckList.CheckList;
|
|
16
18
|
exports.Histogram = Histogram.Histogram;
|
|
17
19
|
exports.JsonViewer = JsonViewer.JsonViewer;
|
|
18
20
|
exports.Pagination = Pagination.Pagination;
|
package/dist/cjs/table/Table.js
CHANGED
|
@@ -19,7 +19,8 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
19
19
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
20
20
|
var Table = function Table(_ref) {
|
|
21
21
|
var _state$start, _state$cols, _state$end, _items$, _state$start3, _state$cols3, _state$end3;
|
|
22
|
-
var
|
|
22
|
+
var ref = _ref.ref,
|
|
23
|
+
data = _ref.data,
|
|
23
24
|
columns = _ref.columns,
|
|
24
25
|
keyProperty = _ref.keyProperty,
|
|
25
26
|
checkableRows = _ref.checkableRows,
|
|
@@ -46,12 +47,42 @@ var Table = function Table(_ref) {
|
|
|
46
47
|
getData = _useVirtualTable.getData,
|
|
47
48
|
totalSize = _useVirtualTable.totalSize,
|
|
48
49
|
measureElement = _useVirtualTable.measureElement;
|
|
50
|
+
var refBody = react.useRef(null);
|
|
49
51
|
var wrapperStart = react.useMemo(function () {
|
|
50
52
|
return "bg-inherit sticky start-0 flex flex-nowrap z-1";
|
|
51
53
|
}, []);
|
|
52
54
|
var wrapperEnd = react.useMemo(function () {
|
|
53
55
|
return "bg-inherit sticky end-0 flex flex-nowrap z-1 border-s -ms-px";
|
|
54
56
|
}, []);
|
|
57
|
+
react.useImperativeHandle(ref, function () {
|
|
58
|
+
return {
|
|
59
|
+
hilight: function hilight(row) {
|
|
60
|
+
var _refBody$current, _refBody$current2;
|
|
61
|
+
(_refBody$current = refBody.current) === null || _refBody$current === void 0 || _refBody$current.querySelectorAll(".datatable-row[data-hilight=\"true\"]").forEach(function (el) {
|
|
62
|
+
return el && (el.dataset.hilight = undefined);
|
|
63
|
+
});
|
|
64
|
+
var el = (_refBody$current2 = refBody.current) === null || _refBody$current2 === void 0 ? void 0 : _refBody$current2.querySelector("[data-row=\"".concat(row, "\"]"));
|
|
65
|
+
el === null || el === void 0 || el.scrollIntoView({
|
|
66
|
+
behavior: "smooth",
|
|
67
|
+
block: "center"
|
|
68
|
+
});
|
|
69
|
+
el && (el.dataset.hilight = "true");
|
|
70
|
+
},
|
|
71
|
+
unhilight: function unhilight() {
|
|
72
|
+
var _refBody$current3;
|
|
73
|
+
(_refBody$current3 = refBody.current) === null || _refBody$current3 === void 0 || _refBody$current3.querySelectorAll(".datatable-row[data-hilight=\"true\"]").forEach(function (el) {
|
|
74
|
+
return el && (el.dataset.hilight = undefined);
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
scrollTo: function scrollTo(row) {
|
|
78
|
+
var _refBody$current4;
|
|
79
|
+
var el = (_refBody$current4 = refBody.current) === null || _refBody$current4 === void 0 ? void 0 : _refBody$current4.querySelector("[data-row=\"".concat(row, "\"]"));
|
|
80
|
+
el === null || el === void 0 || el.scrollIntoView({
|
|
81
|
+
behavior: "smooth"
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}, []);
|
|
55
86
|
return /*#__PURE__*/jsxRuntime.jsx(Context.TableProvider, {
|
|
56
87
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
57
88
|
className: "grid area-content overflow-auto relative",
|
|
@@ -96,6 +127,7 @@ var Table = function Table(_ref) {
|
|
|
96
127
|
style: {
|
|
97
128
|
height: totalSize()
|
|
98
129
|
},
|
|
130
|
+
ref: refBody,
|
|
99
131
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
100
132
|
style: {
|
|
101
133
|
height: (_items$ = items[0]) === null || _items$ === void 0 ? void 0 : _items$.start
|
|
@@ -107,15 +139,16 @@ var Table = function Table(_ref) {
|
|
|
107
139
|
var data = getData(index);
|
|
108
140
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
109
141
|
role: "none",
|
|
110
|
-
|
|
142
|
+
"data-row": index,
|
|
143
|
+
className: classNames("flex flex-nowrap datatable-row data-[hilight]:outline-1 -outline-offset-1 outline-primary-500", index % 2 ? "bg-even" : "bg-odd", onRowClick && "hover:bg-primary-50 active:bg-primary-100"),
|
|
111
144
|
onClick: function onClick() {
|
|
112
|
-
return checkableRows && !onRowClick ? toggleChecked(data[keyProperty]) : onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(data);
|
|
145
|
+
return checkableRows && keyProperty && !onRowClick ? toggleChecked(data[keyProperty]) : onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(data);
|
|
113
146
|
},
|
|
114
147
|
"data-index": index,
|
|
115
148
|
ref: measureElement,
|
|
116
149
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
117
150
|
className: wrapperStart,
|
|
118
|
-
children: [checkableRows && /*#__PURE__*/jsxRuntime.jsx(CheckboxCell.CheckboxCell, {
|
|
151
|
+
children: [checkableRows && keyProperty && /*#__PURE__*/jsxRuntime.jsx(CheckboxCell.CheckboxCell, {
|
|
119
152
|
onClick: function onClick() {
|
|
120
153
|
return toggleChecked(data[keyProperty]);
|
|
121
154
|
},
|
|
@@ -28,13 +28,13 @@ var useVirtualTable = function useVirtualTable(data, keyProperty, onCheckChanged
|
|
|
28
28
|
if (action.type === "checkall") {
|
|
29
29
|
if (state.allChecked !== 0) {
|
|
30
30
|
state.checked = [];
|
|
31
|
-
} else {
|
|
31
|
+
} else if (keyProperty) {
|
|
32
32
|
state.checked = data.map(function (item) {
|
|
33
33
|
return item[keyProperty];
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
onCheckChanged(state.checked);
|
|
37
|
+
onCheckChanged === null || onCheckChanged === void 0 || onCheckChanged(state.checked);
|
|
38
38
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
39
39
|
allChecked: state.checked.length === data.length ? 1 : state.checked.length ? 2 : 0
|
|
40
40
|
});
|
|
@@ -11,12 +11,13 @@ var types = require('./types.js');
|
|
|
11
11
|
var useTree = require('./useTree.js');
|
|
12
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
13
13
|
|
|
14
|
-
var _excluded = ["items", "selected", "checked", "checkable", "noLines", "renderer", "searchable", "selectable", "matcher", "filterPlaceholder", "defaultLeafIcon", "defaultNodeIcon", "expander", "onChecked", "onLoad", "onSelect"];
|
|
14
|
+
var _excluded = ["ref", "items", "selected", "checked", "checkable", "noLines", "renderer", "searchable", "selectable", "matcher", "filterPlaceholder", "defaultLeafIcon", "defaultNodeIcon", "expander", "onChecked", "onLoad", "onSelect"];
|
|
15
15
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
16
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
17
|
var TreePanel = function TreePanel(_ref) {
|
|
18
18
|
var _virtualItems$;
|
|
19
|
-
var
|
|
19
|
+
var ref = _ref.ref,
|
|
20
|
+
items = _ref.items,
|
|
20
21
|
selected = _ref.selected,
|
|
21
22
|
checked = _ref.checked,
|
|
22
23
|
checkable = _ref.checkable,
|
|
@@ -48,6 +49,7 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
48
49
|
expandAll = _useTree.expandAll,
|
|
49
50
|
collapseAll = _useTree.collapseAll,
|
|
50
51
|
select = _useTree.select,
|
|
52
|
+
expand = _useTree.expand,
|
|
51
53
|
onFilter = _useTree.onFilter;
|
|
52
54
|
var scrollerRef = react.useRef(null);
|
|
53
55
|
var virtualizer = reactVirtual.useVirtualizer({
|
|
@@ -66,6 +68,16 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
66
68
|
if (expander === "folder") return [core.CoreIcons.folderClosed, core.CoreIcons.folderOpen];
|
|
67
69
|
return [core.CoreIcons.expand, core.CoreIcons.collapse];
|
|
68
70
|
}, [expander]);
|
|
71
|
+
react.useImperativeHandle(ref, function () {
|
|
72
|
+
return {
|
|
73
|
+
open: function open(id) {
|
|
74
|
+
return expand(id);
|
|
75
|
+
},
|
|
76
|
+
select: function select(id) {
|
|
77
|
+
return expand(id);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}, []);
|
|
69
81
|
return /*#__PURE__*/jsxRuntime.jsxs(core.Section, {
|
|
70
82
|
children: [/*#__PURE__*/jsxRuntime.jsxs(core.Header, {
|
|
71
83
|
flex: true,
|
package/dist/cjs/tree/useTree.js
CHANGED
|
@@ -151,6 +151,12 @@ var useTree = function useTree(_ref) {
|
|
|
151
151
|
id: id
|
|
152
152
|
});
|
|
153
153
|
}, []);
|
|
154
|
+
var expand = react.useCallback(function (id) {
|
|
155
|
+
dispatch({
|
|
156
|
+
type: "expand",
|
|
157
|
+
id: id
|
|
158
|
+
});
|
|
159
|
+
}, []);
|
|
154
160
|
var expandAll = react.useCallback(function () {
|
|
155
161
|
dispatch({
|
|
156
162
|
type: "expandAll"
|
|
@@ -174,6 +180,7 @@ var useTree = function useTree(_ref) {
|
|
|
174
180
|
collapseAll: collapseAll,
|
|
175
181
|
toggleCheck: toggleCheck,
|
|
176
182
|
select: select,
|
|
183
|
+
expand: expand,
|
|
177
184
|
onFilter: onFilter
|
|
178
185
|
};
|
|
179
186
|
};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
4
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
6
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
7
|
+
import { Icon, CoreIcons, Badge, EmptyContent } from '@react-fabric/core';
|
|
8
|
+
import { isString } from '@react-fabric/utilities';
|
|
9
|
+
import { memo, Fragment, isValidElement, useState, useEffect, useMemo, createElement } from 'react';
|
|
10
|
+
import { useTranslation } from 'react-i18next';
|
|
11
|
+
import { useSelectableList } from '../hooks/useSelectableList.js';
|
|
12
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
13
|
+
|
|
14
|
+
var _excluded = ["items", "maxCount", "allowNegative", "emptyMessage", "sortItems"];
|
|
15
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
+
var CheckItem = /*#__PURE__*/memo(function (_ref) {
|
|
18
|
+
var id = _ref.id,
|
|
19
|
+
allowNegative = _ref.allowNegative,
|
|
20
|
+
selected = _ref.selected,
|
|
21
|
+
icon = _ref.icon,
|
|
22
|
+
label = _ref.label,
|
|
23
|
+
isDisabled = _ref.isDisabled,
|
|
24
|
+
_onClick = _ref.onClick,
|
|
25
|
+
badge = _ref.badge;
|
|
26
|
+
return /*#__PURE__*/jsxs("div", {
|
|
27
|
+
role: "none",
|
|
28
|
+
className: "ax-checkList__item",
|
|
29
|
+
"data-disabled": isDisabled,
|
|
30
|
+
onClick: function onClick() {
|
|
31
|
+
return _onClick(id, false);
|
|
32
|
+
},
|
|
33
|
+
onContextMenu: function onContextMenu(e) {
|
|
34
|
+
return [allowNegative && _onClick(id, true), e.preventDefault()];
|
|
35
|
+
},
|
|
36
|
+
children: [!allowNegative && /*#__PURE__*/jsx(Icon, {
|
|
37
|
+
"data-type": "checkbox",
|
|
38
|
+
className: "ax-checkList__checkbox",
|
|
39
|
+
"data-selected": selected === 1,
|
|
40
|
+
icon: selected ? CoreIcons.checkboxInt : CoreIcons.checkboxOff
|
|
41
|
+
}), allowNegative && /*#__PURE__*/jsxs(Fragment, {
|
|
42
|
+
children: [/*#__PURE__*/jsx(Icon, {
|
|
43
|
+
"data-type": "multiple",
|
|
44
|
+
className: "ax-checkList__checkbox",
|
|
45
|
+
icon: selected === 1 ? CoreIcons.expand : selected === -1 ? CoreIcons.collapse : CoreIcons.checkboxOff,
|
|
46
|
+
"data-selected": selected
|
|
47
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
48
|
+
className: "ax-checkList__checkbox",
|
|
49
|
+
children: [/*#__PURE__*/jsx(Icon, {
|
|
50
|
+
"data-type": "positive",
|
|
51
|
+
onClick: function onClick(e) {
|
|
52
|
+
return [(_onClick(id, false), e.stopPropagation())];
|
|
53
|
+
},
|
|
54
|
+
icon: selected === 1 ? CoreIcons.expandActive : CoreIcons.expand,
|
|
55
|
+
"data-selected": selected === 1
|
|
56
|
+
}), /*#__PURE__*/jsx(Icon, {
|
|
57
|
+
"data-type": "negative",
|
|
58
|
+
onClick: function onClick(e) {
|
|
59
|
+
return [(_onClick(id, true), e.stopPropagation())];
|
|
60
|
+
},
|
|
61
|
+
icon: selected === -1 ? CoreIcons.collapseActive : CoreIcons.collapse,
|
|
62
|
+
"data-selected": selected === -1
|
|
63
|
+
})]
|
|
64
|
+
})]
|
|
65
|
+
}), /*#__PURE__*/isValidElement(icon) && icon, isString(icon) && /*#__PURE__*/jsx(Icon, {
|
|
66
|
+
icon: icon
|
|
67
|
+
}), /*#__PURE__*/jsx("label", {
|
|
68
|
+
children: label
|
|
69
|
+
}), /*#__PURE__*/jsx(Badge, _objectSpread({}, badge))]
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
CheckItem.displayName = "CheckItem";
|
|
73
|
+
var CheckList = function CheckList(_ref2) {
|
|
74
|
+
var _ref2$items = _ref2.items,
|
|
75
|
+
items = _ref2$items === void 0 ? [] : _ref2$items,
|
|
76
|
+
_ref2$maxCount = _ref2.maxCount,
|
|
77
|
+
maxCount = _ref2$maxCount === void 0 ? 0 : _ref2$maxCount,
|
|
78
|
+
allowNegative = _ref2.allowNegative,
|
|
79
|
+
emptyMessage = _ref2.emptyMessage,
|
|
80
|
+
_ref2$sortItems = _ref2.sortItems,
|
|
81
|
+
sortItems = _ref2$sortItems === void 0 ? true : _ref2$sortItems,
|
|
82
|
+
props = _objectWithoutProperties(_ref2, _excluded);
|
|
83
|
+
var _useTranslation = useTranslation("data"),
|
|
84
|
+
t = _useTranslation.t;
|
|
85
|
+
var _useSelectableList = useSelectableList(_objectSpread({
|
|
86
|
+
items: items
|
|
87
|
+
}, props)),
|
|
88
|
+
selection = _useSelectableList.selection,
|
|
89
|
+
toggleSelection = _useSelectableList.toggleSelection;
|
|
90
|
+
var _useState = useState(false),
|
|
91
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
92
|
+
showMore = _useState2[0],
|
|
93
|
+
setShowMore = _useState2[1];
|
|
94
|
+
useEffect(function () {
|
|
95
|
+
setShowMore(false);
|
|
96
|
+
}, [items]);
|
|
97
|
+
var listItems = useMemo(function () {
|
|
98
|
+
return _toConsumableArray(items).sort(function (a, b) {
|
|
99
|
+
if (sortItems && selection[a.id] !== selection[b.id]) {
|
|
100
|
+
if (selection[a.id] === 1) return -1;
|
|
101
|
+
if (selection[b.id] === 1) return 1;
|
|
102
|
+
if (selection[a.id] === -1) return -1;
|
|
103
|
+
if (selection[b.id] === -1) return 1;
|
|
104
|
+
}
|
|
105
|
+
return 0;
|
|
106
|
+
}).slice(0, !showMore && maxCount > 0 ? maxCount : undefined);
|
|
107
|
+
}, [items, selection, maxCount, showMore, sortItems]);
|
|
108
|
+
return /*#__PURE__*/jsxs("div", {
|
|
109
|
+
className: "ax-checkList",
|
|
110
|
+
children: [listItems.map(function (item, index) {
|
|
111
|
+
return /*#__PURE__*/createElement(CheckItem, _objectSpread(_objectSpread({}, item), {}, {
|
|
112
|
+
key: index,
|
|
113
|
+
onClick: toggleSelection,
|
|
114
|
+
allowNegative: allowNegative,
|
|
115
|
+
selected: selection[item.id]
|
|
116
|
+
}));
|
|
117
|
+
}), maxCount > 0 && items.length > maxCount && /*#__PURE__*/jsx("div", {
|
|
118
|
+
className: "ax-moreLink",
|
|
119
|
+
children: /*#__PURE__*/jsxs("span", {
|
|
120
|
+
role: "none",
|
|
121
|
+
className: "link",
|
|
122
|
+
onClick: function onClick() {
|
|
123
|
+
return setShowMore(!showMore);
|
|
124
|
+
},
|
|
125
|
+
children: ["...", t("core:action.".concat(showMore ? "less" : "more"))]
|
|
126
|
+
})
|
|
127
|
+
}), listItems.length === 0 && /*#__PURE__*/jsx(EmptyContent, {
|
|
128
|
+
className: "text-sm",
|
|
129
|
+
message: emptyMessage !== null && emptyMessage !== void 0 ? emptyMessage : t("checkList.empty")
|
|
130
|
+
})]
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
export { CheckList };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
|
+
import { useRef, useState, useTransition, useEffect, useCallback } from 'react';
|
|
6
|
+
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
+
var useSelectableList = function useSelectableList(_ref) {
|
|
10
|
+
var items = _ref.items,
|
|
11
|
+
selected = _ref.selected,
|
|
12
|
+
nonselected = _ref.nonselected,
|
|
13
|
+
onChange = _ref.onChange,
|
|
14
|
+
onClick = _ref.onClick;
|
|
15
|
+
var selectionRef = useRef({});
|
|
16
|
+
var _useState = useState({}),
|
|
17
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
18
|
+
selection = _useState2[0],
|
|
19
|
+
setSelection = _useState2[1];
|
|
20
|
+
var _useTransition = useTransition(),
|
|
21
|
+
_useTransition2 = _slicedToArray(_useTransition, 2),
|
|
22
|
+
startTransition = _useTransition2[1];
|
|
23
|
+
useEffect(function () {
|
|
24
|
+
selectionRef.current = items.reduce(function (ret, _ref2) {
|
|
25
|
+
var _selected$includes, _nonselected$includes;
|
|
26
|
+
var id = _ref2.id;
|
|
27
|
+
return _objectSpread(_objectSpread({}, ret), {}, _defineProperty({}, id, selected !== null && selected !== void 0 && (_selected$includes = selected.includes) !== null && _selected$includes !== void 0 && _selected$includes.call(selected, id) ? 1 : nonselected !== null && nonselected !== void 0 && (_nonselected$includes = nonselected.includes) !== null && _nonselected$includes !== void 0 && _nonselected$includes.call(nonselected, id) ? -1 : 0));
|
|
28
|
+
}, {});
|
|
29
|
+
setSelection(_objectSpread({}, selectionRef.current));
|
|
30
|
+
}, [items, selected, nonselected]);
|
|
31
|
+
var toggleSelection = useCallback(function (id) {
|
|
32
|
+
var isNegative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
33
|
+
var check = isNegative ? -1 : 1;
|
|
34
|
+
if (selectionRef.current[id] !== check) selectionRef.current[id] = check;else if (selectionRef.current[id] === check) selectionRef.current[id] = 0;
|
|
35
|
+
var change = [[], []];
|
|
36
|
+
Object.entries(selectionRef.current).forEach(function (_ref3) {
|
|
37
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
38
|
+
id = _ref4[0],
|
|
39
|
+
select = _ref4[1];
|
|
40
|
+
return select === 1 ? change[0].push(id) : select === -1 ? change[1].push(id) : undefined;
|
|
41
|
+
});
|
|
42
|
+
setSelection(_objectSpread({}, selectionRef.current));
|
|
43
|
+
startTransition(function () {
|
|
44
|
+
onClick === null || onClick === void 0 || onClick(id, isNegative);
|
|
45
|
+
onChange === null || onChange === void 0 || onChange(change[0], change[1]);
|
|
46
|
+
});
|
|
47
|
+
}, []);
|
|
48
|
+
return {
|
|
49
|
+
selection: selection,
|
|
50
|
+
toggleSelection: toggleSelection
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { useSelectableList };
|
package/dist/esm/index.js
CHANGED
package/dist/esm/table/Table.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import { useDebounce, Loading, EmptyContent } from '@react-fabric/core';
|
|
5
5
|
import classNames from 'classnames';
|
|
6
|
-
import { useMemo } from 'react';
|
|
6
|
+
import { useRef, useMemo, useImperativeHandle } from 'react';
|
|
7
7
|
import { useTranslation } from 'react-i18next';
|
|
8
8
|
import { AddColumn } from './AddColumn.js';
|
|
9
9
|
import { BodyCell } from './BodyCell.js';
|
|
@@ -19,7 +19,8 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
19
19
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
20
20
|
var Table = function Table(_ref) {
|
|
21
21
|
var _state$start, _state$cols, _state$end, _items$, _state$start3, _state$cols3, _state$end3;
|
|
22
|
-
var
|
|
22
|
+
var ref = _ref.ref,
|
|
23
|
+
data = _ref.data,
|
|
23
24
|
columns = _ref.columns,
|
|
24
25
|
keyProperty = _ref.keyProperty,
|
|
25
26
|
checkableRows = _ref.checkableRows,
|
|
@@ -46,12 +47,42 @@ var Table = function Table(_ref) {
|
|
|
46
47
|
getData = _useVirtualTable.getData,
|
|
47
48
|
totalSize = _useVirtualTable.totalSize,
|
|
48
49
|
measureElement = _useVirtualTable.measureElement;
|
|
50
|
+
var refBody = useRef(null);
|
|
49
51
|
var wrapperStart = useMemo(function () {
|
|
50
52
|
return "bg-inherit sticky start-0 flex flex-nowrap z-1";
|
|
51
53
|
}, []);
|
|
52
54
|
var wrapperEnd = useMemo(function () {
|
|
53
55
|
return "bg-inherit sticky end-0 flex flex-nowrap z-1 border-s -ms-px";
|
|
54
56
|
}, []);
|
|
57
|
+
useImperativeHandle(ref, function () {
|
|
58
|
+
return {
|
|
59
|
+
hilight: function hilight(row) {
|
|
60
|
+
var _refBody$current, _refBody$current2;
|
|
61
|
+
(_refBody$current = refBody.current) === null || _refBody$current === void 0 || _refBody$current.querySelectorAll(".datatable-row[data-hilight=\"true\"]").forEach(function (el) {
|
|
62
|
+
return el && (el.dataset.hilight = undefined);
|
|
63
|
+
});
|
|
64
|
+
var el = (_refBody$current2 = refBody.current) === null || _refBody$current2 === void 0 ? void 0 : _refBody$current2.querySelector("[data-row=\"".concat(row, "\"]"));
|
|
65
|
+
el === null || el === void 0 || el.scrollIntoView({
|
|
66
|
+
behavior: "smooth",
|
|
67
|
+
block: "center"
|
|
68
|
+
});
|
|
69
|
+
el && (el.dataset.hilight = "true");
|
|
70
|
+
},
|
|
71
|
+
unhilight: function unhilight() {
|
|
72
|
+
var _refBody$current3;
|
|
73
|
+
(_refBody$current3 = refBody.current) === null || _refBody$current3 === void 0 || _refBody$current3.querySelectorAll(".datatable-row[data-hilight=\"true\"]").forEach(function (el) {
|
|
74
|
+
return el && (el.dataset.hilight = undefined);
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
scrollTo: function scrollTo(row) {
|
|
78
|
+
var _refBody$current4;
|
|
79
|
+
var el = (_refBody$current4 = refBody.current) === null || _refBody$current4 === void 0 ? void 0 : _refBody$current4.querySelector("[data-row=\"".concat(row, "\"]"));
|
|
80
|
+
el === null || el === void 0 || el.scrollIntoView({
|
|
81
|
+
behavior: "smooth"
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}, []);
|
|
55
86
|
return /*#__PURE__*/jsx(TableProvider, {
|
|
56
87
|
children: /*#__PURE__*/jsxs("div", {
|
|
57
88
|
className: "grid area-content overflow-auto relative",
|
|
@@ -96,6 +127,7 @@ var Table = function Table(_ref) {
|
|
|
96
127
|
style: {
|
|
97
128
|
height: totalSize()
|
|
98
129
|
},
|
|
130
|
+
ref: refBody,
|
|
99
131
|
children: [/*#__PURE__*/jsx("div", {
|
|
100
132
|
style: {
|
|
101
133
|
height: (_items$ = items[0]) === null || _items$ === void 0 ? void 0 : _items$.start
|
|
@@ -107,15 +139,16 @@ var Table = function Table(_ref) {
|
|
|
107
139
|
var data = getData(index);
|
|
108
140
|
return /*#__PURE__*/jsxs("div", {
|
|
109
141
|
role: "none",
|
|
110
|
-
|
|
142
|
+
"data-row": index,
|
|
143
|
+
className: classNames("flex flex-nowrap datatable-row data-[hilight]:outline-1 -outline-offset-1 outline-primary-500", index % 2 ? "bg-even" : "bg-odd", onRowClick && "hover:bg-primary-50 active:bg-primary-100"),
|
|
111
144
|
onClick: function onClick() {
|
|
112
|
-
return checkableRows && !onRowClick ? toggleChecked(data[keyProperty]) : onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(data);
|
|
145
|
+
return checkableRows && keyProperty && !onRowClick ? toggleChecked(data[keyProperty]) : onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(data);
|
|
113
146
|
},
|
|
114
147
|
"data-index": index,
|
|
115
148
|
ref: measureElement,
|
|
116
149
|
children: [/*#__PURE__*/jsxs("div", {
|
|
117
150
|
className: wrapperStart,
|
|
118
|
-
children: [checkableRows && /*#__PURE__*/jsx(CheckboxCell, {
|
|
151
|
+
children: [checkableRows && keyProperty && /*#__PURE__*/jsx(CheckboxCell, {
|
|
119
152
|
onClick: function onClick() {
|
|
120
153
|
return toggleChecked(data[keyProperty]);
|
|
121
154
|
},
|