@react-fabric/data 1.0.0-beta.6 → 1.0.0-beta.60
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/{src/histogram/Histogram.module.css → css/_histogram.css} +16 -13
- package/css/styles.css +24 -0
- package/dist/cjs/checklist/CheckList.js +23 -0
- package/dist/cjs/histogram/Histogram.js +37 -7
- package/dist/cjs/hooks/useFilteredList.js +88 -10
- package/dist/cjs/hooks/usePagination.js +27 -4
- package/dist/cjs/hooks/useSelectableList.js +29 -0
- package/dist/cjs/i18n/ar.json.js +8 -1
- package/dist/cjs/i18n/en.json.js +8 -1
- package/dist/cjs/json/JsonViewer.js +67 -27
- package/dist/cjs/pagination/Pagination.js +10 -0
- package/dist/cjs/table/AddColumn.js +1 -1
- package/dist/cjs/table/BodyCell.js +5 -4
- package/dist/cjs/table/BodyRow.js +2 -2
- package/dist/cjs/table/CheckboxCell.js +1 -1
- package/dist/cjs/table/ColumnFilters.js +97 -0
- package/dist/cjs/table/HeaderCell.js +71 -43
- package/dist/cjs/table/Table.js +58 -12
- package/dist/cjs/table/types.js +29 -0
- package/dist/cjs/table/useResizer.js +4 -4
- package/dist/cjs/table/useVirtualTable.js +127 -19
- package/dist/cjs/tree/TreeNode.js +48 -30
- package/dist/cjs/tree/TreePanel.js +45 -11
- package/dist/cjs/tree/useTree.js +199 -38
- package/dist/cjs/tree/utils.js +39 -12
- package/dist/cjs/virtual/Gallery.js +97 -45
- package/dist/cjs/virtual/List.js +93 -39
- package/dist/cjs/virtual/Scroller.js +16 -8
- package/dist/esm/checklist/CheckList.js +23 -0
- package/dist/esm/histogram/Histogram.js +38 -8
- package/dist/esm/hooks/useFilteredList.js +89 -11
- package/dist/esm/hooks/usePagination.js +27 -4
- package/dist/esm/hooks/useSelectableList.js +29 -0
- package/dist/esm/i18n/ar.json.js +8 -2
- package/dist/esm/i18n/en.json.js +8 -2
- package/dist/esm/json/JsonViewer.js +68 -28
- package/dist/esm/pagination/Pagination.js +10 -0
- package/dist/esm/table/AddColumn.js +1 -1
- package/dist/esm/table/BodyCell.js +5 -4
- package/dist/esm/table/BodyRow.js +2 -2
- package/dist/esm/table/CheckboxCell.js +1 -1
- package/dist/esm/table/ColumnFilters.js +97 -0
- package/dist/esm/table/HeaderCell.js +72 -44
- package/dist/esm/table/Table.js +59 -13
- package/dist/esm/table/types.js +29 -0
- package/dist/esm/table/useResizer.js +4 -4
- package/dist/esm/table/useVirtualTable.js +129 -21
- package/dist/esm/tree/TreeNode.js +51 -33
- package/dist/esm/tree/TreePanel.js +46 -12
- package/dist/esm/tree/useTree.js +202 -41
- package/dist/esm/tree/utils.js +40 -13
- package/dist/esm/virtual/Gallery.js +97 -45
- package/dist/esm/virtual/List.js +93 -39
- package/dist/esm/virtual/Scroller.js +16 -8
- package/dist/types/checklist/CheckList.d.ts +22 -0
- package/dist/types/histogram/Histogram.d.ts +28 -1
- package/dist/types/hooks/useFilteredList.d.ts +66 -5
- package/dist/types/hooks/usePagination.d.ts +19 -0
- package/dist/types/hooks/useSelectableList.d.ts +29 -0
- package/dist/types/json/JsonViewer.d.ts +27 -2
- package/dist/types/pagination/Pagination.d.ts +10 -1
- package/dist/types/table/ColumnFilters.d.ts +9 -0
- package/dist/types/table/HeaderCell.d.ts +1 -1
- package/dist/types/table/Table.d.ts +14 -1
- package/dist/types/table/types.d.ts +44 -5
- package/dist/types/table/useVirtualTable.d.ts +23 -9
- package/dist/types/tree/TreeNode.d.ts +1 -1
- package/dist/types/tree/TreePanel.d.ts +42 -1
- package/dist/types/tree/types.d.ts +65 -19
- package/dist/types/tree/useTree.d.ts +9 -10
- package/dist/types/tree/utils.d.ts +10 -3
- package/dist/types/virtual/Gallery.d.ts +42 -3
- package/dist/types/virtual/List.d.ts +42 -3
- package/package.json +16 -14
- package/src/checklist/CheckList.tsx +22 -0
- package/src/histogram/Histogram.tsx +40 -10
- package/src/hooks/useFilteredList.tsx +109 -9
- package/src/hooks/usePagination.tsx +32 -7
- package/src/hooks/useSelectableList.ts +29 -0
- package/src/i18n/ar.json +5 -0
- package/src/i18n/en.json +5 -0
- package/src/json/JsonViewer.tsx +71 -35
- package/src/pagination/Pagination.tsx +10 -0
- package/src/table/AddColumn.tsx +1 -1
- package/src/table/BodyCell.tsx +6 -4
- package/src/table/BodyRow.tsx +3 -2
- package/src/table/CheckboxCell.tsx +1 -1
- package/src/table/ColumnFilters.tsx +105 -0
- package/src/table/HeaderCell.tsx +72 -18
- package/src/table/Table.tsx +99 -11
- package/src/table/types.ts +46 -8
- package/src/table/useResizer.ts +5 -3
- package/src/table/useVirtualTable.ts +158 -27
- package/src/tree/TreeNode.tsx +98 -58
- package/src/tree/TreePanel.tsx +77 -6
- package/src/tree/types.ts +73 -18
- package/src/tree/useTree.ts +220 -44
- package/src/tree/utils.ts +58 -20
- package/src/virtual/Gallery.tsx +118 -54
- package/src/virtual/List.tsx +99 -39
- package/src/virtual/Scroller.tsx +16 -8
- package/dist/cjs/histogram/Histogram.module.css +0 -1
- package/dist/esm/histogram/Histogram.module.css +0 -1
|
@@ -1,49 +1,85 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
4
5
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
6
|
+
var utilities = require('@react-fabric/utilities');
|
|
5
7
|
var reactVirtual = require('@tanstack/react-virtual');
|
|
6
8
|
var react = require('react');
|
|
7
9
|
|
|
8
10
|
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; }
|
|
9
11
|
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; }
|
|
10
|
-
var useVirtualTable = function useVirtualTable(data,
|
|
12
|
+
var useVirtualTable = function useVirtualTable(data, options) {
|
|
11
13
|
var _virtualizer$range;
|
|
12
14
|
// TODO: refactor data into item list, apply grouping if groupColumn provided
|
|
13
15
|
// TODO: when grouping maintain map of group with children, {___GROUP___:true, label, items, open}
|
|
14
16
|
|
|
15
|
-
var scrollerRef = react.useRef(null);
|
|
16
|
-
var virtualizer = reactVirtual.useVirtualizer({
|
|
17
|
-
count: data.length,
|
|
18
|
-
getScrollElement: function getScrollElement() {
|
|
19
|
-
return scrollerRef.current;
|
|
20
|
-
},
|
|
21
|
-
estimateSize: function estimateSize() {
|
|
22
|
-
return 24;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
17
|
var _useReducer = react.useReducer(function (state, action) {
|
|
18
|
+
if (action.type === "updateState") {
|
|
19
|
+
state.checked = action.checked;
|
|
20
|
+
}
|
|
26
21
|
if (action.type === "expand") {
|
|
27
22
|
if (state.expanded.includes(action.key)) state.expanded.splice(state.expanded.indexOf(action.key), 1);else state.expanded.push(action.key);
|
|
28
23
|
}
|
|
29
24
|
if (action.type === "check") {
|
|
25
|
+
var _options$onCheckChang;
|
|
30
26
|
if (state.checked.includes(action.key)) state.checked.splice(state.checked.indexOf(action.key), 1);else state.checked.push(action.key);
|
|
31
|
-
onCheckChanged === null ||
|
|
27
|
+
(_options$onCheckChang = options.onCheckChanged) === null || _options$onCheckChang === void 0 || _options$onCheckChang.call(options, state.checked);
|
|
32
28
|
}
|
|
33
29
|
if (action.type === "checkall") {
|
|
30
|
+
var _options$onCheckChang2;
|
|
34
31
|
if (state.allChecked !== 0) {
|
|
35
32
|
state.checked = [];
|
|
36
|
-
} else if (keyProperty) {
|
|
37
|
-
state.checked = data.map(function (item) {
|
|
38
|
-
return item[keyProperty];
|
|
33
|
+
} else if (options.keyProperty) {
|
|
34
|
+
state.checked = state.data.map(function (item) {
|
|
35
|
+
return item[options.keyProperty];
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
(_options$onCheckChang2 = options.onCheckChanged) === null || _options$onCheckChang2 === void 0 || _options$onCheckChang2.call(options, state.checked);
|
|
39
|
+
}
|
|
40
|
+
var checkList = state.data.filter(function (hit) {
|
|
41
|
+
return state.checked.includes(hit[options.keyProperty]);
|
|
42
|
+
});
|
|
43
|
+
if (action.type === "groupExpand") {
|
|
44
|
+
var group = state.groups.find(function (group) {
|
|
45
|
+
return group.key === action.key;
|
|
46
|
+
});
|
|
47
|
+
if (group) {
|
|
48
|
+
group.open = !group.open;
|
|
49
|
+
state.groups = state.groups.slice();
|
|
50
|
+
state.items = state.groups.map(function (group) {
|
|
51
|
+
return [group, group.open ? state.grouped[group.key] : undefined];
|
|
52
|
+
}).flat(2).filter(Boolean);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (action.type === "reset") {
|
|
56
|
+
state.data = action.data;
|
|
57
|
+
if (action.key) {
|
|
58
|
+
state.grouped = utilities.groupBy(state.data, action.key);
|
|
59
|
+
state.groups = Object.keys(state.grouped).sort(utilities.compareValues("asc")).map(function (group) {
|
|
60
|
+
return {
|
|
61
|
+
__GROUP__: true,
|
|
62
|
+
open: true,
|
|
63
|
+
key: group,
|
|
64
|
+
items: state.grouped[group],
|
|
65
|
+
itemCount: state.grouped[group].length
|
|
66
|
+
};
|
|
39
67
|
});
|
|
68
|
+
state.items = state.groups.map(function (group) {
|
|
69
|
+
return [group].concat(_toConsumableArray(state.grouped[group.key]));
|
|
70
|
+
}).flat();
|
|
71
|
+
} else {
|
|
72
|
+
state.items = state.data;
|
|
40
73
|
}
|
|
41
|
-
onCheckChanged === null || onCheckChanged === void 0 || onCheckChanged(state.checked);
|
|
42
74
|
}
|
|
43
75
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
44
|
-
allChecked:
|
|
76
|
+
allChecked: checkList.length === state.data.length ? 1 : state.checked.length ? 2 : 0
|
|
45
77
|
});
|
|
46
78
|
}, {
|
|
79
|
+
data: data,
|
|
80
|
+
items: [],
|
|
81
|
+
grouped: {},
|
|
82
|
+
groups: [],
|
|
47
83
|
checked: [],
|
|
48
84
|
expanded: [],
|
|
49
85
|
allChecked: 0
|
|
@@ -51,19 +87,91 @@ var useVirtualTable = function useVirtualTable(data, keyProperty, onCheckChanged
|
|
|
51
87
|
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
52
88
|
state = _useReducer2[0],
|
|
53
89
|
dispatch = _useReducer2[1];
|
|
90
|
+
var activeStickyIndexRef = react.useRef(0);
|
|
91
|
+
var stickyIndexes = react.useMemo(function () {
|
|
92
|
+
return state.items.map(function (hit, idx) {
|
|
93
|
+
return "__GROUP__" in hit ? idx : undefined;
|
|
94
|
+
}).filter(Boolean);
|
|
95
|
+
}, [state.items]);
|
|
96
|
+
var isActiveSticky = function isActiveSticky(index) {
|
|
97
|
+
return activeStickyIndexRef.current === index;
|
|
98
|
+
};
|
|
99
|
+
var _useState = react.useState(false),
|
|
100
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
101
|
+
hasActiveSticky = _useState2[0],
|
|
102
|
+
setHasActiveSticky = _useState2[1];
|
|
103
|
+
var scrollerRef = react.useRef(null);
|
|
104
|
+
var virtualizer = reactVirtual.useVirtualizer({
|
|
105
|
+
count: state.items.length,
|
|
106
|
+
getScrollElement: function getScrollElement() {
|
|
107
|
+
return scrollerRef.current;
|
|
108
|
+
},
|
|
109
|
+
estimateSize: function estimateSize() {
|
|
110
|
+
return 32;
|
|
111
|
+
},
|
|
112
|
+
rangeExtractor: react.useCallback(function (range) {
|
|
113
|
+
var _reverse$find;
|
|
114
|
+
activeStickyIndexRef.current = (_reverse$find = _toConsumableArray(stickyIndexes).reverse().find(function (index) {
|
|
115
|
+
return range.startIndex > index;
|
|
116
|
+
})) !== null && _reverse$find !== void 0 ? _reverse$find : 0;
|
|
117
|
+
setHasActiveSticky(range.startIndex !== activeStickyIndexRef.current);
|
|
118
|
+
var next = new Set([activeStickyIndexRef.current].concat(_toConsumableArray(reactVirtual.defaultRangeExtractor(range))));
|
|
119
|
+
return _toConsumableArray(next);
|
|
120
|
+
}, [stickyIndexes])
|
|
121
|
+
});
|
|
54
122
|
var virtualItems = virtualizer.getVirtualItems();
|
|
55
123
|
var getData = react.useCallback(function (index) {
|
|
56
|
-
return
|
|
57
|
-
}, [
|
|
124
|
+
return state.items[index];
|
|
125
|
+
}, [state.items]);
|
|
126
|
+
react.useEffect(function () {
|
|
127
|
+
dispatch({
|
|
128
|
+
type: "reset",
|
|
129
|
+
key: options.groupProperty,
|
|
130
|
+
data: data
|
|
131
|
+
});
|
|
132
|
+
}, [data, options.groupProperty]);
|
|
133
|
+
react.useEffect(function () {
|
|
134
|
+
var _options$checked;
|
|
135
|
+
dispatch({
|
|
136
|
+
type: "updateState",
|
|
137
|
+
checked: (_options$checked = options.checked) !== null && _options$checked !== void 0 ? _options$checked : []
|
|
138
|
+
});
|
|
139
|
+
}, [options.checked]);
|
|
140
|
+
react.useEffect(function () {
|
|
141
|
+
if (options.onLoadMore) {
|
|
142
|
+
var _virtualItems$, _virtualItems$slice$p;
|
|
143
|
+
var firstItem = (_virtualItems$ = virtualItems[0]) === null || _virtualItems$ === void 0 ? void 0 : _virtualItems$.index;
|
|
144
|
+
var lastItem = virtualItems === null || virtualItems === void 0 || (_virtualItems$slice$p = virtualItems.slice(-1).pop()) === null || _virtualItems$slice$p === void 0 ? void 0 : _virtualItems$slice$p.index;
|
|
145
|
+
var canLoadPrevPage = firstItem !== undefined && state.items[firstItem] === null;
|
|
146
|
+
var canLoadNextPage = lastItem !== undefined && lastItem === state.items.length - 1 && state.items.length < options.total;
|
|
147
|
+
var db = utilities.debounce(options.onLoadMore);
|
|
148
|
+
if (canLoadPrevPage) {
|
|
149
|
+
db(firstItem);
|
|
150
|
+
} else if (!options.loading && canLoadNextPage) {
|
|
151
|
+
db(lastItem + 1);
|
|
152
|
+
}
|
|
153
|
+
return function () {
|
|
154
|
+
return db.cancel();
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}, [options.onLoadMore, virtualItems]);
|
|
58
158
|
return {
|
|
59
159
|
scrollerRef: scrollerRef,
|
|
60
160
|
items: virtualItems,
|
|
61
161
|
checkState: state,
|
|
62
162
|
getData: getData,
|
|
63
163
|
virtualizer: virtualizer,
|
|
164
|
+
hasActiveSticky: hasActiveSticky,
|
|
165
|
+
isActiveSticky: isActiveSticky,
|
|
64
166
|
top: (_virtualizer$range = virtualizer.range) === null || _virtualizer$range === void 0 ? void 0 : _virtualizer$range.startIndex,
|
|
65
167
|
totalSize: virtualizer.getTotalSize,
|
|
66
168
|
measureElement: virtualizer.measureElement,
|
|
169
|
+
toggleGroupExpand: function toggleGroupExpand(key) {
|
|
170
|
+
return dispatch({
|
|
171
|
+
type: "groupExpand",
|
|
172
|
+
key: key
|
|
173
|
+
});
|
|
174
|
+
},
|
|
67
175
|
toggleExpand: function toggleExpand(key) {
|
|
68
176
|
return dispatch({
|
|
69
177
|
type: "expand",
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var core = require('@react-fabric/core');
|
|
5
|
+
var utilities = require('@react-fabric/utilities');
|
|
5
6
|
var classNames = require('classnames');
|
|
6
7
|
var react = require('react');
|
|
8
|
+
var reactI18next = require('react-i18next');
|
|
7
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
10
|
|
|
9
11
|
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; }
|
|
@@ -17,32 +19,42 @@ var TreeNode = function TreeNode(_ref) {
|
|
|
17
19
|
defaultLeafIcon = _ref.defaultLeafIcon,
|
|
18
20
|
defaultNodeIcon = _ref.defaultNodeIcon,
|
|
19
21
|
onToggle = _ref.onToggle,
|
|
22
|
+
onClick = _ref.onClick,
|
|
20
23
|
onSelect = _ref.onSelect,
|
|
21
24
|
onChecked = _ref.onChecked,
|
|
22
|
-
children = _ref.children
|
|
25
|
+
children = _ref.children,
|
|
26
|
+
leafClassName = _ref.leafClassName,
|
|
27
|
+
nodeClassName = _ref.nodeClassName;
|
|
28
|
+
var _useTranslation = reactI18next.useTranslation("data"),
|
|
29
|
+
t = _useTranslation.t;
|
|
23
30
|
var badgeProps = react.useMemo(function () {
|
|
24
31
|
return core.getBadgeProps(node.badge);
|
|
25
32
|
}, [node.badge]);
|
|
26
33
|
var filler = react.useMemo(function () {
|
|
27
|
-
return node.lines.slice(
|
|
28
|
-
return /*#__PURE__*/jsxRuntime.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
return node.lines.slice(1).map(function (line, idx) {
|
|
35
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
36
|
+
className: classNames("flex-initial self-stretch flex items-center w-6 relative", !noLines && line > 0 && "before:absolute before:top-0 before:start-[7px] before:bg-tint-200 before:min-h-[50%] before:w-0.5 before:scale-x-[.625]", !noLines && line !== 2 && "before:h-full"),
|
|
37
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("svg", {
|
|
38
|
+
viewBox: "0 0 24 24",
|
|
39
|
+
className: "fill-tint-200 rtl:-scale-x-100",
|
|
40
|
+
children: [line === 0 && /*#__PURE__*/jsxRuntime.jsx("path", {
|
|
41
|
+
d: ""
|
|
42
|
+
}), !noLines && line === 1 && /*#__PURE__*/jsxRuntime.jsx("path", {
|
|
43
|
+
d: "M7.45 26.1v-28.2h1.1v28.2h-1.1z"
|
|
44
|
+
}), !noLines && line === 2 && /*#__PURE__*/jsxRuntime.jsx("path", {
|
|
45
|
+
d: "M14.989 12.389l0.161-0.389-0.161-0.389-0.389-0.161h-6.050v-13.55h-1.1v14.1l0.161 0.389 0.389 0.161h6.6z"
|
|
46
|
+
}), !noLines && line === 3 && /*#__PURE__*/jsxRuntime.jsx("path", {
|
|
47
|
+
d: "M8.55 12.55h6.050l0.389-0.161 0.161-0.389-0.161-0.389-0.389-0.161h-6.050v-13.55h-1.1v28.2h1.1z"
|
|
48
|
+
})]
|
|
49
|
+
})
|
|
40
50
|
}, idx);
|
|
41
51
|
});
|
|
42
52
|
}, [noLines, node.lines]);
|
|
43
53
|
var nodeIcon = react.useMemo(function () {
|
|
44
54
|
if (node.icon) return node.icon;
|
|
45
|
-
return
|
|
55
|
+
return {
|
|
56
|
+
icon: node.leaf ? defaultLeafIcon : defaultNodeIcon
|
|
57
|
+
};
|
|
46
58
|
}, [defaultLeafIcon, defaultNodeIcon, node.icon]);
|
|
47
59
|
var canCheck = react.useMemo(function () {
|
|
48
60
|
return checkable === true || checkable === "leafOnly" && node.leaf;
|
|
@@ -53,10 +65,17 @@ var TreeNode = function TreeNode(_ref) {
|
|
|
53
65
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54
66
|
role: "treeitem",
|
|
55
67
|
"aria-selected": node.selected,
|
|
56
|
-
className: "flex flex-nowrap",
|
|
68
|
+
className: classNames("flex flex-nowrap items-center"),
|
|
57
69
|
"data-testid": node["data-testid"],
|
|
58
70
|
"data-test-value": node["data-test-value"],
|
|
59
|
-
|
|
71
|
+
"data-id": node.id,
|
|
72
|
+
children: [filler, node.loading && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
73
|
+
className: "flex-initial w-6",
|
|
74
|
+
children: /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
75
|
+
icon: core.CoreIcons.spinner,
|
|
76
|
+
className: "animate-spin text-muted"
|
|
77
|
+
})
|
|
78
|
+
}), !node.leaf && !node.childFiltered && !node.loading && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
60
79
|
className: "flex-initial w-6",
|
|
61
80
|
children: /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
62
81
|
rtlFlip: true,
|
|
@@ -75,21 +94,17 @@ var TreeNode = function TreeNode(_ref) {
|
|
|
75
94
|
icon: node.checked === 2 ? core.CoreIcons.checkboxInt : node.checked === 1 ? core.CoreIcons.checkboxOn : core.CoreIcons.checkboxOff,
|
|
76
95
|
className: classNames(node.disabled ? "text-muted" : "text-primary-500 hover:text-primary-600")
|
|
77
96
|
})
|
|
78
|
-
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
97
|
+
}), !node.empty && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
79
98
|
role: "none",
|
|
80
|
-
className: classNames("group data-
|
|
99
|
+
className: classNames("group/tool data-selected:bg-primary-100 flex flex-nowrap flex-1 overflow-hidden select-none", node.childSelected && "font-medium", node.disabled && "text-muted opacity-65", node.className, node.leaf ? leafClassName : nodeClassName, !node.disabled && (canSelect || onClick) && "hover:bg-primary-50 cursor-pointer"),
|
|
81
100
|
"data-selected": node.selected,
|
|
82
|
-
onClick: function
|
|
83
|
-
|
|
101
|
+
onClick: node.disabled ? undefined : function (e) {
|
|
102
|
+
onClick === null || onClick === void 0 || onClick(node.id, node.data);
|
|
103
|
+
canSelect ? onSelect(node.id, e.shiftKey) : canCheck ? onChecked(node.id) : onToggle(node.id);
|
|
84
104
|
},
|
|
85
|
-
children: [nodeIcon && /*#__PURE__*/jsxRuntime.
|
|
86
|
-
className: "flex-content w-6",
|
|
87
|
-
children: /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
88
|
-
icon: nodeIcon,
|
|
89
|
-
bg: node.iconBg,
|
|
90
|
-
color: node.iconColor,
|
|
91
|
-
rtlFlip: node.rtlFlip
|
|
92
|
-
})
|
|
105
|
+
children: [nodeIcon && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
106
|
+
className: "flex-content max-w-6 me-1 self-center leading-none",
|
|
107
|
+
children: [/*#__PURE__*/react.isValidElement(nodeIcon) && nodeIcon, utilities.isString(nodeIcon) && /*#__PURE__*/jsxRuntime.jsx(core.Icon, _objectSpread({}, core.getIconProps(nodeIcon)))]
|
|
93
108
|
}), node.childSelected && !node.open && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
94
109
|
className: " flex-content text-primary-500",
|
|
95
110
|
children: "\u2022"
|
|
@@ -97,9 +112,12 @@ var TreeNode = function TreeNode(_ref) {
|
|
|
97
112
|
role: "none",
|
|
98
113
|
className: "flex-1 truncate",
|
|
99
114
|
children: children
|
|
100
|
-
}), node.badge && /*#__PURE__*/jsxRuntime.jsx(core.Badge, _objectSpread(_objectSpread({}, badgeProps), {}, {
|
|
115
|
+
}), !utilities.isEmpty(node.badge) && /*#__PURE__*/jsxRuntime.jsx(core.Badge, _objectSpread(_objectSpread({}, badgeProps), {}, {
|
|
101
116
|
className: classNames("me-1 self-center flex-content bg-opacity-50", badgeProps.className)
|
|
102
117
|
}))]
|
|
118
|
+
}), node.empty && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
119
|
+
className: "text-muted text-sm select-none",
|
|
120
|
+
children: t("tree.noItems")
|
|
103
121
|
})]
|
|
104
122
|
});
|
|
105
123
|
};
|
|
@@ -11,7 +11,7 @@ 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 = ["ref", "items", "selected", "checked", "checkable", "noLines", "
|
|
14
|
+
var _excluded = ["ref", "items", "selected", "checked", "checkable", "noLines", "searchable", "selectable", "multiple", "matcher", "filterPlaceholder", "defaultLeafIcon", "defaultNodeIcon", "expander", "onChecked", "onLoad", "onQuery", "onSelect", "onClick", "sorter", "makeLabel", "makeIcon", "defaultExpanded", "onExpandToggle", "leafClassName", "nodeClassName"];
|
|
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) {
|
|
@@ -22,33 +22,51 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
22
22
|
checked = _ref.checked,
|
|
23
23
|
checkable = _ref.checkable,
|
|
24
24
|
noLines = _ref.noLines,
|
|
25
|
-
renderer = _ref.renderer,
|
|
26
25
|
searchable = _ref.searchable,
|
|
27
26
|
selectable = _ref.selectable,
|
|
27
|
+
multiple = _ref.multiple,
|
|
28
28
|
matcher = _ref.matcher,
|
|
29
29
|
filterPlaceholder = _ref.filterPlaceholder,
|
|
30
30
|
defaultLeafIcon = _ref.defaultLeafIcon,
|
|
31
31
|
defaultNodeIcon = _ref.defaultNodeIcon,
|
|
32
32
|
_ref$expander = _ref.expander,
|
|
33
33
|
expander = _ref$expander === void 0 ? "box" : _ref$expander,
|
|
34
|
-
onChecked = _ref.onChecked
|
|
35
|
-
_ref.onLoad
|
|
36
|
-
|
|
34
|
+
onChecked = _ref.onChecked,
|
|
35
|
+
onLoad = _ref.onLoad,
|
|
36
|
+
onQuery = _ref.onQuery,
|
|
37
|
+
onSelect = _ref.onSelect,
|
|
38
|
+
onClick = _ref.onClick,
|
|
39
|
+
sorter = _ref.sorter,
|
|
40
|
+
makeLabel = _ref.makeLabel,
|
|
41
|
+
makeIcon = _ref.makeIcon,
|
|
42
|
+
defaultExpanded = _ref.defaultExpanded,
|
|
43
|
+
onExpandToggle = _ref.onExpandToggle,
|
|
44
|
+
leafClassName = _ref.leafClassName,
|
|
45
|
+
nodeClassName = _ref.nodeClassName,
|
|
37
46
|
aria = _objectWithoutProperties(_ref, _excluded);
|
|
38
47
|
var _useTree = useTree.useTree({
|
|
39
48
|
items: items,
|
|
40
49
|
checked: checked,
|
|
41
50
|
selected: selected,
|
|
51
|
+
multiple: multiple,
|
|
42
52
|
matcher: matcher,
|
|
53
|
+
sorter: sorter,
|
|
54
|
+
onLoad: onLoad,
|
|
55
|
+
onQuery: onQuery,
|
|
43
56
|
onSelect: onSelect,
|
|
44
|
-
onChecked: onChecked
|
|
57
|
+
onChecked: onChecked,
|
|
58
|
+
defaultExpanded: defaultExpanded,
|
|
59
|
+
onExpandToggle: onExpandToggle
|
|
45
60
|
}),
|
|
46
61
|
tree = _useTree.tree,
|
|
62
|
+
query = _useTree.query,
|
|
63
|
+
currentSelected = _useTree.selected,
|
|
47
64
|
toggleExpand = _useTree.toggleExpand,
|
|
48
65
|
toggleCheck = _useTree.toggleCheck,
|
|
49
66
|
expandAll = _useTree.expandAll,
|
|
50
67
|
collapseAll = _useTree.collapseAll,
|
|
51
|
-
|
|
68
|
+
expandAndLoad = _useTree.expandAndLoad,
|
|
69
|
+
_select = _useTree.select,
|
|
52
70
|
expand = _useTree.expand,
|
|
53
71
|
onFilter = _useTree.onFilter;
|
|
54
72
|
var scrollerRef = react.useRef(null);
|
|
@@ -73,16 +91,28 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
73
91
|
open: function open(id) {
|
|
74
92
|
return expand(id);
|
|
75
93
|
},
|
|
94
|
+
openAndLoad: function openAndLoad(list) {
|
|
95
|
+
return expandAndLoad(list);
|
|
96
|
+
},
|
|
76
97
|
select: function select(id) {
|
|
77
|
-
return
|
|
98
|
+
return _select(id);
|
|
78
99
|
}
|
|
79
100
|
};
|
|
80
101
|
}, []);
|
|
102
|
+
react.useEffect(function () {
|
|
103
|
+
var index = tree.findIndex(function (n) {
|
|
104
|
+
return n.id === currentSelected;
|
|
105
|
+
});
|
|
106
|
+
virtualizer.scrollToIndex(index, {
|
|
107
|
+
align: "auto"
|
|
108
|
+
});
|
|
109
|
+
}, [currentSelected]);
|
|
81
110
|
return /*#__PURE__*/jsxRuntime.jsxs(core.Section, {
|
|
82
111
|
children: [/*#__PURE__*/jsxRuntime.jsxs(core.Header, {
|
|
83
112
|
flex: true,
|
|
84
113
|
className: "items-center p-px justify-end overflow-hidden border-b",
|
|
85
114
|
children: [searchable && /*#__PURE__*/jsxRuntime.jsx(form.Search, {
|
|
115
|
+
value: query,
|
|
86
116
|
onSearch: onFilter,
|
|
87
117
|
allowClear: true,
|
|
88
118
|
placeholder: filterPlaceholder,
|
|
@@ -120,6 +150,7 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
120
150
|
height: (_virtualItems$ = virtualItems[0]) === null || _virtualItems$ === void 0 ? void 0 : _virtualItems$.start
|
|
121
151
|
}
|
|
122
152
|
}), virtualItems.map(function (_ref2) {
|
|
153
|
+
var _makeIcon, _ref3;
|
|
123
154
|
var index = _ref2.index,
|
|
124
155
|
key = _ref2.key;
|
|
125
156
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
@@ -132,11 +163,14 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
132
163
|
checkable: checkable,
|
|
133
164
|
selectable: selectable,
|
|
134
165
|
defaultLeafIcon: defaultLeafIcon,
|
|
135
|
-
defaultNodeIcon: defaultNodeIcon,
|
|
166
|
+
defaultNodeIcon: (_makeIcon = makeIcon === null || makeIcon === void 0 ? void 0 : makeIcon(tree[index].data)) !== null && _makeIcon !== void 0 ? _makeIcon : defaultNodeIcon,
|
|
136
167
|
onToggle: toggleExpand,
|
|
137
168
|
onChecked: toggleCheck,
|
|
138
|
-
onSelect:
|
|
139
|
-
|
|
169
|
+
onSelect: _select,
|
|
170
|
+
onClick: onClick,
|
|
171
|
+
leafClassName: leafClassName,
|
|
172
|
+
nodeClassName: nodeClassName,
|
|
173
|
+
children: (_ref3 = tree[index].data && (makeLabel === null || makeLabel === void 0 ? void 0 : makeLabel(tree[index].data))) !== null && _ref3 !== void 0 ? _ref3 : tree[index].label
|
|
140
174
|
})
|
|
141
175
|
}, key);
|
|
142
176
|
})]
|